gnutls: Add another G_TLS_ERROR_NOT_TLS case
authorDan Winship <danw@gnome.org>
Tue, 18 Oct 2011 17:51:59 +0000 (13:51 -0400)
committerDan Winship <danw@gnome.org>
Tue, 18 Oct 2011 17:51:59 +0000 (13:51 -0400)
If we get a GNUTLS_E_DECRYPTION_FAILED during the handshake, assume
the peer is just dumb, and return G_TLS_ERROR_NOT_TLS so, eg, libsoup
can fall back to SSLv3.

https://bugzilla.gnome.org/show_bug.cgi?id=662104

tls/gnutls/gtlsconnection-gnutls.c

index 90afe07..c27aee7 100644 (file)
@@ -520,6 +520,7 @@ end_gnutls_io (GTlsConnectionGnutls  *gnutls,
       if (g_error_matches (gnutls->priv->error, G_IO_ERROR, G_IO_ERROR_FAILED) ||
          status == GNUTLS_E_UNEXPECTED_PACKET_LENGTH ||
          status == GNUTLS_E_FATAL_ALERT_RECEIVED ||
+         status == GNUTLS_E_DECRYPTION_FAILED ||
          status == GNUTLS_E_UNSUPPORTED_VERSION_PACKET)
        {
          g_clear_error (&gnutls->priv->error);