[PECL-CVS] [pecl-networking-ssh2] master: Fixes #81 (#94)

[email protected] (Rasmus Lerdorf via GitHub) Sat, 4 Apr 2026 10:50:13 +0000
Newsgroups php.pecl.cvs
Message-ID <[email protected]>
Author: Rasmus Lerdorf (rlerdorf)
Committer: GitHub (web-flow)
Pusher: rlerdorf
Date: 2026-04-04T06:50:10-04:00

Commit: https://github.com/php/pecl-networking-ssh2/commit/9d78647bcab34c888037fd0534b6459ce1cb92e7
Raw diff: https://github.com/php/pecl-networking-ssh2/commit/9d78647bcab34c888037fd0534b6459ce1cb92e7.diff

Fixes #81 (#94)

Changed paths:
  M  ssh2_sftp.c


Diff:

diff --git a/ssh2_sftp.c b/ssh2_sftp.c
index 80353b4..f6caa48 100644
--- a/ssh2_sftp.c
+++ b/ssh2_sftp.c
@@ -152,8 +152,11 @@ static ssize_t php_ssh2_sftp_stream_read(php_stream *stream, char *buf, size_t c
 static int php_ssh2_sftp_stream_close(php_stream *stream, int close_handle)
 {
 	php_ssh2_sftp_handle_data *data = (php_ssh2_sftp_handle_data*)stream->abstract;
+	php_ssh2_sftp_data *sftp_data = (php_ssh2_sftp_data*)data->sftp_rsrc->ptr;
 
-	libssh2_sftp_close(data->handle);
+	if (sftp_data && sftp_data->session_rsrc->ptr != NULL) {
+		libssh2_sftp_close(data->handle);
+	}
 	zend_list_delete(data->sftp_rsrc);
 	efree(data);
 
@@ -319,8 +322,11 @@ static ssize_t php_ssh2_sftp_dirstream_read(php_stream *stream, char *buf, size_
 static int php_ssh2_sftp_dirstream_close(php_stream *stream, int close_handle)
 {
 	php_ssh2_sftp_handle_data *data = (php_ssh2_sftp_handle_data*)stream->abstract;
+	php_ssh2_sftp_data *sftp_data = (php_ssh2_sftp_data*)data->sftp_rsrc->ptr;
 
-	libssh2_sftp_close(data->handle);
+	if (sftp_data && sftp_data->session_rsrc->ptr != NULL) {
+		libssh2_sftp_close(data->handle);
+	}
 	zend_list_delete(data->sftp_rsrc);
 	efree(data);