Wed, 04 Mar 2026 21:42:25 +0100
implement HttpStream raw mode: raw mode disables read counter
| src/server/util/io.c | file | annotate | diff | comparison | revisions | |
| src/server/util/io.h | file | annotate | diff | comparison | revisions |
--- a/src/server/util/io.c Tue Mar 03 22:01:27 2026 +0100 +++ b/src/server/util/io.c Wed Mar 04 21:42:25 2026 +0100 @@ -297,6 +297,7 @@ st->chunked_enc = WS_FALSE; st->read_eof = WS_TRUE; st->write_eof = WS_FALSE; + st->raw = WS_FALSE; return (IOStream*)st; } @@ -559,7 +560,9 @@ if(r < 0) { st->st.io_errno = st->fd->io_errno; } - st->read += r; + if(!st->raw) { + st->read += r; + } return r; } @@ -584,7 +587,9 @@ // amount of bytes we copy size_t chunk_available = httpstr->max_read - httpstr->read; cplen = cplen > chunk_available ? chunk_available : cplen; - httpstr->read += cplen; + if(!httpstr->raw) { + httpstr->read += cplen; + } } memcpy(buf, httpstr->readbuf + pos, cplen); *httpstr->bufpos += cplen; @@ -808,10 +813,6 @@ return rd; } -ssize_t net_http_read_raw(HttpStream *st, void *buf, size_t nbytes) { - return st->fd->read(st->fd, buf, nbytes); -} - ssize_t net_http_sendfile(HttpStream *st, sendfiledata *sfd) { if(st->write_eof) return 0; ssize_t ret = 0;
--- a/src/server/util/io.h Tue Mar 03 22:01:27 2026 +0100 +++ b/src/server/util/io.h Wed Mar 04 21:42:25 2026 +0100 @@ -226,7 +226,6 @@ ssize_t net_http_read(HttpStream *st, void *buf, size_t nbytes); ssize_t net_http_read_buffered(HttpStream *st, void *buf, size_t nbytes); ssize_t net_http_read_chunked(HttpStream *st, void *buf, size_t nbytes); -ssize_t net_http_read_raw(HttpStream *st, void *buf, size_t nbytes); ssize_t net_http_sendfile(HttpStream *st, sendfiledata *sfd); void net_http_close(HttpStream *st); void net_http_finish(HttpStream *st);