|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2012-06-14 22:03 UTC] langemeijer@php.net
-Status: Open
+Status: Closed
-Assigned To:
+Assigned To: langemeijer
[2012-06-14 22:03 UTC] langemeijer@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Nov 01 12:00:01 2025 UTC |
Description: ------------ We tried to compile this excellent pecl extension on Windows and we found a portability issue in the network code. The extension uses plain "close(socket)" function instead of "closesocket(socket)". There is no problem using closesocket on Unix, since PHP provides a define for this, which is used throughout PHP itself as well. I have attached a small patch for your consideration. Reproduce code: --------------- * rename close -> closesocket so it will work on Windows diff -up ssh2-0.11.0/ssh2.c.orig ssh2-0.11.0/ssh2.c --- ssh2-0.11.0/ssh2.c.orig 2008-12-02 21:50:10.000000000 +0100 +++ ssh2-0.11.0/ssh2.c 2009-08-31 10:23:27.000000000 +0200 @@ -358,7 +358,7 @@ LIBSSH2_SESSION *php_ssh2_session_connec if (!session) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to initialize SSH2 session"); efree(data); - close(socket); + closesocket(socket); return NULL; } libssh2_banner_set(session, LIBSSH2_SSH_DEFAULT_BANNER " PHP"); @@ -434,7 +434,7 @@ LIBSSH2_SESSION *php_ssh2_session_connec last_error = libssh2_session_last_error(session, &error_msg, NULL, 0); php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error starting up SSH connection(%d): %s", last_error, error_msg); - close(socket); + closesocket(socket); libssh2_session_free(session); efree(data); return NULL; @@ -1148,7 +1148,7 @@ static void php_ssh2_session_dtor(zend_r zval_ptr_dtor(&(*data)->disconnect_cb); } - close((*data)->socket); + closesocket((*data)->socket); efree(*data); *data = NULL;