diff --git a/src/sbbs3/websrvr.c b/src/sbbs3/websrvr.c
index 7dca9f69029bff94472e5531c64e8ea5902c4b37..619e04b128af2ddc6734436c42e1d6e22f226355 100644
--- a/src/sbbs3/websrvr.c
+++ b/src/sbbs3/websrvr.c
@@ -2064,6 +2064,7 @@ static BOOL exec_cgi(http_session_t *session)
 	char	*p;
 	char	ch;
 	list_node_t	*node;
+	BOOL	orig_keep=FALSE;
 #endif
 
 	SAFECOPY(cmdline,session->req.physical_path);
@@ -2072,7 +2073,7 @@ static BOOL exec_cgi(http_session_t *session)
 
 	lprintf(LOG_INFO,"%04d Executing %s",session->socket,cmdline);
 
-	/* ToDo: Should only do this if the Content-Length header was NOT sent */
+	orig_keep=session->req.keep_alive;
 	session->req.keep_alive=FALSE;
 
 	/* Set up I/O pipes */
@@ -2201,7 +2202,7 @@ static BOOL exec_cgi(http_session_t *session)
 									SAFECOPY(cgi_status,value);
 									break;
 								case HEAD_LENGTH:
-									session->req.keep_alive=TRUE;
+									session->req.keep_alive=orig_keep;
 									listPushNodeString(&session->req.dynamic_heads,buf);
 									break;
 								case HEAD_TYPE: