--- a/src/sock_gnutls.c Tue Mar 10 02:34:11 2009 +0200
+++ b/src/sock_gnutls.c Tue Mar 10 02:51:44 2009 +0200
@@ -4,7 +4,6 @@
#include <stdlib.h>
#include <err.h>
-// XXX: errors
static err_t sock_gnutls_read (struct sock_stream *base_sock, void *buf, size_t *len)
{
struct sock_gnutls *sock = SOCK_FROM_BASE(base_sock, struct sock_gnutls);
@@ -128,16 +127,9 @@
static void sock_gnutls_release (struct sock_stream *base_sock)
{
struct sock_gnutls *sock = SOCK_FROM_BASE(base_sock, struct sock_gnutls);
-
- // close the session rudely
- // XXX: does this actually do everything we need it to? Don't want to call gnutls_bye here, since we're void...
- gnutls_deinit(sock->session);
- // terminate the TCP transport
- sock_tcp_close(SOCK_GNUTLS_TCP(sock));
-
- // free
- free(sock);
+ // DIEEEE
+ sock_gnutls_destroy(sock);
}
/*
@@ -195,7 +187,6 @@
return SUCCESS;
}
-
err_t sock_ssl_connect (struct sock_stream **sock_ptr, const char *host, const char *service, struct error_info *err)
{
struct sock_gnutls *sock = NULL;
@@ -237,8 +228,23 @@
return SUCCESS;
error:
- // XXX: cleanup
+ // cleanup
+ sock_gnutls_destroy(sock);
return ERROR_CODE(err);
}
+void sock_gnutls_destroy (struct sock_gnutls *sock)
+{
+ // terminate the TCP transport
+ sock_tcp_close(SOCK_GNUTLS_TCP(sock));
+
+ // close the session rudely
+ // XXX: does this actually do everything we need it to? Don't want to call gnutls_bye here, since we're void...
+ gnutls_deinit(sock->session);
+
+ // free
+ free(sock);
+}
+
+