From bc42e791cf4b56f2854e87666e3295d8b167ad24 Mon Sep 17 00:00:00 2001 From: frosty Date: Sat, 15 Aug 2026 18:06:44 -0400 Subject: fix: harden socket I/O --- src/beaker_globals.h | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'src/beaker_globals.h') diff --git a/src/beaker_globals.h b/src/beaker_globals.h index a4a98f0..96d4dcf 100644 --- a/src/beaker_globals.h +++ b/src/beaker_globals.h @@ -5,6 +5,22 @@ #include #include +#ifndef BEAKER_REQUEST_HEADER_TIMEOUT_MS +#define BEAKER_REQUEST_HEADER_TIMEOUT_MS 5000 +#endif + +#ifndef BEAKER_RESPONSE_WRITE_TIMEOUT_MS +#define BEAKER_RESPONSE_WRITE_TIMEOUT_MS 30000 +#endif + +typedef enum { + BEAKER_REQUEST_READ_OK = 0, + BEAKER_REQUEST_READ_CLOSED, + BEAKER_REQUEST_READ_TIMEOUT, + BEAKER_REQUEST_READ_TOO_LARGE, + BEAKER_REQUEST_READ_ERROR, +} BeakerRequestReadResult; + extern RouteHandler handlers[MAX_HANDLERS]; extern int handler_count; @@ -33,6 +49,16 @@ void beaker_log_request(const char *remote_addr, const char *method, const char *path, int status, size_t response_size, double duration_ms); +BeakerRequestReadResult beaker_read_request_headers(int socket, char *buffer, + size_t buffer_size, + size_t *bytes_read); + +int beaker_configure_client_socket(int socket); + +int beaker_send_all(int socket, const void *buffer, size_t length); + +void beaker_reset_write_deadline(void); + extern Locale *locales; extern int locale_count; -- cgit v1.3