]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-5.5' into PHP-5.6
authorDaniel Lowrey <rdlowrey@php.net>
Thu, 7 Aug 2014 16:07:55 +0000 (12:07 -0400)
committerDaniel Lowrey <rdlowrey@php.net>
Thu, 7 Aug 2014 16:07:55 +0000 (12:07 -0400)
* PHP-5.5:
  Bug #41631: Observe socket read timeouts in SSL streams

Conflicts:
ext/openssl/xp_ssl.c

1  2 
ext/openssl/xp_ssl.c

index 1eed2eb48549bfa7b5d8ef9f1ee6a4f875299878,7080a1c6b5a3932ac7a8620ee3c0676e96217650..45b3d61d0d086a369d948ac3b4eb266003bbe678
@@@ -1796,11 -203,41 +1796,42 @@@ static size_t php_openssl_sockop_write(
        
        return didwrite;
  }
 +/* }}} */
  
 -static size_t php_openssl_sockop_read(php_stream *stream, char *buf, size_t count TSRMLS_DC)
+ static void php_openssl_stream_wait_for_data(php_netstream_data_t *sock TSRMLS_DC)
+ {
+       int retval;
+       struct timeval *ptimeout;
+       if (sock->socket == -1) {
+               return;
+       }
+       
+       sock->timeout_event = 0;
+       if (sock->timeout.tv_sec == -1)
+               ptimeout = NULL;
+       else
+               ptimeout = &sock->timeout;
+       while(1) {
+               retval = php_pollfd_for(sock->socket, PHP_POLLREADABLE, ptimeout);
+               if (retval == 0)
+                       sock->timeout_event = 1;
+               if (retval >= 0)
+                       break;
+               if (php_socket_errno() != EINTR)
+                       break;
+       }
+ }
 +static size_t php_openssl_sockop_read(php_stream *stream, char *buf, size_t count TSRMLS_DC) /* {{{ */
  {
        php_openssl_netstream_data_t *sslsock = (php_openssl_netstream_data_t*)stream->abstract;
+       php_netstream_data_t *sock;
        int nr_bytes = 0;
  
        if (sslsock->ssl_active) {