From 3be7d67b5fbe2858279435aff5f488ae9f4b9274 Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Tue, 13 Mar 2018 05:55:19 +0000
Subject: [PATCH] Fix handling of cryptPushData() and cryptFlushData() success
 correctly. Also, change READTIMEOUT back to zero since that issue is fixed
 now.

---
 src/sbbs3/websrvr.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/sbbs3/websrvr.c b/src/sbbs3/websrvr.c
index c2be3f7603..a61df8896d 100644
--- a/src/sbbs3/websrvr.c
+++ b/src/sbbs3/websrvr.c
@@ -638,11 +638,15 @@ static int sess_sendbuf(http_session_t *session, const char *buf, size_t len, BO
 						status = CRYPT_OK;
 					}
 					if(cryptStatusOK(status)) {
-						HANDLE_CRYPT_CALL_EXCEPT(cryptFlushData(session->tls_sess), session, "flushing data", CRYPT_ERROR_COMPLETE);
-						if (failed)
-							*failed=TRUE;
+						HANDLE_CRYPT_CALL_EXCEPT(status = cryptFlushData(session->tls_sess), session, "flushing data", CRYPT_ERROR_COMPLETE);
+						if (cryptStatusError(status)) {
+							if (failed)
+								*failed=TRUE;
+						}
 						return tls_sent;
 					}
+					if (failed)
+						*failed=TRUE;
 					result = tls_sent;
 				}
 				else {
@@ -6240,7 +6244,7 @@ void http_session_thread(void* arg)
 			thread_down();
 			return;
 		}
-		HANDLE_CRYPT_CALL(cryptSetAttribute(session.tls_sess, CRYPT_OPTION_NET_READTIMEOUT, 1), &session, "setting read timeout");
+		HANDLE_CRYPT_CALL(cryptSetAttribute(session.tls_sess, CRYPT_OPTION_NET_READTIMEOUT, 0), &session, "setting read timeout");
 	}
 
 	/* Start up the output buffer */
-- 
GitLab