@@ -1908,10 +1908,10 @@ static void ftp_ssl_shutdown(ftpbuf_t *ftp, php_socket_t fd, SSL *ssl_handle) {
1908
1908
done = 0 ;
1909
1909
}
1910
1910
1911
- while (!done ) {
1912
- if ( data_available ( ftp , fd )) {
1913
- ERR_clear_error ( );
1914
- nread = SSL_read ( ssl_handle , buf , sizeof ( buf ));
1911
+ while (!done && data_available ( ftp , fd ) ) {
1912
+ ERR_clear_error ();
1913
+ nread = SSL_read ( ssl_handle , buf , sizeof ( buf ) );
1914
+ if ( nread <= 0 ) {
1915
1915
err = SSL_get_error (ssl_handle , nread );
1916
1916
switch (err ) {
1917
1917
case SSL_ERROR_NONE : /* this is not an error */
@@ -1929,9 +1929,11 @@ static void ftp_ssl_shutdown(ftpbuf_t *ftp, php_socket_t fd, SSL *ssl_handle) {
1929
1929
break ;
1930
1930
default :
1931
1931
if ((sslerror = ERR_get_error ())) {
1932
- ERR_error_string_n (sslerror , buf , sizeof (buf ));
1932
+ ERR_error_string_n (sslerror , buf , sizeof (buf ));
1933
+ php_error_docref (NULL , E_WARNING , "SSL_read on shutdown: %s" , buf );
1934
+ } else if (errno ) {
1935
+ php_error_docref (NULL , E_WARNING , "SSL_read on shutdown: %s (%d)" , strerror (errno ), errno );
1933
1936
}
1934
- php_error_docref (NULL , E_WARNING , "SSL_read on shutdown: %s (%d)" , (sslerror ? buf : strerror (errno )), errno );
1935
1937
done = 1 ;
1936
1938
break ;
1937
1939
}
0 commit comments