diff -r cc94ae754e2a -r a3ca0f97a075 src/sock_gnutls.c --- 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;