src/sock_gnutls.c
changeset 4 a3ca0f97a075
parent 3 cc94ae754e2a
child 5 a09a0797f6f0
--- a/src/sock_gnutls.c	Sun Feb 22 06:44:16 2009 +0200
+++ b/src/sock_gnutls.c	Sun Feb 22 06:52:55 2009 +0200
@@ -43,24 +43,26 @@
 
 /*
  * Configure the given gnutls socket context to use simple anonymous client credentials
- *
- * XXX: errors
  */
-void sock_gnutls_client_ctx_anon (struct sock_gnutls_client_ctx *ctx)
+static err_t sock_gnutls_client_ctx_anon (struct sock_gnutls_client_ctx *ctx, struct error_info *err)
 {
-      gnutls_certificate_allocate_credentials(&ctx->xcred);
+    // init to use anonymous x509 cert
+    if ((ERROR_EXTRA(err) = gnutls_certificate_allocate_credentials(&ctx->xcred)) < 0)
+        return SET_ERROR(err, ERR_GNUTLS_CERT_ALLOC_CRED);
+
+    // done
+    return SUCCESS;
 }
 
-err_t sock_gnutls_init (void)
+err_t sock_gnutls_init (struct error_info *err)
 {
-    int _err;
-
     // global init
-    if ((_err = gnutls_global_init()) < 0)
-        errx(1, "gnutls_global_init: %s", gnutls_strerror(_err));
+    if ((ERROR_EXTRA(err) = gnutls_global_init()) < 0)
+        return SET_ERROR(err, ERR_GNUTLS_GLOBAL_INIT);
 
     // init _sock_gnutls_ctx
-    sock_gnutls_client_ctx_anon(&_sock_gnutls_client_ctx);
+    if (sock_gnutls_client_ctx_anon(&_sock_gnutls_client_ctx, err))
+        return ERROR_CODE(err);
 
     // done
     return SUCCESS;