From: Alessandro Ghedini Date: Wed, 24 Oct 2012 12:34:00 +0000 (+0200) Subject: gnutls: print alerts during handshake X-Git-Tag: curl-7_28_1~56 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=41eec4efa2a8c653973b25240c5cda81bb12e26f;p=thirdparty%2Fcurl.git gnutls: print alerts during handshake --- diff --git a/lib/gtls.c b/lib/gtls.c index dbf568c44c..d8e88e2c4b 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; }