diff options
| author | frosty <gabriel@bwaaa.monster> | 2026-08-15 18:06:44 -0400 |
|---|---|---|
| committer | frosty <gabriel@bwaaa.monster> | 2026-08-15 18:06:44 -0400 |
| commit | bc42e791cf4b56f2854e87666e3295d8b167ad24 (patch) | |
| tree | fc371a9bc1268fe6d1b43f62e66a44a2546216fa /src/beaker_globals.h | |
| parent | d3c9f9384fa3e743f48e1771a8519e3e4bb04ad6 (diff) | |
| download | beaker-bc42e791cf4b56f2854e87666e3295d8b167ad24.tar.gz | |
fix: harden socket I/O
Diffstat (limited to 'src/beaker_globals.h')
| -rw-r--r-- | src/beaker_globals.h | 26 |
1 files changed, 26 insertions, 0 deletions
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 <stdatomic.h> #include <stddef.h> +#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; |
