From: Amos Jeffries Date: Sat, 14 Jan 2017 14:58:02 +0000 (+1300) Subject: Improve debugs during GnuTLS handshake and fix read/write scheduling X-Git-Tag: M-staged-PR71~284^2~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3dc8e8ed7b015e166a9d0dcddfabae38534ca774;p=thirdparty%2Fsquid.git Improve debugs during GnuTLS handshake and fix read/write scheduling --- diff --git a/src/security/PeerConnector.cc b/src/security/PeerConnector.cc index 39539909f8..bfc3f323ca 100644 --- a/src/security/PeerConnector.cc +++ b/src/security/PeerConnector.cc @@ -189,15 +189,16 @@ Security::PeerConnector::negotiate() if (result <= 0) { #elif USE_GNUTLS auto session = fd_table[fd].ssl.get(); - debugs(83, 5, "gnutls_handshake session=" << (void*)session); const int result = gnutls_handshake(session); + debugs(83, 5, "gnutls_handshake session=" << (void*)session << ", result=" << result); - char *desc = gnutls_session_get_desc(session); - debugs(83, 5, "TLS Session info: " << desc); - gnutls_free(desc); + if (result == GNUTLS_E_SUCCESS) { + char *desc = gnutls_session_get_desc(session); + debugs(83, 2, serverConnection() << " TLS Session info: " << desc); + gnutls_free(desc); + } if (result != GNUTLS_E_SUCCESS) { - debugs(83, 5, "gnutls_handshake session=" << (void*)session << ", result=" << result); #else if (const int result = -1) { #endif @@ -416,10 +417,17 @@ Security::PeerConnector::handleNegotiateError(const int ret) case GNUTLS_E_AGAIN: case GNUTLS_E_INTERRUPTED: + { + auto descIn = gnutls_handshake_get_last_in(session.get()); + debugs(83, 2, "handshake IN: " << gnutls_handshake_description_get_name(descIn)); + auto descOut = gnutls_handshake_get_last_out(session.get()); + debugs(83, 2, "handshake OUT: " << gnutls_handshake_description_get_name(descOut)); + } + if (gnutls_record_get_direction(session.get()) == 0) - noteWantWrite(); - else noteWantRead(); + else + noteWantWrite(); return; default: