From b82b0dd118cd575e3d5c59deabc084e2b9217cff Mon Sep 17 00:00:00 2001 From: Joakim Soderberg Date: Fri, 22 Feb 2013 09:28:15 +0800 Subject: [PATCH] Print SSL error codes as well as the string. CYASSL doesn't compile with the error strings in some configurations, so it is nice to have the error code on SSL errors as well. --- lib/client.c | 3 ++- lib/libwebsockets.c | 18 ++++++++++++------ lib/server.c | 2 +- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/lib/client.c b/lib/client.c index e3d3da3e8..3da932692 100644 --- a/lib/client.c +++ b/lib/client.c @@ -179,7 +179,8 @@ int lws_client_socket_service(struct libwebsocket_context *context, * run into the connection timeout or win */ - lwsl_err("SSL connect error %s\n", + lwsl_err("SSL connect error %lu: %s\n", + ERR_get_error(), ERR_error_string(ERR_get_error(), (char *)context->service_buffer)); return 0; diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c index 80a4ce0f6..68db541a1 100644 --- a/lib/libwebsockets.c +++ b/lib/libwebsockets.c @@ -1860,14 +1860,16 @@ libwebsocket_create_context(struct lws_context_creation_info *info) method = (SSL_METHOD *)SSLv23_server_method(); if (!method) { - lwsl_err("problem creating ssl method: %s\n", + lwsl_err("problem creating ssl method %lu: %s\n", + ERR_get_error(), ERR_error_string(ERR_get_error(), (char *)context->service_buffer)); goto bail; } context->ssl_ctx = SSL_CTX_new(method); /* create context */ if (!context->ssl_ctx) { - lwsl_err("problem creating ssl context: %s\n", + lwsl_err("problem creating ssl context %lu: %s\n", + ERR_get_error(), ERR_error_string(ERR_get_error(), (char *)context->service_buffer)); goto bail; @@ -1886,7 +1888,8 @@ libwebsocket_create_context(struct lws_context_creation_info *info) if (info->port == CONTEXT_PORT_NO_LISTEN) { method = (SSL_METHOD *)SSLv23_client_method(); if (!method) { - lwsl_err("problem creating ssl method: %s\n", + lwsl_err("problem creating ssl method %lu: %s\n", + ERR_get_error(), ERR_error_string(ERR_get_error(), (char *)context->service_buffer)); goto bail; @@ -1894,7 +1897,8 @@ libwebsocket_create_context(struct lws_context_creation_info *info) /* create context */ context->ssl_client_ctx = SSL_CTX_new(method); if (!context->ssl_client_ctx) { - lwsl_err("problem creating ssl context: %s\n", + lwsl_err("problem creating ssl context %lu: %s\n", + ERR_get_error(), ERR_error_string(ERR_get_error(), (char *)context->service_buffer)); goto bail; @@ -1968,8 +1972,9 @@ libwebsocket_create_context(struct lws_context_creation_info *info) n = SSL_CTX_use_certificate_chain_file(context->ssl_ctx, info->ssl_cert_filepath); if (n != 1) { - lwsl_err("problem getting cert '%s': %s\n", + lwsl_err("problem getting cert '%s' %lu: %s\n", info->ssl_cert_filepath, + ERR_get_error(), ERR_error_string(ERR_get_error(), (char *)context->service_buffer)); goto bail; @@ -1978,8 +1983,9 @@ libwebsocket_create_context(struct lws_context_creation_info *info) if (SSL_CTX_use_PrivateKey_file(context->ssl_ctx, info->ssl_private_key_filepath, SSL_FILETYPE_PEM) != 1) { - lwsl_err("ssl problem getting key '%s': %s\n", + lwsl_err("ssl problem getting key '%s' %lu: %s\n", info->ssl_private_key_filepath, + ERR_get_error(), ERR_error_string(ERR_get_error(), (char *)context->service_buffer)); goto bail; diff --git a/lib/server.c b/lib/server.c index ae580c869..46aa18290 100644 --- a/lib/server.c +++ b/lib/server.c @@ -46,7 +46,7 @@ libwebsockets_decode_ssl_error(void) while ((err = ERR_get_error()) != 0) { ERR_error_string_n(err, buf, sizeof(buf)); - lwsl_err("*** %s\n", buf); + lwsl_err("*** %lu %s\n", err, buf); } } #endif