From 41eec4efa2a8c653973b25240c5cda81bb12e26f Mon Sep 17 00:00:00 2001 From: Alessandro Ghedini Date: Wed, 24 Oct 2012 14:34:00 +0200 Subject: [PATCH] gnutls: print alerts during handshake --- lib/gtls.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/lib/gtls.c b/lib/gtls.c index dbf568c..d8e88e2 100644 --- a/lib/gtls.c +++ b/lib/gtls.c @@ -304,10 +304,30 @@ static CURLcode handshake(struct connectdata *conn, return CURLE_OK; } else if((rc < 0) && !gnutls_error_is_fatal(rc)) { - failf(data, "gnutls_handshake() warning: %s", gnutls_strerror(rc)); + char *strerr = NULL; + + if(rc == GNUTLS_E_WARNING_ALERT_RECEIVED) { + int alert = gnutls_alert_get(session); + strerr = gnutls_alert_get_name(alert); + } + + if(strerr == NULL) + strerr = gnutls_strerror(rc); + + failf(data, "gnutls_handshake() warning: %s", strerr); } else if(rc < 0) { - failf(data, "gnutls_handshake() failed: %s", gnutls_strerror(rc)); + char *strerr = NULL; + + if(rc == GNUTLS_E_FATAL_ALERT_RECEIVED) { + int alert = gnutls_alert_get(session); + strerr = gnutls_alert_get_name(alert); + } + + if(strerr == NULL) + strerr = gnutls_strerror(rc); + + failf(data, "gnutls_handshake() failed: %s", strerr); return CURLE_SSL_CONNECT_ERROR; } -- 2.7.4