summaryrefslogtreecommitdiff
path: root/librabbitmq/amqp_cyassl.c
diff options
context:
space:
mode:
authorAlan Antonuk <alan.antonuk@gmail.com>2013-04-17 14:02:32 -0700
committerAlan Antonuk <alan.antonuk@gmail.com>2013-04-17 14:02:32 -0700
commited6e4edd7371a07936f4406890c9794c1c48749b (patch)
tree617f5f83bf8a763cf31cd150592cd1a8b5de5474 /librabbitmq/amqp_cyassl.c
parent03350650a5ada4dcf5f226f12fc16e5532d35574 (diff)
downloadrabbitmq-c-github-ask-ed6e4edd7371a07936f4406890c9794c1c48749b.tar.gz
Fixes to alternate SSL backends to not crash
Diffstat (limited to 'librabbitmq/amqp_cyassl.c')
-rw-r--r--librabbitmq/amqp_cyassl.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/librabbitmq/amqp_cyassl.c b/librabbitmq/amqp_cyassl.c
index 2fa83e6..1c078e9 100644
--- a/librabbitmq/amqp_cyassl.c
+++ b/librabbitmq/amqp_cyassl.c
@@ -32,6 +32,7 @@
#include <string.h>
struct amqp_ssl_socket_t {
+ const struct amqp_socket_class_t *klass;
CYASSL_CTX *ctx;
CYASSL *ssl;
int sockfd;
@@ -154,6 +155,13 @@ amqp_ssl_socket_open(void *base, const char *host, int port)
struct amqp_ssl_socket_t *self = (struct amqp_ssl_socket_t *)base;
int status;
self->last_error = 0;
+
+ self->ssl = CyaSSL_new(self->ctx);
+ if (NULL == self->ssl) {
+ self->last_error = ERROR_CATEGORY_SSL;
+ return -1;
+ }
+
self->sockfd = amqp_open_socket(host, port);
if (0 > self->sockfd) {
self->last_error = - self->sockfd;
@@ -190,6 +198,7 @@ amqp_ssl_socket_new(void)
if (!self->ctx) {
goto error;
}
+ self->klass = &amqp_ssl_socket_class;
return (amqp_socket_t *)self;
error:
amqp_socket_close((amqp_socket_t *)self);