| /* |
| copyright: Boaz segev, 2016-2017 |
| license: MIT |
| |
| Feel free to copy, use and enjoy according to the license provided. |
| */ |
| #ifndef HTTP1_H |
| #define HTTP1_H |
| |
| #include "http.h" |
| |
| #ifndef HTTP1_MAX_HEADER_SIZE |
| /** Sets the maximum allowed size of a requests header section |
| (all cookies, headers and other data that isn't the request's "body"). |
| |
| Defaults to ~8Kb headers per request */ |
| #define HTTP1_MAX_HEADER_SIZE (8 * 1024) /* ~ 8kb */ |
| #endif |
| |
| #ifndef HTTP1_MAX_HEADER_COUNT |
| /** Sets the maximum allowed headers per request (obligatory). |
| |
| Defaults to 64 headers per request */ |
| #define HTTP1_MAX_HEADER_COUNT (64) |
| #endif |
| |
| #ifndef HTTP1_POOL_SIZE |
| /** Defines the pre-allocated memory for incoming concurrent connections. |
| |
| Any concurrent HTTP1 connections over this amount will be dynamically allocated. |
| */ |
| #define HTTP1_POOL_SIZE (64) /* should be ~0.5Mb with default values*/ |
| #endif |
| |
| extern char *HTTP1; |
| |
| /** |
| Allocates memory for an HTTP/1.1 protocol. |
| |
| The protocol self destructs when the `on_close` callback is called. |
| |
| To free the protocol manually, it's possible to call it's `on_close` callback. |
| */ |
| protocol_s *http1_alloc(intptr_t fd, http_settings_s *settings); |
| |
| /** |
| Listens for incoming HTTP/1.1 connections on the specified posrt and address, |
| implementing the requested settings. |
| */ |
| int http1_listen(const char *port, const char *address, |
| http_settings_s settings); |
| |
| #define http1_listen(port, address, ...) \ |
| http1_listen((port), (address), (http_settings_s){__VA_ARGS__}) |
| |
| #endif |
| |
| /** Should be defined by `http.h` ... if it was removed, use a lower value. */ |
| #ifndef HTTP_BUSY_UNLESS_HAS_FDS |
| #define HTTP_BUSY_UNLESS_HAS_FDS 8 |
| #endif |