GNU libmicrohttpd  0.9.29
MHD_Daemon Struct Reference

#include </builddir/build/BUILD/libmicrohttpd-0.9.46/src/microhttpd/internal.h>

Data Fields

MHD_AccessHandlerCallback default_handler
 
void * default_handler_cls
 
struct MHD_Connectionconnections_head
 
struct MHD_Connectionconnections_tail
 
struct MHD_Connectionsuspended_connections_head
 
struct MHD_Connectionsuspended_connections_tail
 
struct MHD_Connectioncleanup_head
 
struct MHD_Connectioncleanup_tail
 
struct MHD_Connectionnormal_timeout_head
 
struct MHD_Connectionnormal_timeout_tail
 
struct MHD_Connectionmanual_timeout_head
 
struct MHD_Connectionmanual_timeout_tail
 
MHD_AcceptPolicyCallback apc
 
void * apc_cls
 
MHD_RequestCompletedCallback notify_completed
 
void * notify_completed_cls
 
MHD_NotifyConnectionCallback notify_connection
 
void * notify_connection_cls
 
LogCallback uri_log_callback
 
void * uri_log_callback_cls
 
UnescapeCallback unescape_callback
 
void * unescape_callback_cls
 
struct MHD_Daemonmaster
 
struct MHD_Daemonworker_pool
 
void * per_ip_connection_count
 
size_t pool_size
 
size_t pool_increment
 
size_t thread_stack_size
 
unsigned int worker_pool_size
 
MHD_thread_handle_ pid
 
MHD_mutex_ per_ip_connection_mutex
 
MHD_mutex_ cleanup_connection_mutex
 
MHD_socket socket_fd
 
int listening_address_reuse
 
MHD_pipe wpipe [2]
 
int shutdown
 
int resuming
 
unsigned int connections
 
unsigned int connection_limit
 
unsigned int connection_timeout
 
unsigned int per_ip_connection_limit
 
enum MHD_FLAG options
 
uint16_t port
 

Detailed Description

State kept for each MHD daemon. All connections are kept in two doubly-linked lists. The first one reflects the state of the connection in terms of what operations we are waiting for (read, write, locally blocked, cleanup) whereas the second is about its timeout state (default or custom).

Definition at line 913 of file internal.h.

Field Documentation

MHD_AcceptPolicyCallback MHD_Daemon::apc

Function to call to check if we should accept or reject an incoming request. May be NULL.

Definition at line 1005 of file internal.h.

Referenced by internal_add_connection(), and MHD_start_daemon_va().

void* MHD_Daemon::apc_cls

Closure argument to apc.

Definition at line 1010 of file internal.h.

Referenced by internal_add_connection(), and MHD_start_daemon_va().

MHD_mutex_ MHD_Daemon::cleanup_connection_mutex
struct MHD_Connection* MHD_Daemon::cleanup_head

Head of doubly-linked list of connections to clean up.

Definition at line 949 of file internal.h.

Referenced by cleanup_connection(), close_connection(), and MHD_cleanup_connections().

struct MHD_Connection* MHD_Daemon::cleanup_tail

Tail of doubly-linked list of connections to clean up.

Definition at line 954 of file internal.h.

Referenced by cleanup_connection(), close_connection(), and MHD_cleanup_connections().

unsigned int MHD_Daemon::connection_limit

Limit on the number of parallel connections.

Definition at line 1175 of file internal.h.

Referenced by internal_add_connection(), MHD_poll(), MHD_select(), MHD_start_daemon_va(), and parse_options_va().

unsigned int MHD_Daemon::connection_timeout
unsigned int MHD_Daemon::connections

Number of active parallel connections.

Definition at line 1170 of file internal.h.

Referenced by internal_add_connection(), MHD_cleanup_connections(), MHD_get_daemon_info(), MHD_poll(), MHD_select(), and MHD_start_daemon_va().

struct MHD_Connection* MHD_Daemon::connections_head
struct MHD_Connection* MHD_Daemon::connections_tail

Tail of doubly-linked list of our current, active connections.

Definition at line 934 of file internal.h.

Referenced by cleanup_connection(), close_connection(), internal_add_connection(), MHD_suspend_connection(), and resume_suspended_connections().

MHD_AccessHandlerCallback MHD_Daemon::default_handler

Callback function for all requests.

Definition at line 919 of file internal.h.

