@@ -1897,6 +1897,15 @@ static int php_openssl_capture_peer_certs(php_stream *stream,
1897
1897
}
1898
1898
/* }}} */
1899
1899
1900
+ static zend_result php_openssl_set_blocking (php_openssl_netstream_data_t * sslsock , int block )
1901
+ {
1902
+ zend_result result = php_set_sock_blocking (sslsock -> s .socket , block );
1903
+ if (EXPECTED (SUCCESS == result )) {
1904
+ sslsock -> s .is_blocked = block ;
1905
+ }
1906
+ return result ;
1907
+ }
1908
+
1900
1909
static int php_openssl_enable_crypto (php_stream * stream ,
1901
1910
php_openssl_netstream_data_t * sslsock ,
1902
1911
php_stream_xport_crypto_param * cparam ) /* {{{ */
@@ -1925,8 +1934,7 @@ static int php_openssl_enable_crypto(php_stream *stream,
1925
1934
sslsock -> state_set = 1 ;
1926
1935
}
1927
1936
1928
- if (SUCCESS == php_set_sock_blocking (sslsock -> s .socket , 0 )) {
1929
- sslsock -> s .is_blocked = 0 ;
1937
+ if (SUCCESS == php_openssl_set_blocking (sslsock , 0 )) {
1930
1938
/* The following mode are added only if we are able to change socket
1931
1939
* to non blocking mode which is also used for read and write */
1932
1940
SSL_set_mode (sslsock -> ssl_handle , SSL_MODE_ENABLE_PARTIAL_WRITE | SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER );
@@ -1979,8 +1987,8 @@ static int php_openssl_enable_crypto(php_stream *stream,
1979
1987
}
1980
1988
} while (retry );
1981
1989
1982
- if (sslsock -> s .is_blocked != blocked && SUCCESS == php_set_sock_blocking ( sslsock -> s . socket , blocked ) ) {
1983
- sslsock -> s . is_blocked = blocked ;
1990
+ if (sslsock -> s .is_blocked != blocked ) {
1991
+ php_openssl_set_blocking ( sslsock , blocked ) ;
1984
1992
}
1985
1993
1986
1994
if (n == 1 ) {
@@ -2063,8 +2071,8 @@ static ssize_t php_openssl_sockop_io(int read, php_stream *stream, char *buf, si
2063
2071
timeout = & sslsock -> s .timeout ;
2064
2072
}
2065
2073
2066
- if (timeout && php_set_sock_blocking ( sslsock -> s . socket , 0 ) == SUCCESS ) {
2067
- sslsock -> s . is_blocked = 0 ;
2074
+ if (timeout ) {
2075
+ php_openssl_set_blocking ( sslsock , 0 ) ;
2068
2076
}
2069
2077
2070
2078
if (!sslsock -> s .is_blocked && timeout && (timeout -> tv_sec > 0 || (timeout -> tv_sec == 0 && timeout -> tv_usec ))) {
@@ -2088,8 +2096,7 @@ static ssize_t php_openssl_sockop_io(int read, php_stream *stream, char *buf, si
2088
2096
if (php_openssl_compare_timeval (elapsed_time , * timeout ) > 0 ) {
2089
2097
/* If the socket was originally blocking, set it back. */
2090
2098
if (began_blocked ) {
2091
- php_set_sock_blocking (sslsock -> s .socket , 1 );
2092
- sslsock -> s .is_blocked = 1 ;
2099
+ php_openssl_set_blocking (sslsock , 1 );
2093
2100
}
2094
2101
sslsock -> s .timeout_event = 1 ;
2095
2102
return -1 ;
@@ -2184,8 +2191,8 @@ static ssize_t php_openssl_sockop_io(int read, php_stream *stream, char *buf, si
2184
2191
}
2185
2192
2186
2193
/* And if we were originally supposed to be blocking, let's reset the socket to that. */
2187
- if (began_blocked && php_set_sock_blocking ( sslsock -> s . socket , 1 ) == SUCCESS ) {
2188
- sslsock -> s . is_blocked = 1 ;
2194
+ if (began_blocked ) {
2195
+ php_openssl_set_blocking ( sslsock , 1 ) ;
2189
2196
}
2190
2197
2191
2198
return 0 > nr_bytes ? 0 : nr_bytes ;
@@ -2491,8 +2498,8 @@ static int php_openssl_sockop_set_option(php_stream *stream, int option, int val
2491
2498
timeout = & tv ;
2492
2499
}
2493
2500
2494
- if (timeout && php_set_sock_blocking ( sslsock -> s . socket , 0 ) == SUCCESS ) {
2495
- sslsock -> s . is_blocked = 0 ;
2501
+ if (timeout ) {
2502
+ php_openssl_set_blocking ( sslsock , 0 ) ;
2496
2503
}
2497
2504
2498
2505
if (!sslsock -> s .is_blocked && timeout && (timeout -> tv_sec > 0 || (timeout -> tv_sec == 0 && timeout -> tv_usec ))) {
@@ -2516,8 +2523,7 @@ static int php_openssl_sockop_set_option(php_stream *stream, int option, int val
2516
2523
if (php_openssl_compare_timeval (elapsed_time , * timeout ) > 0 ) {
2517
2524
/* If the socket was originally blocking, set it back. */
2518
2525
if (began_blocked ) {
2519
- php_set_sock_blocking (sslsock -> s .socket , 1 );
2520
- sslsock -> s .is_blocked = 1 ;
2526
+ php_openssl_set_blocking (sslsock , 1 );
2521
2527
}
2522
2528
sslsock -> s .timeout_event = 1 ;
2523
2529
return PHP_STREAM_OPTION_RETURN_ERR ;
@@ -2568,8 +2574,7 @@ static int php_openssl_sockop_set_option(php_stream *stream, int option, int val
2568
2574
2569
2575
if (began_blocked && !sslsock -> s .is_blocked ) {
2570
2576
// Set it back to blocking
2571
- php_set_sock_blocking (sslsock -> s .socket , 1 );
2572
- sslsock -> s .is_blocked = 1 ;
2577
+ php_openssl_set_blocking (sslsock , 1 );
2573
2578
}
2574
2579
} else {
2575
2580
#ifdef PHP_WIN32
0 commit comments