summaryrefslogtreecommitdiffstats
path: root/runtime/nsd_gtls.c
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2008-05-15 07:58:01 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2008-05-15 07:58:01 +0200
commitd8b191a1f37ca3f5331afa25480d49612335b674 (patch)
treed6a2aa67963db6b3403c577b852ac1f075f49436 /runtime/nsd_gtls.c
parentce0569ec3ecb2116fb41006ca57498eccf1de43c (diff)
downloadrsyslog-d8b191a1f37ca3f5331afa25480d49612335b674.tar.gz
rsyslog-d8b191a1f37ca3f5331afa25480d49612335b674.tar.xz
rsyslog-d8b191a1f37ca3f5331afa25480d49612335b674.zip
bugfix: TLS server went into an endless loop in some situations.
Thanks to Michael Biebl for reporting the problem.
Diffstat (limited to 'runtime/nsd_gtls.c')
-rw-r--r--runtime/nsd_gtls.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/runtime/nsd_gtls.c b/runtime/nsd_gtls.c
index 03ceba7b..be3910f9 100644
--- a/runtime/nsd_gtls.c
+++ b/runtime/nsd_gtls.c
@@ -534,6 +534,12 @@ Rcv(nsd_t *pNsd, uchar *pBuf, ssize_t *pLenBuf)
/* in TLS mode now */
lenRcvd = gnutls_record_recv(pThis->sess, pBuf, *pLenBuf);
+ if(lenRcvd < 0) {
+int gnuRet; /* this is a hack */
+ *pLenBuf = -1;
+ CHKgnutls(lenRcvd); /* this will abort the function */
+ }
+
*pLenBuf = lenRcvd;
finalize_it: