diff --git a/ChangeLog.md b/ChangeLog.md index 36f04ae6..4f91e555 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -12,6 +12,8 @@ * [Issue #346](https://github.com/grobian/carbon-c-relay/issues/346) sporadic segfaults when using UDP connections +* [Issue #368](https://github.com/grobian/carbon-c-relay/issues/368) + segfault sending or receiving metrics using ssl transport * [Issue #369](https://github.com/grobian/carbon-c-relay/issues/369) quoted expressions aren't printed as such by relay diff --git a/receptor.c b/receptor.c index e2a69a22..4ed48863 100644 --- a/receptor.c +++ b/receptor.c @@ -48,7 +48,7 @@ bindlistenip(listener *lsnr, unsigned int backlog) int sockcur = 0; #ifdef HAVE_SSL - if (lsnr->transport == W_SSL) { + if ((lsnr->transport & ~0xFFFF) == W_SSL) { /* create a auto-negotiate context */ const SSL_METHOD *m = SSLv23_server_method(); lsnr->ctx = SSL_CTX_new(m); diff --git a/server.c b/server.c index 06a8386a..8e349717 100644 --- a/server.c +++ b/server.c @@ -866,7 +866,7 @@ server_queuereader(void *d) int rv; z_strm *sstrm; - if (self->transport == W_SSL) { /* just SSL, nothing else */ + if ((self->transport & 0xFFFF) == W_PLAIN) { /* just SSL, nothing else */ sstrm = self->strm; } else { sstrm = self->strm->nextstrm;