@@ -1770,10 +1770,10 @@ static void ftp_ssl_shutdown(ftpbuf_t *ftp, php_socket_t fd, SSL *ssl_handle) {
1770
1770
done = 0 ;
1771
1771
}
1772
1772
1773
- while (!done ) {
1774
- if ( data_available ( ftp , fd )) {
1775
- ERR_clear_error ( );
1776
- nread = SSL_read ( ssl_handle , buf , sizeof ( buf ));
1773
+ while (!done && data_available ( ftp , fd ) ) {
1774
+ ERR_clear_error ();
1775
+ nread = SSL_read ( ssl_handle , buf , sizeof ( buf ) );
1776
+ if ( nread <= 0 ) {
1777
1777
err = SSL_get_error (ssl_handle , nread );
1778
1778
switch (err ) {
1779
1779
case SSL_ERROR_NONE : /* this is not an error */
@@ -1791,9 +1791,11 @@ static void ftp_ssl_shutdown(ftpbuf_t *ftp, php_socket_t fd, SSL *ssl_handle) {
1791
1791
break ;
1792
1792
default :
1793
1793
if ((sslerror = ERR_get_error ())) {
1794
- ERR_error_string_n (sslerror , buf , sizeof (buf ));
1794
+ ERR_error_string_n (sslerror , buf , sizeof (buf ));
1795
+ php_error_docref (NULL , E_WARNING , "SSL_read on shutdown: %s" , buf );
1796
+ } else if (errno ) {
1797
+ php_error_docref (NULL , E_WARNING , "SSL_read on shutdown: %s (%d)" , strerror (errno ), errno );
1795
1798
}
1796
- php_error_docref (NULL , E_WARNING , "SSL_read on shutdown: %s (%d)" , (sslerror ? buf : strerror (errno )), errno );
1797
1799
done = 1 ;
1798
1800
break ;
1799
1801
}
0 commit comments