diff --git a/src/Csocket.cpp b/src/Csocket.cpp index 93482b12..aaa68b5f 100644 --- a/src/Csocket.cpp +++ b/src/Csocket.cpp @@ -2851,7 +2851,23 @@ void CSocketManager::Loop() case Csock::READ_ERR: { - pcSock->CallSockError( GetSockError() ); + bool bHandled = false; +#ifdef HAVE_LIBSSL + if (pcSock->GetSSL()) { + unsigned long iSSLError = ERR_peek_error(); + if (iSSLError) { + char szError[512]; + memset(( char * ) szError, '\0', 512 ); + ERR_error_string_n( iSSLError, szError, 511 ); + SSLErrors(__FILE__, __LINE__); + pcSock->CallSockError(GetSockError(), szError); + bHandled = true; + } + } +#endif + if (!bHandled) { + pcSock->CallSockError( GetSockError() ); + } DelSockByAddr( pcSock ); break; }