From d0a3fddd6e820572e9f4b3a24e9e6ea2ed843c4b Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Sun, 16 Jun 2013 11:03:37 +0400 Subject: [PATCH] Fix "Error: Success" message in Csocket When SSL remote closes socket without handshake. Patch is submitted to upstream Csocket too. --- src/Csocket.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) 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; }