diff -r db37761a8494 -r 48da20bde908 src/server/util/io.h --- a/src/server/util/io.h Wed Feb 18 12:31:19 2026 +0100 +++ b/src/server/util/io.h Wed Feb 18 13:41:10 2026 +0100 @@ -70,6 +70,7 @@ typedef void(*io_finish_f)(IOStream *); typedef void(*io_setmode_f)(IOStream *, int); typedef int(*io_poll_f)(IOStream *, EventHandler *, int, Event *); +typedef void (*io_free_f)(IOStream *); struct IOStream { io_write_f write; @@ -80,12 +81,14 @@ io_finish_f finish; io_setmode_f setmode; io_poll_f poll; + io_free_f free; int io_errno; unsigned int type; }; struct Sysstream { IOStream st; + pool_handle_t *pool; #ifdef XP_UNIX int fd; #elif defined(XP_WIN32) @@ -97,6 +100,7 @@ struct HttpStream { IOStream st; IOStream *fd; + pool_handle_t *pool; uint64_t written; /* @@ -181,6 +185,7 @@ typedef struct SSLStream { IOStream st; SSL *ssl; + pool_handle_t *pool; int error; } SSLStream; @@ -188,6 +193,7 @@ /* system stream */ IOStream* Sysstream_new(pool_handle_t *pool, SYS_SOCKET fd); +void sysstream_free(IOStream *st); ssize_t net_sys_write(Sysstream *st, const void *buf, size_t nbytes); ssize_t net_sys_writev(Sysstream *st, struct iovec *iovec, int iovcnt); @@ -199,6 +205,7 @@ /* http stream */ IOStream* httpstream_new(pool_handle_t *pool, IOStream *fd); +void httpstream_free(IOStream *st); int httpstream_enable_chunked_read(IOStream *st, char *buffer, size_t bufsize, int *cursize, int *pos); int httpstream_enable_buffered_read(IOStream *st, char *buffer, size_t bufsize, int *cursize, int *pos); @@ -222,6 +229,7 @@ /* ssl stream */ IOStream* sslstream_new(pool_handle_t *pool, SSL *ssl); +void sslstream_free(IOStream *st); ssize_t net_ssl_write(SSLStream *st, const void *buf, size_t nbytes); ssize_t net_ssl_writev(SSLStream *st, struct iovec *iovec, int iovcnt);