Referenced by call_connection_handler(), MHD_start_daemon_va(), and process_request_body().

void* MHD_Daemon::default_handler_cls

Closure argument to default_handler.

Definition at line 924 of file internal.h.

Referenced by call_connection_handler(), MHD_start_daemon_va(), and process_request_body().

int MHD_Daemon::listening_address_reuse

Whether to allow/disallow/ignore reuse of listening address. The semantics is the following: 0: ignore (user did not ask for neither allow/disallow, use SO_REUSEADDR) >0: allow (use SO_REUSEPORT on most platforms, SO_REUSEADDR on Windows) <0: disallow (mostly no action, SO_EXCLUSIVEADDRUSE on Windows)

Definition at line 1133 of file internal.h.

Referenced by MHD_start_daemon_va(), and parse_options_va().

struct MHD_Connection* MHD_Daemon::manual_timeout_head

Head of the XDLL of ALL connections with a non-default/custom timeout, unsorted. MHD will do a O(n) scan over this list to determine the current timeout.

Definition at line 993 of file internal.h.

Referenced by cleanup_connection(), close_connection(), MHD_get_timeout(), MHD_poll(), MHD_set_connection_option(), MHD_suspend_connection(), and resume_suspended_connections().

struct MHD_Connection* MHD_Daemon::manual_timeout_tail

Tail of the XDLL of ALL connections with a non-default/custom timeout, unsorted.

Definition at line 999 of file internal.h.

Referenced by cleanup_connection(), close_connection(), MHD_set_connection_option(), MHD_suspend_connection(), and resume_suspended_connections().

struct MHD_Daemon* MHD_Daemon::master

Pointer to master daemon (NULL if this is the master)

Definition at line 1074 of file internal.h.

Referenced by MHD_get_master(), and MHD_start_daemon_va().

struct MHD_Connection* MHD_Daemon::normal_timeout_head

Head of the XDLL of ALL connections with a default ('normal') timeout, sorted by timeout (earliest at the tail, most recently used connection at the head). MHD can just look at the tail of this list to determine the timeout for all of its elements; whenever there is an event of a connection, the connection is moved back to the tail of the list.

All connections by default start in this list; if a custom timeout that does not match connection_timeout is set, they are moved to the manual_timeout_head-XDLL.

Definition at line 980 of file internal.h.

Referenced by cleanup_connection(), close_connection(), internal_add_connection(), MHD_get_timeout(), MHD_set_connection_option(), MHD_suspend_connection(), resume_suspended_connections(), and update_last_activity().

struct MHD_Connection* MHD_Daemon::normal_timeout_tail

Tail of the XDLL of ALL connections with a default timeout, sorted by timeout (earliest timeout at the tail).

Definition at line 986 of file internal.h.

Referenced by cleanup_connection(), close_connection(), internal_add_connection(), MHD_poll(), MHD_set_connection_option(), MHD_suspend_connection(), resume_suspended_connections(), and update_last_activity().

MHD_RequestCompletedCallback MHD_Daemon::notify_completed

Function to call when we are done processing a particular request. May be NULL.

Definition at line 1016 of file internal.h.

Referenced by MHD_connection_close_(), MHD_connection_handle_idle(), and parse_options_va().

void* MHD_Daemon::notify_completed_cls

Closure argument to notify_completed.

Definition at line 1021 of file internal.h.

Referenced by MHD_connection_close_(), MHD_connection_handle_idle(), and parse_options_va().

MHD_NotifyConnectionCallback MHD_Daemon::notify_connection

Function to call when we are starting/stopping a connection. May be NULL.

Definition at line 1027 of file internal.h.

Referenced by internal_add_connection(), MHD_cleanup_connections(), MHD_handle_connection(), and parse_options_va().

void* MHD_Daemon::notify_connection_cls

Closure argument to notify_connection.

Definition at line 1032 of file internal.h.

Referenced by internal_add_connection(), MHD_cleanup_connections(), MHD_handle_connection(), and parse_options_va().

void* MHD_Daemon::per_ip_connection_count

Table storing number of connections per IP

Definition at line 1084 of file internal.h.

Referenced by MHD_ip_limit_add(), and MHD_ip_limit_del().

unsigned int MHD_Daemon::per_ip_connection_limit

Maximum number of connections per IP, or 0 for unlimited.

