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