fix wrong content-length in the access log default tip

Sun, 14 Dec 2025 20:37:11 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sun, 14 Dec 2025 20:37:11 +0100
changeset 657
f1469e3144a7
parent 656
59dd1fb27639

fix wrong content-length in the access log

src/server/safs/addlog.c file | annotate | diff | comparison | revisions
src/server/util/io.c file | annotate | diff | comparison | revisions
--- a/src/server/safs/addlog.c	Sun Dec 07 20:16:02 2025 +0100
+++ b/src/server/safs/addlog.c	Sun Dec 14 20:37:11 2025 +0100
@@ -28,6 +28,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <inttypes.h>
 
 #include "addlog.h"
 
@@ -35,6 +36,7 @@
 #include "../daemon/vserver.h"
 #include "../daemon/log.h"
 #include "../util/util.h"
+#include "../util/io.h"
 
 int common_log(pblock *pb, Session *sn, Request *rq) {
     NSAPIRequest *request = (NSAPIRequest*)rq;
@@ -59,7 +61,7 @@
     
     // hack to get the content length
     // http_start_response should not modify the header names
-    char *len = pblock_findval("Content-length", rq->srvhdrs);
+    int64_t len = httpstream_written(sn->csd);
     
     if(!ip) {
         ip = "-";
@@ -67,9 +69,6 @@
     if(!user) {
         user = "-";
     }
-    if(!len) {
-        len = "0";
-    }
     
     // remove trailing line feed
     cxstring tmstr = cx_str(time);
@@ -92,13 +91,13 @@
         }
         fprintf(
                 log->log->file,
-                "%s - %s [%.*s] \"%s\" %d %s %.*s%s%.*s %.*s%s%.*s\n",
+                "%s - %s [%.*s] \"%s\" %d %" PRId64 " %.*s%s%.*s %.*s%s%.*s\n",
                 ip,
                 user,
                 (int)tmstr.length,
                 tmstr.ptr,
                 req,
-                rq->status_num,
+                (int)rq->status_num,
                 len,
                 refq,
                 "\"",
@@ -114,7 +113,7 @@
     } else {
         fprintf(
                 log->log->file,
-                "%s - %s [%.*s] \"%s\" %d %s\n",
+                "%s - %s [%.*s] \"%s\" %d %" PRId64 "\n",
                 ip,
                 user,
                 (int)tmstr.length,
--- a/src/server/util/io.c	Sun Dec 07 20:16:02 2025 +0100
+++ b/src/server/util/io.c	Sun Dec 14 20:37:11 2025 +0100
@@ -387,7 +387,8 @@
     IOStream *fd = st->fd;
     if(!st->chunked_enc) {
         ssize_t w = fd->write(fd, buf, nbytes);
-        st->written += w > 0 ? w : 0;
+        //st->written += w > 0 ? w : 0;
+        st->written += w;
         return w;
     } else {
         struct iovec io[8];

mercurial