From 3dc8e8ed7b015e166a9d0dcddfabae38534ca774 Mon Sep 17 00:00:00 2001 From: Amos Jeffries Date: Sun, 15 Jan 2017 03:58:02 +1300 Subject: [PATCH] Improve debugs during GnuTLS handshake and fix read/write scheduling --- src/security/PeerConnector.cc | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) 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: -- 2.47.3