src/server/daemon/httprequest.c

changeset 407
78af44222463
parent 397
f202a655f4c2
child 411
bbd82eee568e
--- a/src/server/daemon/httprequest.c	Tue Nov 01 20:39:41 2022 +0100
+++ b/src/server/daemon/httprequest.c	Tue Nov 01 20:46:15 2022 +0100
@@ -614,6 +614,16 @@
         rq->rq.rq_attr.keep_alive = 0;
     }
     
+    char *response_content_length = pblock_findkeyval(pb_key_content_length, rq->rq.srvhdrs);
+    int64_t response_ctlen;
+    if(response_content_length && util_strtoint(response_content_length, &response_ctlen)) {
+        int64_t w = httpstream_written(sn->sn.csd);
+        if(w != response_ctlen) {
+            log_ereport(LOG_WARN, "nsapi_finish_request: content-length != number of bytes written");
+            rq->rq.rq_attr.keep_alive = 0; // fatal io error, we can not safely reuse the connection
+        }
+    }
+    
     if(rq->rq.rq_attr.keep_alive) {
         SessionHandler *sh = sn->connection->session_handler;
         sh->keep_alive(sh, sn->connection);

mercurial