Only set the internal ever_handshaked flag if the handshake was
successful. Otherwise using g_io_stream_close() after a handshake
failure results in an internal gnutls error.
https://bugzilla.gnome.org/show_bug.cgi?id=689260
END_GNUTLS_IO (gnutls, G_IO_IN | G_IO_OUT, ret,
_("Error performing TLS handshake: %s"), &error);
- gnutls->priv->ever_handshaked = TRUE;
-
if (error)
- g_task_return_error (task, error);
+ {
+ g_task_return_error (task, error);
+ }
else
- g_task_return_boolean (task, TRUE);
+ {
+ gnutls->priv->ever_handshaked = TRUE;
+ g_task_return_boolean (task, TRUE);
+ }
}
static GTlsCertificate *