Hi,

attached is the fractional timeout patch I made ... its against the PHP_5_1 sources pulled from CVS this morning. It tries to cover all code that is found from a grep for "default_socket_timeout" and "tv.tv_sec".

Testing:
- I checked php.ini parsing (i.e. timeout set to 0.5) via phpinfo() .
- I tested the changes using my soapclient/server setup. Works via manual setup via ini_set() and via global setup in php.ini (fractional timeout is automatically propagated into the soap request).

A combination of:
   ini_set('default_connection_timeout',0.5);
   $client = new SoapClient("my.wsdl", array("connection_timeout"=>0.5));
will result in a deterministic return time of the call
   $result =  $client->myFunc();
within 500ms +/- 5ms during error conditions (i.e. soap func to slow or connection dead).

I am not sure what else to test right now ... but in particular, the changes I made to the FTP and IMAP code should get looked at for sanity (probably best by the maintainers).

Best regards
Andreas

diff -Naur php-src-orig/ext/curl/streams.c php-src/ext/curl/streams.c
--- php-src-orig/ext/curl/streams.c     2005-12-22 09:17:40.000000000 -0500
+++ php-src/ext/curl/streams.c  2005-12-22 10:56:12.000000000 -0500
@@ -156,8 +156,8 @@
                        curl_multi_fdset(curlstream->multi, 
&curlstream->readfds, &curlstream->writefds, &curlstream->excfds, 
&curlstream->maxfd);
 
                        /* if we are in blocking mode, set a timeout */
