src/server/util/io.c

changeset 697
3ddfd45d4e47
parent 692
32faa1d6a744
--- a/src/server/util/io.c	Sun Feb 22 09:33:48 2026 +0100
+++ b/src/server/util/io.c	Sun Feb 22 10:05:37 2026 +0100
@@ -209,6 +209,9 @@
 }
 
 void net_sys_setmode(Sysstream *st, int mode) {
+    if(mode > IO_MODE_NONBLOCKING) {
+        return;
+    }
     int flags;
     if (-1 == (flags = fcntl(st->fd, F_GETFL, 0))) {
         flags = 0;
@@ -539,6 +542,14 @@
     }
 }
 
+ssize_t net_http_write_raw(HttpStream *st, const void *buf, size_t nbytes) {
+    return st->fd->write(st->fd, buf, nbytes);
+}
+
+ssize_t net_http_writev_raw(HttpStream *st, struct iovec *iovec, int iovcnt) {
+    return st->fd->writev(st->fd, iovec, iovcnt);
+}
+
 ssize_t net_http_read(HttpStream *st, void *buf, size_t nbytes) {
     if(st->read >= st->max_read) {
         st->read_eof = WS_TRUE;
@@ -797,6 +808,10 @@
     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;
@@ -824,7 +839,11 @@
 }
 
 void net_http_setmode(HttpStream *st, int mode) {
-    st->fd->setmode(st->fd, mode);
+    if(mode == IO_MODE_RAW) {
+        st->raw = TRUE;
+    } else {
+        st->fd->setmode(st->fd, mode);
+    }
 }
 
 int net_http_poll(HttpStream *st, EventHandler *ev, int events, Event *cb) {

mercurial