summaryrefslogtreecommitdiff
path: root/librabbitmq/amqp_gnutls.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_gnutls.c
parent03350650a5ada4dcf5f226f12fc16e5532d35574 (diff)
downloadrabbitmq-c-github-ask-ed6e4edd7371a07936f4406890c9794c1c48749b.tar.gz
Fixes to alternate SSL backends to not crash
Diffstat (limited to 'librabbitmq/amqp_gnutls.c')
-rw-r--r--librabbitmq/amqp_gnutls.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/librabbitmq/amqp_gnutls.c b/librabbitmq/amqp_gnutls.c
index fdde6d8..ecefea7 100644
--- a/librabbitmq/amqp_gnutls.c
+++ b/librabbitmq/amqp_gnutls.c
@@ -33,6 +33,7 @@
#include <string.h>
struct amqp_ssl_socket_t {
+ const struct amqp_socket_class_t *klass;
gnutls_session_t session;
gnutls_certificate_credentials_t credentials;
int sockfd;
@@ -118,6 +119,14 @@ 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;
+
+ free(self->host);
+ self->host = strdup(host);
+ if (NULL == self->host) {
+ self->last_error = ERROR_NO_MEMORY;
+ return -1;
+ }
+
self->sockfd = amqp_open_socket(host, port);
if (0 > self->sockfd) {
self->last_error = -self->sockfd;
@@ -267,6 +276,7 @@ amqp_ssl_socket_new(void)
if (GNUTLS_E_SUCCESS != status) {
goto error;
}
+ self->klass = &amqp_ssl_socket_class;
return (amqp_socket_t *)self;
error:
amqp_socket_close((amqp_socket_t *)self);