-                       tv.tv_usec = 0;
-                       tv.tv_sec = 15; /* TODO: allow this to be configured 
from the script */
+                       tv.tv_sec = floor(FG(default_socket_timeout));
+                       tv.tv_usec = (1000000.0 * (FG(default_socket_timeout) - 
floor(FG(default_socket_timeout))) );
 
                        /* wait for data */
                        switch (select(curlstream->maxfd + 1, 
&curlstream->readfds, &curlstream->writefds, &curlstream->excfds, &tv)) {
diff -Naur php-src-orig/ext/ftp/ftp.c php-src/ext/ftp/ftp.c
--- php-src-orig/ext/ftp/ftp.c  2005-12-22 09:17:40.000000000 -0500
+++ php-src/ext/ftp/ftp.c       2005-12-22 10:52:57.000000000 -0500
@@ -121,7 +121,7 @@
 /* {{{ ftp_open
  */
 ftpbuf_t*
-ftp_open(const char *host, short port, long timeout_sec TSRMLS_DC)
+ftp_open(const char *host, short port, double timeout_sec TSRMLS_DC)
 {
        ftpbuf_t                *ftp;
        socklen_t                size;
@@ -131,8 +131,8 @@
        /* alloc the ftp structure */
        ftp = ecalloc(1, sizeof(*ftp));
 
-       tv.tv_sec = timeout_sec;
-       tv.tv_usec = 0;
+       tv.tv_sec = floor(timeout_sec);
+       tv.tv_usec = (1000000.0 * (timeout_sec-floor(timeout_sec)) );
 
        ftp->fd = php_network_connect_socket_to_host(host,
                        (unsigned short) (port ? port : 21), SOCK_STREAM,
@@ -1229,7 +1229,7 @@
 
        size = len;
        while (size) {
-               n = php_pollfd_for_ms(s, POLLOUT, ftp->timeout_sec * 1000);
+               n = php_pollfd_for_ms(s, POLLOUT, ftp->timeout_sec * 1000.0);
 
                if (n < 1) {
 
@@ -1271,7 +1271,7 @@
 {
        int             n, nr_bytes;
 
-       n = php_pollfd_for_ms(s, PHP_POLLREADABLE, ftp->timeout_sec * 1000);
+       n = php_pollfd_for_ms(s, PHP_POLLREADABLE, ftp->timeout_sec * 1000.0);
        if (n < 1) {
 #if !defined(PHP_WIN32) && !(defined(NETWARE) && defined(USE_WINSOCK))
                if (n == 0) {
@@ -1344,7 +1344,7 @@
 {
        int             n;
 
-       n = php_pollfd_for_ms(s, PHP_POLLREADABLE, ftp->timeout_sec * 1000);
+       n = php_pollfd_for_ms(s, PHP_POLLREADABLE, ftp->timeout_sec * 1000.0);
        if (n < 1) {
 #if !defined(PHP_WIN32) && !(defined(NETWARE) && defined(USE_WINSOCK))
                if (n == 0) {
@@ -1398,8 +1398,8 @@
                /* connect */
                /* Win 95/98 seems not to like size > sizeof(sockaddr_in) */
                size = php_sockaddr_size(&ftp->pasvaddr);
-               tv.tv_sec = ftp->timeout_sec;
-               tv.tv_usec = 0;
+               tv.tv_sec = floor(ftp->timeout_sec);
+               tv.tv_usec = (1000000.0 * (ftp->timeout_sec - 
floor(ftp->timeout_sec)) );
                if (php_connect_nonb(fd, (struct sockaddr*) &ftp->pasvaddr, 
size, &tv) == -1) {
                        php_error_docref(NULL TSRMLS_CC, E_WARNING, 
"php_connect_nonb() failed: %s (%d)", strerror(errno), errno);
                        goto bail;
diff -Naur php-src-orig/ext/ftp/ftp.h php-src/ext/ftp/ftp.h
--- php-src-orig/ext/ftp/ftp.h  2005-12-22 09:17:40.000000000 -0500
+++ php-src/ext/ftp/ftp.h       2005-12-22 10:53:41.000000000 -0500
@@ -29,8 +29,8 @@
 #include <netinet/in.h>
 #endif
 
-#define        FTP_DEFAULT_TIMEOUT     90
-#define FTP_DEFAULT_AUTOSEEK 1
+#define        FTP_DEFAULT_TIMEOUT             90.0
+#define FTP_DEFAULT_AUTOSEEK           1
 #define PHP_FTP_FAILED                 0
 #define PHP_FTP_FINISHED               1
 #define PHP_FTP_MOREDATA               2
@@ -69,7 +69,7 @@
        ftptype_t       type;                   /* current transfer type */
        int             pasv;                   /* 0=off; 1=pasv; 2=ready */
        php_sockaddr_storage    pasvaddr;       /* passive mode address */
-       long    timeout_sec;    /* User configureable timeout (seconds) */
+       double  timeout_sec;    /* User configureable timeout (seconds) */
        int                     autoseek;       /* User configureable autoseek 
flag */
 
        int                             nb;             /* "nonblocking" 
transfer in progress */
@@ -93,7 +93,7 @@
 /* open a FTP connection, returns ftpbuf (NULL on error)
  * port is the ftp port in network byte order, or 0 for the default
  */
-ftpbuf_t*      ftp_open(const char *host, short port, long timeout_sec 
TSRMLS_DC);
+ftpbuf_t*      ftp_open(const char *host, short port, double timeout_sec 
TSRMLS_DC);
 
 /* quits from the ftp session (it still needs to be closed)
  * return true on success, false on error
diff -Naur php-src-orig/ext/ftp/php_ftp.c php-src/ext/ftp/php_ftp.c
--- php-src-orig/ext/ftp/php_ftp.c      2005-12-22 09:17:40.000000000 -0500
+++ php-src/ext/ftp/php_ftp.c   2005-12-22 10:49:30.000000000 -0500
@@ -123,7 +123,7 @@
        REGISTER_LONG_CONSTANT("FTP_BINARY", FTPTYPE_IMAGE, CONST_PERSISTENT | 
CONST_CS);
        REGISTER_LONG_CONSTANT("FTP_IMAGE",  FTPTYPE_IMAGE, CONST_PERSISTENT | 
CONST_CS);
        REGISTER_LONG_CONSTANT("FTP_AUTORESUME", PHP_FTP_AUTORESUME, 
CONST_PERSISTENT | CONST_CS);
-       REGISTER_LONG_CONSTANT("FTP_TIMEOUT_SEC", PHP_FTP_OPT_TIMEOUT_SEC, 
CONST_PERSISTENT | CONST_CS);
+       REGISTER_DOUBLE_CONSTANT("FTP_TIMEOUT_SEC", PHP_FTP_OPT_TIMEOUT_SEC, 
CONST_PERSISTENT | CONST_CS);
        REGISTER_LONG_CONSTANT("FTP_AUTOSEEK", PHP_FTP_OPT_AUTOSEEK, 
CONST_PERSISTENT | CONST_CS);
        REGISTER_LONG_CONSTANT("FTP_FAILED", PHP_FTP_FAILED, CONST_PERSISTENT | 
CONST_CS);
        REGISTER_LONG_CONSTANT("FTP_FINISHED", PHP_FTP_FINISHED, 
CONST_PERSISTENT | CONST_CS);
@@ -147,7 +147,7 @@
                                                        }
 
 
-/* {{{ proto resource ftp_connect(string host [, int port [, int timeout]])
+/* {{{ proto resource ftp_connect(string host [, int port [, double timeout]])
    Opens a FTP stream */
 PHP_FUNCTION(ftp_connect)
 {
@@ -155,14 +155,14 @@
        char            *host;
        int             host_len;
        long            port = 0;
-       long            timeout_sec = FTP_DEFAULT_TIMEOUT;
+       double          timeout_sec = FTP_DEFAULT_TIMEOUT;
 
-       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ll", &host, 
&host_len, &port, &timeout_sec) == FAILURE) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ld", &host, 
&host_len, &port, &timeout_sec) == FAILURE) {
                return;
        }
 
-       if (timeout_sec <= 0) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Timeout has to be 
greater than 0");
+       if (timeout_sec <= 0.0) {
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Timeout has to be 
greater than 0.0");
                RETURN_FALSE;
        }
 
@@ -183,7 +183,7 @@
 /* }}} */
 
 #if HAVE_OPENSSL_EXT
-/* {{{ proto resource ftp_ssl_connect(string host [, int port [, int timeout]])
+/* {{{ proto resource ftp_ssl_connect(string host [, int port [, double 
timeout]])
    Opens a FTP-SSL stream */
 PHP_FUNCTION(ftp_ssl_connect)
 {
@@ -191,9 +191,9 @@
        char            *host;
        int             host_len;
        long            port = 0;
-       long            timeout_sec = FTP_DEFAULT_TIMEOUT;
+       double          timeout_sec = FTP_DEFAULT_TIMEOUT;
 
-       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ll", &host, 
&host_len, &port, &timeout_sec) == FAILURE) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ld", &host, 
&host_len, &port, &timeout_sec) == FAILURE) {
                return;
        }
 
@@ -1184,16 +1184,16 @@
 
        switch (option) {
                case PHP_FTP_OPT_TIMEOUT_SEC:
-                       if (Z_TYPE_P(z_value) != IS_LONG) {
-                               php_error_docref(NULL TSRMLS_CC, E_WARNING, 
"Option TIMEOUT_SEC expects value of type long, %s given",
+                       if (Z_TYPE_P(z_value) != IS_DOUBLE) {
+                               php_error_docref(NULL TSRMLS_CC, E_WARNING, 
"Option TIMEOUT_SEC expects value of type double, %s given",
                                        zend_zval_type_name(z_value));
                                RETURN_FALSE;
                        }
-                       if (Z_LVAL_P(z_value) <= 0) {
-                               php_error_docref(NULL TSRMLS_CC, E_WARNING, 
"Timeout has to be greater than 0");
+                       if (Z_DVAL_P(z_value) <= 0.0) {
+                               php_error_docref(NULL TSRMLS_CC, E_WARNING, 
"Timeout has to be greater than 0.0");
                                RETURN_FALSE;
                        }
-                       ftp->timeout_sec = Z_LVAL_P(z_value);
+                       ftp->timeout_sec = Z_DVAL_P(z_value);
                        RETURN_TRUE;
                        break;
                case PHP_FTP_OPT_AUTOSEEK:
@@ -1229,7 +1229,7 @@
 
        switch (option) {
                case PHP_FTP_OPT_TIMEOUT_SEC:
-                       RETURN_LONG(ftp->timeout_sec);
+                       RETURN_DOUBLE(ftp->timeout_sec);
                        break;
                case PHP_FTP_OPT_AUTOSEEK:
                        RETURN_BOOL(ftp->autoseek);
diff -Naur php-src-orig/ext/imap/php_imap.c php-src/ext/imap/php_imap.c
--- php-src-orig/ext/imap/php_imap.c    2005-12-22 09:17:40.000000000 -0500
+++ php-src/ext/imap/php_imap.c 2005-12-22 11:02:59.000000000 -0500
@@ -426,7 +426,8 @@
 PHP_MINIT_FUNCTION(imap)
 {
        unsigned long sa_all =  SA_MESSAGES | SA_RECENT | SA_UNSEEN | 
SA_UIDNEXT | SA_UIDVALIDITY;
-
+       double timeout = FG(default_socket_timeout);
+       
        ZEND_INIT_MODULE_GLOBALS(imap, php_imap_init_globals, NULL)
 
 #ifndef PHP_WIN32
@@ -460,17 +461,17 @@
        /* lets allow NIL */
        REGISTER_LONG_CONSTANT("NIL", NIL, CONST_PERSISTENT | CONST_CS);
 
-       /* set default timeout values */
-       mail_parameters(NIL, SET_OPENTIMEOUT, (void *) 
FG(default_socket_timeout));
-       mail_parameters(NIL, SET_READTIMEOUT, (void *) 
FG(default_socket_timeout));
-       mail_parameters(NIL, SET_WRITETIMEOUT, (void *) 
FG(default_socket_timeout));
-       mail_parameters(NIL, SET_CLOSETIMEOUT, (void *) 
FG(default_socket_timeout));
+       /* set default timeout values - use only second part */
+       mail_parameters(NIL, SET_OPENTIMEOUT, (void *) timeout);
+       mail_parameters(NIL, SET_READTIMEOUT, (void *) timeout);
+       mail_parameters(NIL, SET_WRITETIMEOUT, (void *) timeout);
+       mail_parameters(NIL, SET_CLOSETIMEOUT, (void *) timeout);
 
        /* timeout constants */
-       REGISTER_LONG_CONSTANT("IMAP_OPENTIMEOUT", 1, CONST_PERSISTENT | 
CONST_CS);
-       REGISTER_LONG_CONSTANT("IMAP_READTIMEOUT", 2, CONST_PERSISTENT | 
CONST_CS);
-       REGISTER_LONG_CONSTANT("IMAP_WRITETIMEOUT", 3, CONST_PERSISTENT | 
CONST_CS);
-       REGISTER_LONG_CONSTANT("IMAP_CLOSETIMEOUT", 4, CONST_PERSISTENT | 
CONST_CS);
+       REGISTER_DOUBLE_CONSTANT("IMAP_OPENTIMEOUT", 1, CONST_PERSISTENT | 
CONST_CS);
+       REGISTER_DOUBLE_CONSTANT("IMAP_READTIMEOUT", 2, CONST_PERSISTENT | 
CONST_CS);
+       REGISTER_DOUBLE_CONSTANT("IMAP_WRITETIMEOUT", 3, CONST_PERSISTENT | 
CONST_CS);
+       REGISTER_DOUBLE_CONSTANT("IMAP_CLOSETIMEOUT", 4, CONST_PERSISTENT | 
CONST_CS);
 
        /* Open Options */
 
@@ -4089,18 +4090,19 @@
 }
 /* }}} */
 
-/* {{{ proto mixed imap_timeout(int timeout_type [, int timeout])
+/* {{{ proto mixed imap_timeout(int timeout_type [, double timeout])
    Set or fetch imap timeout */
 PHP_FUNCTION(imap_timeout)
 {
-       long ttype, timeout=-1;
+       long ttype;
+       double timeout = -1.0;
        int timeout_type;
 
-       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l|l", &ttype, 
&timeout) == FAILURE) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l|d", &ttype, 
&timeout) == FAILURE) {
                RETURN_FALSE;
        }
 
-       if (timeout == -1) {
+       if (timeout < 0.0) {
                switch (ttype) {
                        case 1:
                                timeout_type = GET_OPENTIMEOUT;
@@ -4119,9 +4121,9 @@
                                break;
                }
 
-               timeout = (long) mail_parameters(NIL, timeout_type, NIL);
-               RETURN_LONG(timeout);
-       } else if (timeout >= 0) {
+               timeout = (double) mail_parameters(NIL, timeout_type, NIL);
+               RETURN_DOUBLE(timeout);
+       } else if (timeout >= 0.0) {
                switch (ttype) {
                        case 1:
                                timeout_type = SET_OPENTIMEOUT;
@@ -4140,7 +4142,7 @@
                                break;
                }
 
-               timeout = (long) mail_parameters(NIL, timeout_type, (void *) 
timeout);
+               timeout = (double) mail_parameters(NIL, timeout_type, (void *) 
timeout);
                RETURN_TRUE;
        } else {
                RETURN_FALSE;
diff -Naur php-src-orig/ext/openssl/xp_ssl.c php-src/ext/openssl/xp_ssl.c
--- php-src-orig/ext/openssl/xp_ssl.c   2005-12-22 09:17:42.000000000 -0500
+++ php-src/ext/openssl/xp_ssl.c        2005-12-22 10:41:53.000000000 -0500
@@ -517,8 +517,8 @@
 
                                if (value == -1) {
                                        if (sslsock->s.timeout.tv_sec == -1) {
-                                               tv.tv_sec = 
FG(default_socket_timeout);
-                                               tv.tv_usec = 0;
+                                               tv.tv_sec = 
floor(FG(default_socket_timeout));
+                                               tv.tv_usec = (1000000.0 * 
(FG(default_socket_timeout) - floor(FG(default_socket_timeout))) );
                                        } else {
                                                tv = sslsock->s.timeout;
                                        }
@@ -678,8 +678,8 @@
        memset(sslsock, 0, sizeof(*sslsock));
 
        sslsock->s.is_blocked = 1;
-       sslsock->s.timeout.tv_sec = FG(default_socket_timeout);
-       sslsock->s.timeout.tv_usec = 0;
+       sslsock->s.timeout.tv_sec = floor(FG(default_socket_timeout));
+       sslsock->s.timeout.tv_usec = (1000000.0 * (FG(default_socket_timeout) - 
floor(FG(default_socket_timeout))) );
 
        /* we don't know the socket until we have determined if we are binding 
or
         * connecting */
diff -Naur php-src-orig/ext/soap/php_http.c php-src/ext/soap/php_http.c
--- php-src-orig/ext/soap/php_http.c    2005-12-22 09:17:40.000000000 -0500
+++ php-src/ext/soap/php_http.c 2005-12-22 09:37:18.000000000 -0500
@@ -129,11 +129,12 @@
                host = phpurl->host;
                port = phpurl->port;
        }
+
        if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_connection_timeout", 
sizeof("_connection_timeout"), (void **) &tmp) == SUCCESS &&
-           Z_TYPE_PP(tmp) == IS_LONG && Z_LVAL_PP(tmp) > 0) {
-         tv.tv_sec = Z_LVAL_PP(tmp);
-         tv.tv_usec = 0;
-               timeout = &tv;
+           Z_TYPE_PP(tmp) == IS_DOUBLE && Z_DVAL_PP(tmp) > 0.0) {
+         tv.tv_sec = floor(Z_DVAL_PP(tmp));
+         tv.tv_usec = (1000000.0*(Z_DVAL_PP(tmp)-floor(Z_DVAL_PP(tmp))));
+         timeout = &tv;
        }
 
        old_error_reporting = EG(error_reporting);
diff -Naur php-src-orig/ext/soap/soap.c php-src/ext/soap/soap.c
--- php-src-orig/ext/soap/soap.c        2005-12-22 09:17:41.000000000 -0500
+++ php-src/ext/soap/soap.c     2005-12-22 09:36:21.000000000 -0500
@@ -2190,8 +2190,8 @@
                }
 
                if (zend_hash_find(ht, "connection_timeout", 
sizeof("connection_timeout"), (void**)&tmp) == SUCCESS &&
-                   Z_TYPE_PP(tmp) == IS_LONG && Z_LVAL_PP(tmp) > 0) {
-                       add_property_long(this_ptr, "_connection_timeout", 
Z_LVAL_PP(tmp));
+                   Z_TYPE_PP(tmp) == IS_DOUBLE && Z_DVAL_PP(tmp) > 0.0) {
+                       add_property_double(this_ptr, "_connection_timeout", 
Z_DVAL_PP(tmp));
                }
 
                if (context) {
diff -Naur php-src-orig/ext/standard/file.c php-src/ext/standard/file.c
--- php-src-orig/ext/standard/file.c    2005-12-22 09:17:42.000000000 -0500
+++ php-src/ext/standard/file.c 2005-12-22 09:52:52.000000000 -0500
@@ -172,7 +172,7 @@
 
 PHP_INI_BEGIN()
        STD_PHP_INI_ENTRY("user_agent", NULL, PHP_INI_ALL, OnUpdateString, 
user_agent, php_file_globals, file_globals)
-       STD_PHP_INI_ENTRY("default_socket_timeout", "60", PHP_INI_ALL, 
OnUpdateLong, default_socket_timeout, php_file_globals, file_globals)
+       STD_PHP_INI_ENTRY("default_socket_timeout", "60.0", PHP_INI_ALL, 
OnUpdateReal, default_socket_timeout, php_file_globals, file_globals)
        STD_PHP_INI_ENTRY("auto_detect_line_endings", "0", PHP_INI_ALL, 
OnUpdateLong, auto_detect_line_endings, php_file_globals, file_globals)
 PHP_INI_END()
 
diff -Naur php-src-orig/ext/standard/file.h php-src/ext/standard/file.h
--- php-src-orig/ext/standard/file.h    2005-12-22 09:17:42.000000000 -0500
+++ php-src/ext/standard/file.h 2005-12-22 09:47:55.000000000 -0500
@@ -110,7 +110,7 @@
        int pclose_ret;
        size_t def_chunk_size;
        long auto_detect_line_endings;
-       long default_socket_timeout;
+       double default_socket_timeout;
        char *user_agent;
        char *user_stream_current_filename; /* for simple recursion protection 
*/
        php_stream_context *default_context;
diff -Naur php-src-orig/main/network.c php-src/main/network.c
--- php-src-orig/main/network.c 2005-12-22 09:17:43.000000000 -0500
+++ php-src/main/network.c      2005-12-22 09:41:34.000000000 -0500
@@ -983,8 +983,8 @@
        memset(sock, 0, sizeof(php_netstream_data_t));
 
        sock->is_blocked = 1;
-       sock->timeout.tv_sec = FG(default_socket_timeout);
-       sock->timeout.tv_usec = 0;
+       sock->timeout.tv_sec = floor(FG(default_socket_timeout));
+       sock->timeout.tv_usec = (1000000.0 * 
(FG(default_socket_timeout)-floor(FG(default_socket_timeout))) );
        sock->socket = socket;
 
        stream = php_stream_alloc_rel(&php_stream_generic_socket_ops, sock, 
persistent_id, "r+");
diff -Naur php-src-orig/main/streams/transports.c 
php-src/main/streams/transports.c
--- php-src-orig/main/streams/transports.c      2005-12-22 09:17:43.000000000 
-0500
+++ php-src/main/streams/transports.c   2005-12-22 10:42:52.000000000 -0500
@@ -64,7 +64,8 @@
        char *error_text = NULL;
        struct timeval default_timeout = { 0, 0 };
        
-       default_timeout.tv_sec = FG(default_socket_timeout);
+       default_timeout.tv_sec = floor(FG(default_socket_timeout));
+       default_timeout.tv_usec = (1000000.0 * (FG(default_socket_timeout) - 
floor(FG(default_socket_timeout))) );
 
        if (timeout == NULL) {
                timeout = &default_timeout;
diff -Naur php-src-orig/main/streams/xp_socket.c 
php-src/main/streams/xp_socket.c
--- php-src-orig/main/streams/xp_socket.c       2005-12-22 09:17:43.000000000 
-0500
+++ php-src/main/streams/xp_socket.c    2005-12-22 09:43:26.000000000 -0500
@@ -260,8 +260,8 @@
 
                                if (value == -1) {
                                        if (sock->timeout.tv_sec == -1) {
-                                               tv.tv_sec = 
FG(default_socket_timeout);
-                                               tv.tv_usec = 0;
+                                               tv.tv_sec = 
floor(FG(default_socket_timeout));
+                                               tv.tv_usec = (1000000.0 * 
(FG(default_socket_timeout)-floor(FG(default_socket_timeout))));
                                        } else {
                                                tv = sock->timeout;
                                        }
@@ -769,8 +769,8 @@
        memset(sock, 0, sizeof(php_netstream_data_t));
 
        sock->is_blocked = 1;
-       sock->timeout.tv_sec = FG(default_socket_timeout);
-       sock->timeout.tv_usec = 0;
+       sock->timeout.tv_sec = floor(FG(default_socket_timeout));
+       sock->timeout.tv_usec = (1000000.0 * 
(FG(default_socket_timeout)-floor(FG(default_socket_timeout))));
 
        /* we don't know the socket until we have determined if we are binding 
or
         * connecting */

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to