Definition at line 1187 of file internal.h.

Referenced by MHD_ip_limit_add(), MHD_ip_limit_del(), and parse_options_va().

MHD_mutex_ MHD_Daemon::per_ip_connection_mutex

Mutex for per-IP connection counts.

Definition at line 1114 of file internal.h.

Referenced by MHD_ip_count_lock(), MHD_ip_count_unlock(), MHD_start_daemon_va(), and MHD_stop_daemon().

MHD_thread_handle_ MHD_Daemon::pid

The select thread handle (if we have internal select)

Definition at line 1109 of file internal.h.

Referenced by MHD_start_daemon_va(), and MHD_stop_daemon().

size_t MHD_Daemon::pool_increment

Increment for growth of the per-connection memory pools.

Definition at line 1094 of file internal.h.

Referenced by MHD_connection_handle_read(), MHD_start_daemon_va(), and parse_options_va().

size_t MHD_Daemon::pool_size

Size of the per-connection memory pools.

Definition at line 1089 of file internal.h.

Referenced by internal_add_connection(), MHD_connection_handle_idle(), MHD_start_daemon_va(), parse_options_va(), try_grow_read_buffer(), and try_ready_chunked_body().

uint16_t MHD_Daemon::port

Listen port.

Definition at line 1197 of file internal.h.

Referenced by MHD_start_daemon_va().

int MHD_Daemon::resuming

Definition at line 1165 of file internal.h.

Referenced by MHD_resume_connection(), and resume_suspended_connections().

int MHD_Daemon::shutdown
struct MHD_Connection* MHD_Daemon::suspended_connections_head

Head of doubly-linked list of our current but suspended connections.

Definition at line 939 of file internal.h.

Referenced by cleanup_connection(), close_all_connections(), MHD_suspend_connection(), and resume_suspended_connections().

struct MHD_Connection* MHD_Daemon::suspended_connections_tail

Tail of doubly-linked list of our current but suspended connections.

Definition at line 944 of file internal.h.

Referenced by cleanup_connection(), MHD_suspend_connection(), and resume_suspended_connections().

size_t MHD_Daemon::thread_stack_size

Size of threads created by MHD.

Definition at line 1099 of file internal.h.

Referenced by create_thread(), and parse_options_va().

UnescapeCallback MHD_Daemon::unescape_callback

Function to call when we unescape escape sequences.

Definition at line 1051 of file internal.h.

Referenced by MHD_digest_auth_check(), MHD_parse_arguments_(), MHD_start_daemon_va(), parse_initial_message_line(), and parse_options_va().

void* MHD_Daemon::unescape_callback_cls

Closure for unescape_callback.

Definition at line 1056 of file internal.h.

Referenced by MHD_digest_auth_check(), MHD_parse_arguments_(), parse_initial_message_line(), and parse_options_va().

LogCallback MHD_Daemon::uri_log_callback

Function to call with the full URI at the beginning of request processing. May be NULL.

Returns the initial pointer to internal state kept by the client for the request.

Definition at line 1041 of file internal.h.

Referenced by parse_initial_message_line(), and parse_options_va().

void* MHD_Daemon::uri_log_callback_cls

Closure argument to uri_log_callback.

Definition at line 1046 of file internal.h.

Referenced by parse_initial_message_line(), and parse_options_va().

struct MHD_Daemon* MHD_Daemon::worker_pool

Worker daemons (one per thread)

Definition at line 1079 of file internal.h.

Referenced by internal_add_connection(), MHD_get_daemon_info(), MHD_quiesce_daemon(), MHD_start_daemon_va(), and MHD_stop_daemon().

unsigned int MHD_Daemon::worker_pool_size
MHD_pipe MHD_Daemon::wpipe[2]

Pipe we use to signal shutdown, unless 'HAVE_LISTEN_SHUTDOWN' is defined AND we have a listen socket (which we can then 'shutdown' to stop listening). MHD can be build with usage of socketpair instead of pipe (forced on W32).

Definition at line 1155 of file internal.h.

Referenced by close_all_connections(), create_socket(), internal_add_connection(), MHD_handle_connection(), MHD_poll(), MHD_quiesce_daemon(), MHD_resume_connection(), MHD_run_from_select(), MHD_select(), MHD_start_daemon_va(), and MHD_stop_daemon().


The documentation for this struct was generated from the following file: