From 9b2ad94b6ad7ba9fb66269c1d20aa772e6a9e14a Mon Sep 17 00:00:00 2001 From: Brian West <brian@freeswitch.org> Date: Fri, 3 Feb 2017 17:29:46 -0600 Subject: [PATCH] FS-6683: [mod_dingaling] iksemel TLS-Fragments #resolve --- libs/iksemel/src/stream.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libs/iksemel/src/stream.c b/libs/iksemel/src/stream.c index eda6cb0fe7..a35f29223a 100644 --- a/libs/iksemel/src/stream.c +++ b/libs/iksemel/src/stream.c @@ -785,7 +785,9 @@ iks_recv (iksparser *prs, int timeout) #ifdef HAVE_GNUTLS if (data->flags & SF_SECURE) { len = gnutls_record_recv (data->sess, data->buf, NET_IO_BUF_SIZE - 1); - if (len == 0) len = -1; + if (len > 0 && len < 5) { + len += gnutls_record_recv (data->sess, data->buf + len, NET_IO_BUF_SIZE - 1 - len); + } else if (len == 0) len = -1; } else #elif HAVE_SSL if (data->flags & SF_SECURE) { @@ -797,6 +799,9 @@ iks_recv (iksparser *prs, int timeout) return IKS_OK; } else { len = SSL_read(data->ssl, data->buf, NET_IO_BUF_SIZE - 1); + if (len > 0 && len < 5) { + len += SSL_read(data->ssl, data->buf + len, NET_IO_BUF_SIZE - 1 - len); + } } if( len <= 0 )