GNU libmicrohttpd
0.9.72
|
internal shared structures More...
#include "mhd_options.h"
#include "platform.h"
#include "microhttpd.h"
#include "mhd_assert.h"
#include "mhd_locks.h"
#include "mhd_sockets.h"
#include "mhd_itc_types.h"
Go to the source code of this file.
Data Structures | |
struct | MHD_NonceNc |
struct | MHD_HTTP_Header |
struct | MHD_Response |
struct | MHD_Connection |
struct | MHD_Daemon |
Macros | |
#define | MHD_PANIC(msg) |
#define | _MHD_MACRO_NO 0 |
#define | _MHD_MACRO_YES 1 |
#define | MHD_fd_close_chk_(fd) |
#define | _MHD_DEBUG_CONNECT _MHD_MACRO_NO |
#define | _MHD_DEBUG_SEND_DATA _MHD_MACRO_NO |
#define | _MHD_DEBUG_CLOSE _MHD_MACRO_NO |
#define | MHD_MAX(a, b) (((a)<(b)) ? (b) : (a)) |
#define | MHD_MIN(a, b) (((a)<(b)) ? (a) : (b)) |
#define | MHD_BUF_INC_SIZE 1024 |
#define | BUILTIN_NOT_REACHED |
#define | MHD_STATICSTR_LEN_(macro) (sizeof(macro) / sizeof(char) - 1) |
#define | MHD_TEST_ALLOW_SUSPEND_RESUME 8192 |
#define | MAX_NONCE_LENGTH 129 |
#define | DEBUG_STATES MHD_NO |
#define | DLL_insert(head, tail, element) |
#define | DLL_remove(head, tail, element) |
#define | XDLL_insert(head, tail, element) |
#define | XDLL_remove(head, tail, element) |
#define | EDLL_insert(head, tail, element) |
#define | EDLL_remove(head, tail, element) |
#define | MHD_check_response_header_s_token_ci(r, k, tkn) |
Typedefs | |
typedef ssize_t(* | ReceiveCallback) (struct MHD_Connection *conn, void *write_to, size_t max_bytes) |
typedef ssize_t(* | TransmitCallback) (struct MHD_Connection *conn, const void *read_from, size_t max_bytes) |
typedef void *(* | LogCallback) (void *cls, const char *uri, struct MHD_Connection *con) |
typedef size_t(* | UnescapeCallback) (void *cls, struct MHD_Connection *conn, char *uri) |
typedef enum MHD_Result(* | MHD_ArgumentIterator_) (struct MHD_Connection *connection, const char *key, size_t key_size, const char *value, size_t value_size, enum MHD_ValueKind kind) |
Functions | |
void | MHD_unescape_plus (char *arg) |
enum MHD_Result | MHD_parse_arguments_ (struct MHD_Connection *connection, enum MHD_ValueKind kind, char *args, MHD_ArgumentIterator_ cb, unsigned int *num_headers) |
bool | MHD_check_response_header_token_ci (const struct MHD_Response *response, const char *key, size_t key_len, const char *token, size_t token_len) |
void | internal_suspend_connection_ (struct MHD_Connection *connection) |
Variables | |
MHD_PanicCallback | mhd_panic |
void * | mhd_panic_cls |
internal shared structures
Definition in file internal.h.
#define _MHD_DEBUG_CLOSE _MHD_MACRO_NO |
Add extra debug messages with reasons for closing connections (non-error reasons).
Definition at line 124 of file internal.h.
#define _MHD_DEBUG_CONNECT _MHD_MACRO_NO |
Print extra messages when establishing connections? (only adds non-error messages).
Definition at line 109 of file internal.h.
#define _MHD_DEBUG_SEND_DATA _MHD_MACRO_NO |
Should all data send be printed to stderr?
Definition at line 116 of file internal.h.
#define _MHD_MACRO_NO 0 |
"Negative answer"/"false" for use in macros, meaningful for precompiler
Definition at line 82 of file internal.h.
#define _MHD_MACRO_YES 1 |
"Positive answer"/"true" for use in macros, meaningful for precompiler
Definition at line 88 of file internal.h.
#define BUILTIN_NOT_REACHED |
Definition at line 158 of file internal.h.
#define DEBUG_STATES MHD_NO |
Should all state transitions be printed to stderr?
Definition at line 609 of file internal.h.
#define DLL_insert | ( | head, | |
tail, | |||
element | |||
) |
Insert an element at the head of a DLL. Assumes that head, tail and element are structs with prev and next fields.
head | pointer to the head of the DLL |
tail | pointer to the tail of the DLL |
element | element to insert |
Definition at line 1864 of file internal.h.
#define DLL_remove | ( | head, | |
tail, | |||
element | |||
) |
Remove an element from a DLL. Assumes that head, tail and element are structs with prev and next fields.
head | pointer to the head of the DLL |
tail | pointer to the tail of the DLL |
element | element to remove |
Definition at line 1885 of file internal.h.
#define EDLL_insert | ( | head, | |
tail, | |||
element | |||
) |
Insert an element at the head of a EDLL. Assumes that head, tail and element are structs with prevE and nextE fields.
head | pointer to the head of the EDLL |
tail | pointer to the tail of the EDLL |
element | element to insert |
Definition at line 1952 of file internal.h.
#define EDLL_remove | ( | head, | |
tail, | |||
element | |||
) |
Remove an element from a EDLL. Assumes that head, tail and element are structs with prevE and nextE fields.
head | pointer to the head of the EDLL |
tail | pointer to the tail of the EDLL |
element | element to remove |
Definition at line 1971 of file internal.h.
#define MAX_NONCE_LENGTH 129 |
Maximum length of a nonce in digest authentication. 64(SHA-256 Hex) + 8(Timestamp Hex) + 1(NULL); hence 73 should suffice, but Opera (already) takes more (see Mantis #1633), so we've increased the value to support something longer...
Definition at line 265 of file internal.h.
#define MHD_BUF_INC_SIZE 1024 |
Minimum reasonable size by which MHD tries to increment read/write buffers. We usually begin with half the available pool space for the IO-buffer, but if absolutely needed we additively grow by the number of bytes given here (up to – theoretically – the full pool space).
Definition at line 138 of file internal.h.
#define MHD_check_response_header_s_token_ci | ( | r, | |
k, | |||
tkn | |||
) |
Check whether response header contains particular static tkn.
Token could be surrounded by spaces and tabs and delimited by comma. Case-insensitive match used for header names and tokens.
r | the response to query |
k | header name |
tkn | the static string of token to find |
Definition at line 2071 of file internal.h.
#define MHD_fd_close_chk_ | ( | fd | ) |
Close FD and abort execution if error is detected.
fd | the FD to close |
Definition at line 94 of file internal.h.
#define MHD_MAX | ( | a, | |
b | |||
) | (((a)<(b)) ? (b) : (a)) |
Definition at line 127 of file internal.h.
#define MHD_MIN | ( | a, | |
b | |||
) | (((a)<(b)) ? (a) : (b)) |
Definition at line 128 of file internal.h.
#define MHD_PANIC | ( | msg | ) |
Trigger 'panic' action based on fatal errors.
msg | error message (const char *) |
Definition at line 66 of file internal.h.
#define MHD_STATICSTR_LEN_ | ( | macro | ) | (sizeof(macro) / sizeof(char) - 1) |
Determine length of static string / macro strings at compile time.
Definition at line 165 of file internal.h.
#define MHD_TEST_ALLOW_SUSPEND_RESUME 8192 |
Additional test value for enum MHD_FLAG to check only for MHD_ALLOW_SUSPEND_RESUME and NOT for MHD_USE_ITC.
Definition at line 257 of file internal.h.
#define XDLL_insert | ( | head, | |
tail, | |||
element | |||
) |
Insert an element at the head of a XDLL. Assumes that head, tail and element are structs with prevX and nextX fields.
head | pointer to the head of the XDLL |
tail | pointer to the tail of the XDLL |
element | element to insert |
Definition at line 1908 of file internal.h.
#define XDLL_remove | ( | head, | |
tail, | |||
element | |||
) |
Remove an element from a XDLL. Assumes that head, tail and element are structs with prevX and nextX fields.
head | pointer to the head of the XDLL |
tail | pointer to the tail of the XDLL |
element | element to remove |
Definition at line 1929 of file internal.h.
typedef void*(* LogCallback) (void *cls, const char *uri, struct MHD_Connection *con) |
Signature of function called to log URI accesses.
cls | closure |
uri | uri being accessed |
con | connection handle |
Definition at line 1284 of file internal.h.
typedef enum MHD_Result(* MHD_ArgumentIterator_) (struct MHD_Connection *connection, const char *key, size_t key_size, const char *value, size_t value_size, enum MHD_ValueKind kind) |
Callback invoked when iterating over key / value argument pairs during parsing.
connection | context of the iteration |
key | 0-terminated key string, never NULL |
key_size | number of bytes in key |
value | 0-terminated binary data, may include binary zeros, may be NULL |
value_size | number of bytes in value |
kind | origin of the key-value pair |
Definition at line 1990 of file internal.h.
typedef ssize_t(* ReceiveCallback) (struct MHD_Connection *conn, void *write_to, size_t max_bytes) |
Function to receive plaintext data.
conn | the connection struct |
write_to | where to write received data |
max_bytes | maximum number of bytes to receive |
Definition at line 628 of file internal.h.
typedef ssize_t(* TransmitCallback) (struct MHD_Connection *conn, const void *read_from, size_t max_bytes) |
Function to transmit plaintext data.
conn | the connection struct |
read_from | where to read data to transmit |
max_bytes | maximum number of bytes to transmit |
Definition at line 642 of file internal.h.
typedef size_t(* UnescapeCallback) (void *cls, struct MHD_Connection *conn, char *uri) |
Signature of function called to unescape URIs. See also MHD_http_unescape().
cls | closure |
conn | connection handle |
uri | 0-terminated string to unescape (should be updated) |
Definition at line 1298 of file internal.h.
enum MHD_CONNECTION_STATE |
States in a state machine for a connection.
The main transitions are any-state to MHD_CONNECTION_CLOSED, any state to state+1, MHD_CONNECTION_FOOTERS_SENT to MHD_CONNECTION_INIT. MHD_CONNECTION_CLOSED is the terminal state and MHD_CONNECTION_INIT the initial state.
Note that transitions for reading happen only after the input has been processed; transitions for writing happen after the respective data has been put into the write buffer (the write does not have to be completed yet). A transition to MHD_CONNECTION_CLOSED or MHD_CONNECTION_INIT requires the write to be complete.
Definition at line 471 of file internal.h.
What is this connection waiting for?
Definition at line 229 of file internal.h.
enum MHD_ConnKeepAlive |
Ability to use same connection for next request
Definition at line 651 of file internal.h.
enum MHD_EpollState |
State of the socket with respect to epoll (bitmask).
Definition at line 183 of file internal.h.
enum MHD_TLS_CONN_STATE |
States of TLS transport layer.
Definition at line 592 of file internal.h.
enum MHD_tristate |
Tri-state on/off/unknown
Enumerator | |
---|---|
_MHD_UNKNOWN | State is not yet checked nor set |
_MHD_OFF | State is "off" / "disabled" |
_MHD_ON | State is "on" / "enabled" |
Definition at line 172 of file internal.h.
void internal_suspend_connection_ | ( | struct MHD_Connection * | connection | ) |
Internal version of MHD_suspend_connection().
connection | the connection to suspend |
Internal version of MHD_suspend_connection().
connection | the connection to suspend |
Definition at line 2999 of file daemon.c.
References _, MHD_Daemon::cleanup_connection_mutex, MHD_Connection::connection_timeout, MHD_Daemon::connection_timeout, MHD_Daemon::connections_head, MHD_Daemon::connections_tail, MHD_Connection::daemon, DLL_insert, DLL_remove, EDLL_remove, MHD_Daemon::manual_timeout_head, MHD_Daemon::manual_timeout_tail, mhd_assert, MHD_EPOLL_STATE_IN_EPOLL_SET, MHD_EPOLL_STATE_IN_EREADY_EDLL, MHD_EPOLL_STATE_SUSPENDED, MHD_mutex_lock_chk_, MHD_mutex_unlock_chk_, MHD_PANIC, MHD_USE_EPOLL, MHD_USE_INTERNAL_POLLING_THREAD, MHD_USE_THREAD_PER_CONNECTION, MHD_Daemon::normal_timeout_head, MHD_Daemon::normal_timeout_tail, NULL, MHD_Daemon::options, MHD_Daemon::pid, MHD_Connection::resuming, MHD_Connection::socket_fd, MHD_Connection::suspended, MHD_Daemon::suspended_connections_head, MHD_Daemon::suspended_connections_tail, and XDLL_remove.
Referenced by MHD_suspend_connection().
bool MHD_check_response_header_token_ci | ( | const struct MHD_Response * | response, |
const char * | key, | ||
size_t | key_len, | ||
const char * | token, | ||
size_t | token_len | ||
) |
Check whether response header contains particular token.
Token could be surrounded by spaces and tabs and delimited by comma. Case-insensitive match used for header names and tokens.
response | the response to query |
key | header name |
key_len | the length of key, not including optional terminating null-character. |
token | the token to find |
token_len | the length of token, not including optional terminating null-character. |
Definition at line 323 of file response.c.
References MHD_Response::first_header, MHD_HTTP_Header::header, MHD_HTTP_Header::header_size, MHD_HTTP_Header::kind, mhd_assert, MHD_HEADER_KIND, MHD_str_equal_caseless_bin_n_(), MHD_str_has_token_caseless_(), MHD_HTTP_Header::next, NULL, and MHD_HTTP_Header::value.
enum MHD_Result MHD_parse_arguments_ | ( | struct MHD_Connection * | connection, |
enum MHD_ValueKind | kind, | ||
char * | args, | ||
MHD_ArgumentIterator_ | cb, | ||
unsigned int * | num_headers | ||
) |
Parse and unescape the arguments given by the client as part of the HTTP request URI.
kind | header kind to pass to cb | |
connection | connection to add headers to | |
[in,out] | args | argument URI string (after "?" in URI), clobbered in the process! |
cb | function to call on each key-value pair found | |
[out] | num_headers | set to the number of headers found |
Definition at line 140 of file internal.c.
void MHD_unescape_plus | ( | char * | arg | ) |
Convert all occurrences of '+' to ' '.
arg | string that is modified (in place), must be 0-terminated |
Definition at line 123 of file internal.c.
References NULL.
Referenced by MHD_parse_arguments_(), post_process_urlencoded(), and process_value().
|
extern |
Handler for fatal errors.
Definition at line 31 of file panic.c.
Referenced by MHD_init(), and MHD_set_panic_func().
|
extern |
Closure argument for "mhd_panic".
Closure argument for mhd_panic.
Definition at line 36 of file panic.c.
Referenced by MHD_set_panic_func().