|
Pharos 0.7.23
Modern Web Framework & Web App Hosting Service.
|
Parses HTTP requests from native connections into method, target, header, cookie, and body fields. More...
#include "native_http_request.h"#include "native_spawn_temp_body.h"#include "native_support.h"#include <stdlib.h>#include <string.h>#include <unistd.h>#include <strings.h>#include <sys/socket.h>Go to the source code of this file.
Macros | |
| #define | PHAROS_HTTP_MAX_HEADER_BYTES (16U * 1024U) |
| #define | PHAROS_HTTP_MAX_REQUEST_LINE_BYTES (8U * 1024U) |
| #define | PHAROS_HTTP_MAX_HEADER_LINE_BYTES (4U * 1024U) |
| #define | PHAROS_HTTP_MAX_HEADER_COUNT 100U |
| #define | PHAROS_HTTP_MAX_BODY_BYTES (1U * 1024U * 1024U) |
| #define | PHAROS_HTTP_MAX_MULTIPART_BODY_BYTES (16U * 1024U * 1024U) |
| #define | native_http_request_strdup strdup |
Functions | |
| void | free_http_request_native (HttpRequest *request) |
| Releases heap-owned fields in a parsed HTTP request record. | |
| static int | parse_content_length_header_native (const char *header_value, long *content_length) |
| static size_t | native_http_body_limit (int is_multipart) |
| static int | contains_chunked_transfer_native (const char *header_value) |
| static int | native_write_temp_body_chunk (int temp_fd, const char *data, size_t data_len) |
| static int | native_spool_request_body_to_temp_file (Buffer *buffer, size_t body_offset, long content_length, NativeConnection *connection, char **body_file_path_out) |
| static void | apply_known_header_native (HttpRequest *request, const char *header_name, const char *header_value, long *content_length, int *chunked_transfer) |
| int | parse_http_request_native (NativeConnection *connection, HttpRequest *request) |
| Parses an HTTP request from a native connection into a request record. | |
Parses HTTP requests from native connections into method, target, header, cookie, and body fields.
Definition in file native_http_request.c.
| #define native_http_request_strdup strdup |
Definition at line 30 of file native_http_request.c.
Referenced by apply_known_header_native(), native_spool_request_body_to_temp_file(), and parse_http_request_native().
| #define PHAROS_HTTP_MAX_BODY_BYTES (1U * 1024U * 1024U) |
Definition at line 21 of file native_http_request.c.
Referenced by native_http_body_limit().
| #define PHAROS_HTTP_MAX_HEADER_BYTES (16U * 1024U) |
Definition at line 17 of file native_http_request.c.
Referenced by parse_http_request_native().
| #define PHAROS_HTTP_MAX_HEADER_COUNT 100U |
Definition at line 20 of file native_http_request.c.
Referenced by parse_http_request_native().
| #define PHAROS_HTTP_MAX_HEADER_LINE_BYTES (4U * 1024U) |
Definition at line 19 of file native_http_request.c.
Referenced by parse_http_request_native().
| #define PHAROS_HTTP_MAX_MULTIPART_BODY_BYTES (16U * 1024U * 1024U) |
Definition at line 22 of file native_http_request.c.
Referenced by native_http_body_limit().
| #define PHAROS_HTTP_MAX_REQUEST_LINE_BYTES (8U * 1024U) |
Definition at line 18 of file native_http_request.c.
Referenced by parse_http_request_native().
|
static |
Definition at line 182 of file native_http_request.c.
References contains_chunked_transfer_native(), HttpRequest::content_type, HttpRequest::cookie, native_http_request_strdup, and parse_content_length_header_native().
Referenced by parse_http_request_native().
|
static |
Definition at line 71 of file native_http_request.c.
Referenced by apply_known_header_native().
| void free_http_request_native | ( | HttpRequest * | request | ) |
Releases heap-owned fields in a parsed HTTP request record.
| request | Request record to clear. |
Definition at line 33 of file native_http_request.c.
References HttpRequest::body, HttpRequest::body_file_path, cleanup_native_temp_body_file(), HttpRequest::content_type, HttpRequest::cookie, HttpRequest::headers, HttpRequest::method, and HttpRequest::target.
Referenced by free_worker_context_native(), parse_http_request_native(), serve_runtime_stack_native(), serve_single_app(), and serve_static_root().
|
static |
Definition at line 67 of file native_http_request.c.
References PHAROS_HTTP_MAX_BODY_BYTES, and PHAROS_HTTP_MAX_MULTIPART_BODY_BYTES.
Referenced by parse_http_request_native().
|
static |
Definition at line 106 of file native_http_request.c.
References Buffer::data, Buffer::len, native_connection_read(), native_http_request_strdup, and native_write_temp_body_chunk().
Referenced by parse_http_request_native().
|
static |
Definition at line 91 of file native_http_request.c.
Referenced by native_spool_request_body_to_temp_file().
|
static |
Definition at line 47 of file native_http_request.c.
Referenced by apply_known_header_native().
| int parse_http_request_native | ( | NativeConnection * | connection, |
| HttpRequest * | request ) |
Parses an HTTP request from a native connection into a request record.
| connection | Connection supplying request bytes. |
| request | Destination request record to populate. |
Definition at line 226 of file native_http_request.c.
References apply_known_header_native(), HttpRequest::body, HttpRequest::body_file_path, HttpRequest::body_len, buffer_append(), buffer_free(), buffer_init(), HttpRequest::content_type, HttpRequest::cookie, Buffer::data, dup_range(), free_http_request_native(), HttpRequest::headers, HttpRequest::is_multipart, Buffer::len, HttpRequest::method, native_connection_read(), native_http_body_limit(), native_http_request_strdup, native_spool_request_body_to_temp_file(), PHAROS_HTTP_MAX_HEADER_BYTES, PHAROS_HTTP_MAX_HEADER_COUNT, PHAROS_HTTP_MAX_HEADER_LINE_BYTES, PHAROS_HTTP_MAX_REQUEST_LINE_BYTES, HttpRequest::target, and trim_in_place().
Referenced by accept_http_request_native().