--- a/src/server/proxy/httpclient.h Fri Feb 13 12:18:12 2026 +0100 +++ b/src/server/proxy/httpclient.h Sat Feb 14 18:08:24 2026 +0100 @@ -39,6 +39,11 @@ #ifdef __cplusplus extern "C" { #endif + +#define HTTP_CLIENT_BUFFER_SIZE 4096 + +#define HTTP_CLIENT_CALLBACK_WOULD_BLOCK -1 +#define HTTP_CLIENT_CALLBACK_ERROR -2 typedef struct HttpClient HttpClient; struct HttpClient { @@ -76,8 +81,11 @@ * Response body write function * * int response_body_write(HttpClient *client, void *buf, size_t size, void *userdata) + * + * Return: number of processed bytes, + * HTTP_CLIENT_CALLBACK_WOULD_BLOCK or HTTP_CLIENT_CALLBACK_ERROR. */ - int (*response_body_write)(HttpClient *, void *, size_t, void *); + ssize_t (*response_body_write)(HttpClient *, void *, size_t, void *); void *response_body_write_userdata; /* @@ -90,9 +98,15 @@ // internals + HttpParser *parser; + netbuf buffer; char *req_buffer; size_t req_buffer_len; + size_t req_buffer_pos; + + int error; + int header_complete; Event readev; Event writeev;