mike Thu Nov 3 09:58:45 2005 EDT
Modified files: (Branch: PHP_4_4)
/php-src NEWS
/php-src/ext/sockets sockets.c
Log:
- fixed bug #34851 (SO_RECVTIMEO and SO_SNDTIMEO socket options expect integer
parameter on Windows)
http://cvs.php.net/diff.php/php-src/NEWS?r1=1.1247.2.920.2.67&r2=1.1247.2.920.2.68&ty=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.1247.2.920.2.67 php-src/NEWS:1.1247.2.920.2.68
--- php-src/NEWS:1.1247.2.920.2.67 Wed Nov 2 12:58:02 2005
+++ php-src/NEWS Thu Nov 3 09:58:38 2005
@@ -6,6 +6,8 @@
- Fixed bug #35059 (Apache2 crash with mod_rewrite). (Ilia)
- Fixed bug #34996 (ImageTrueColorToPalette() crashes when ncolors is
zero). (Tony)
+- Fixed bug #34851 (SO_RECVTIMEO and SO_SNDTIMEO socket options expect integer
+ parameter on Windows). (Mike)
- Fixed bug #33760 (cURL needs to implement CRYPTO_callback functions to
prevent
locking). (Mike)
http://cvs.php.net/diff.php/php-src/ext/sockets/sockets.c?r1=1.125.2.29&r2=1.125.2.29.2.1&ty=u
Index: php-src/ext/sockets/sockets.c
diff -u php-src/ext/sockets/sockets.c:1.125.2.29
php-src/ext/sockets/sockets.c:1.125.2.29.2.1
--- php-src/ext/sockets/sockets.c:1.125.2.29 Thu May 12 12:27:21 2005
+++ php-src/ext/sockets/sockets.c Thu Nov 3 09:58:43 2005
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sockets.c,v 1.125.2.29 2005/05/12 16:27:21 tony2001 Exp $ */
+/* $Id: sockets.c,v 1.125.2.29.2.1 2005/11/03 14:58:43 mike Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -1842,6 +1842,7 @@
zval *arg1;
struct linger linger_val;
struct timeval tv;
+ int timeout = 0;
socklen_t optlen;
php_socket *php_sock;
int other_val;
@@ -1871,12 +1872,24 @@
break;
case SO_RCVTIMEO:
case SO_SNDTIMEO:
+#ifndef PHP_WIN32
optlen = sizeof(tv);
if (getsockopt(php_sock->bsd_socket, level, optname,
(char*)&tv, &optlen) != 0) {
PHP_SOCKET_ERROR(php_sock, "unable to retrieve
socket option", errno);
RETURN_FALSE;
}
+#else
+ optlen = sizeof(int);
+
+ if (getsockopt(php_sock->bsd_socket, level, optname,
(char*)&timeout, &optlen) != 0) {
+ PHP_SOCKET_ERROR(php_sock, "unable to retrieve
socket option", errno);
+ RETURN_FALSE;
+ }
+
+ tv.tv_sec = timeout ? timeout / 1000 : 0;
+ tv.tv_usec = timeout ? (timeout * 1000) % 1000000 : 0;
+#endif
if (array_init(return_value) == FAILURE) {
RETURN_FALSE;
@@ -1908,7 +1921,7 @@
struct linger lv;
struct timeval tv;
php_socket *php_sock;
- int ov, optlen, retval;
+ int ov, optlen, retval, timeout;
long level, optname;
void *opt_ptr;
@@ -1968,11 +1981,16 @@
convert_to_long_ex(sec);
convert_to_long_ex(usec);
+#ifndef PHP_WIN32
tv.tv_sec = Z_LVAL_PP(sec);
tv.tv_usec = Z_LVAL_PP(usec);
-
optlen = sizeof(tv);
opt_ptr = &tv;
+#else
+ timeout = Z_LVAL_PP(sec) * 1000 + Z_LVAL_PP(usec) /
1000;
+ optlen = sizeof(int);
+ opt_ptr = &timeout;
+#endif
break;
default:
convert_to_long_ex(&arg4);
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php