summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Antonuk <alan.antonuk@gmail.com>2013-04-15 14:09:16 -0700
committerAlan Antonuk <alan.antonuk@gmail.com>2013-04-17 09:56:30 -0700
commit098a555d563a2cff430aa0f7c99f5fc12029ea32 (patch)
tree4a9526de0b5e30dccd4622bad78e7bd72575f442
parente93f902d03a2f3b6357e175d89d5f7514bec56aa (diff)
downloadrabbitmq-c-github-ask-098a555d563a2cff430aa0f7c99f5fc12029ea32.tar.gz
Add very rudimentary error code handling for SSL
-rw-r--r--librabbitmq/amqp_api.c5
-rw-r--r--librabbitmq/amqp_cyassl.c9
-rw-r--r--librabbitmq/amqp_gnutls.c9
-rw-r--r--librabbitmq/amqp_openssl.c9
-rw-r--r--librabbitmq/amqp_polarssl.c9
-rw-r--r--librabbitmq/amqp_private.h5
6 files changed, 42 insertions, 4 deletions
diff --git a/librabbitmq/amqp_api.c b/librabbitmq/amqp_api.c
index 4a84bd3..6bc8397 100644
--- a/librabbitmq/amqp_api.c
+++ b/librabbitmq/amqp_api.c
@@ -75,6 +75,11 @@ char *amqp_error_string(int err)
case ERROR_CATEGORY_OS:
return amqp_os_error_string(err);
+#ifdef WITH_SSL
+ case ERROR_CATEGORY_SSL:
+ return amqp_ssl_error_string(err);
+#endif
+
default:
str = "(undefined error category)";
}
diff --git a/librabbitmq/amqp_cyassl.c b/librabbitmq/amqp_cyassl.c
index c609147..b04c657 100644
--- a/librabbitmq/amqp_cyassl.c
+++ b/librabbitmq/amqp_cyassl.c
@@ -29,6 +29,7 @@
#include "amqp_private.h"
#include <cyassl/ssl.h>
#include <stdlib.h>
+#include <string.h>
struct amqp_ssl_socket_t {
CYASSL_CTX *ctx;
@@ -118,7 +119,13 @@ amqp_ssl_socket_close(void *base)
static int
amqp_ssl_socket_error(AMQP_UNUSED void *user_data)
{
- return -1;
+ return ERROR_CATEGORY_SSL;
+}
+
+char *
+amqp_ssl_error_string(AMQP_UNUSED int err)
+{
+ return strdup("A ssl socket error occurred.");
}
static int
diff --git a/librabbitmq/amqp_gnutls.c b/librabbitmq/amqp_gnutls.c
index f4e3d62..8e5e1f2 100644
--- a/librabbitmq/amqp_gnutls.c
+++ b/librabbitmq/amqp_gnutls.c
@@ -30,6 +30,7 @@
#include <gnutls/gnutls.h>
#include <gnutls/x509.h>
#include <stdlib.h>
+#include <string.h>
struct amqp_ssl_socket_t {
gnutls_session_t session;
@@ -131,7 +132,13 @@ amqp_ssl_socket_close(void *base)
static int
amqp_ssl_socket_error(AMQP_UNUSED void *user_data)
{
- return -1;
+ return ERROR_CATEGORY_SSL;
+}
+
+char *
+amqp_ssl_error_string(AMQP_UNUSED int err)
+{
+ return strdup("A SSL error occurred");
}
static int
diff --git a/librabbitmq/amqp_openssl.c b/librabbitmq/amqp_openssl.c
index 8a24366..5203756 100644
--- a/librabbitmq/amqp_openssl.c
+++ b/librabbitmq/amqp_openssl.c
@@ -33,6 +33,7 @@
#include <openssl/err.h>
#include <openssl/ssl.h>
#include <stdlib.h>
+#include <string.h>
#include "socket.h"
@@ -262,7 +263,13 @@ amqp_ssl_socket_close(void *base)
static int
amqp_ssl_socket_error(AMQP_UNUSED void *base)
{
- return -1;
+ return ERROR_CATEGORY_SSL;
+}
+
+char *
+amqp_ssl_error_string(AMQP_UNUSED int err)
+{
+ return strdup("A ssl socket error occurred.");
}
static int
diff --git a/librabbitmq/amqp_polarssl.c b/librabbitmq/amqp_polarssl.c
index 77bb5fc..c5cf2be 100644
--- a/librabbitmq/amqp_polarssl.c
+++ b/librabbitmq/amqp_polarssl.c
@@ -32,6 +32,7 @@
#include <polarssl/net.h>
#include <polarssl/ssl.h>
#include <stdlib.h>
+#include <string.h>
struct amqp_ssl_socket_t {
int sockfd;
@@ -158,7 +159,13 @@ amqp_ssl_socket_close(void *base)
static int
amqp_ssl_socket_error(AMQP_UNUSED void *user_data)
{
- return -1;
+ return ERROR_CATEGORY_SSL;
+}
+
+char *
+amqp_ssl_error_string(AMQP_UNUSED int err)
+{
+ return strdup("A SSL socket error occurred");
}
static int
diff --git a/librabbitmq/amqp_private.h b/librabbitmq/amqp_private.h
index 7f22ce8..a33205e 100644
--- a/librabbitmq/amqp_private.h
+++ b/librabbitmq/amqp_private.h
@@ -92,6 +92,11 @@
char *
amqp_os_error_string(int err);
+#ifdef WITH_SSL
+char *
+amqp_ssl_error_string(int err);
+#endif
+
#include "amqp_socket.h"
/*