GNU libmicrohttpd  0.9.29
MHD_Connection Struct Reference

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

Data Fields

struct MHD_Connectionnext
 
struct MHD_Connectionprev
 
struct MHD_ConnectionnextX
 
struct MHD_ConnectionprevX
 
struct MHD_Daemondaemon
 
struct MHD_HTTP_Headerheaders_received
 
struct MHD_HTTP_Headerheaders_received_tail
 
struct MHD_Responseresponse
 
struct MemoryPool * pool
 
void * client_context
 
void * socket_context
 
char * method
 
const char * url
 
char * version
 
char * read_buffer
 
char * write_buffer
 
char * last
 
char * colon
 
struct sockaddr * addr
 
MHD_thread_handle_ pid
 
size_t read_buffer_size
 
size_t read_buffer_offset
 
size_t write_buffer_size
 
size_t write_buffer_send_offset
 
size_t write_buffer_append_offset
 
uint64_t remaining_upload_size
 
uint64_t response_write_position
 
size_t continue_message_write_offset
 
socklen_t addr_len
 
time_t last_activity
 
unsigned int connection_timeout
 
int client_aware
 
MHD_socket socket_fd
 
int read_closed
 
int thread_joined
 
int in_idle
 
enum MHD_CONNECTION_STATE state
 
enum MHD_ConnectionEventLoopInfo event_loop_info
 
unsigned int responseCode
 
int response_unready
 
int have_chunked_upload
 
size_t current_chunk_size
 
size_t current_chunk_offset
 
int(* read_handler )(struct MHD_Connection *connection)
 
int(* write_handler )(struct MHD_Connection *connection)
 
int(* idle_handler )(struct MHD_Connection *connection)
 
ReceiveCallback recv_cls
 
TransmitCallback send_cls
 
struct MHD_UpgradeResponseHandleurh
 
int suspended
 
int resuming
 

Detailed Description

State kept for each HTTP request.

Definition at line 559 of file internal.h.

Field Documentation

◆ addr

struct sockaddr* MHD_Connection::addr

Foreign address (of length addr_len). MALLOCED (not in pool!).

Definition at line 696 of file internal.h.

Referenced by internal_add_connection(), MHD_cleanup_connections(), and MHD_get_connection_info().

◆ addr_len

socklen_t MHD_Connection::addr_len

Length of the foreign address.

Definition at line 756 of file internal.h.

Referenced by internal_add_connection(), and MHD_cleanup_connections().

◆ client_aware

int MHD_Connection::client_aware

Did we ever call the "default_handler" on this connection? (this flag will determine if we call the MHD_OPTION_NOTIFY_COMPLETED handler when the connection closes down).

Definition at line 775 of file internal.h.

Referenced by call_connection_handler(), MHD_connection_close_(), MHD_connection_handle_idle(), parse_initial_message_line(), process_request_body(), and thread_main_handle_connection().

◆ client_context

void* MHD_Connection::client_context

We allow the main application to associate some pointer with the HTTP request, which is passed to each MHD_AccessHandlerCallback and some other API calls. Here is where we store it. (MHD does not know or care what it is).

Definition at line 634 of file internal.h.

Referenced by call_connection_handler(), MHD_connection_close_(), MHD_connection_handle_idle(), MHD_response_execute_upgrade_(), parse_initial_message_line(), process_request_body(), and thread_main_handle_connection().

◆ colon

char* MHD_Connection::colon

Position after the colon on the last incomplete header line during parsing of headers. Allocated in pool. Only valid if state is either MHD_CONNECTION_HEADER_PART_RECEIVED or MHD_CONNECTION_FOOTER_PART_RECEIVED.

Definition at line 690 of file internal.h.

Referenced by process_broken_line(), and process_header_line().

◆ connection_timeout

unsigned int MHD_Connection::connection_timeout

◆ continue_message_write_offset

size_t MHD_Connection::continue_message_write_offset

Position in the 100 CONTINUE message that we need to send when receiving http 1.1 requests.

Definition at line 751 of file internal.h.

Referenced by MHD_connection_handle_idle(), MHD_connection_handle_write(), and need_100_continue().

◆ current_chunk_offset

size_t MHD_Connection::current_chunk_offset

If we are receiving with chunked encoding, where are we currently with respect to the current chunk (at what offset / position)?

Definition at line 856 of file internal.h.

Referenced by process_request_body().

◆ current_chunk_size

size_t MHD_Connection::current_chunk_size

If we are receiving with chunked encoding, where are we right now? Set to 0 if we are waiting to receive the chunk size; otherwise, this is the size of the current chunk. A value of zero is also used when we're at the end of the chunks.

Definition at line 850 of file internal.h.

Referenced by process_request_body().

◆ daemon

◆ event_loop_info

◆ have_chunked_upload

int MHD_Connection::have_chunked_upload

Are we receiving with chunked encoding? This will be set to MHD_YES after we parse the headers and are processing the body with chunks. After we are done with the body and we are processing the footers; once the footers are also done, this will be set to MHD_NO again (before the final call to the handler).

Definition at line 842 of file internal.h.

Referenced by build_header_response(), MHD_connection_handle_idle(), parse_connection_headers(), and process_request_body().

◆ headers_received

struct MHD_HTTP_Header* MHD_Connection::headers_received

◆ headers_received_tail

struct MHD_HTTP_Header* MHD_Connection::headers_received_tail

Tail of linked list of parsed headers.

Definition at line 611 of file internal.h.

Referenced by MHD_connection_handle_idle(), and MHD_set_connection_value().

◆ idle_handler

int(* MHD_Connection::idle_handler) (struct MHD_Connection *connection)

Handler used for processing idle connection operations

Definition at line 871 of file internal.h.

Referenced by call_handlers(), MHD_poll(), MHD_set_http_callbacks_(), MHD_set_https_callbacks(), MHD_upgrade_action(), and thread_main_handle_connection().

◆ in_idle

int MHD_Connection::in_idle

Are we currently inside the "idle" handler (to avoid recursively invoking it).

Definition at line 801 of file internal.h.

Referenced by cleanup_connection(), MHD_connection_handle_idle(), and MHD_queue_response().

◆ last

char* MHD_Connection::last

Last incomplete header line during parsing of headers. Allocated in pool. Only valid if state is either MHD_CONNECTION_HEADER_PART_RECEIVED or MHD_CONNECTION_FOOTER_PART_RECEIVED.

Definition at line 681 of file internal.h.

Referenced by process_broken_line(), and process_header_line().

◆ last_activity

time_t MHD_Connection::last_activity

Last time this connection had any activity (reading or writing).

Definition at line 762 of file internal.h.

Referenced by internal_add_connection(), MHD_connection_handle_idle(), MHD_get_timeout(), MHD_tls_connection_handle_idle(), run_tls_handshake(), thread_main_handle_connection(), and update_last_activity().

◆ method

char* MHD_Connection::method

◆ next

struct MHD_Connection* MHD_Connection::next

Next pointer for the DLL describing our IO state.

Definition at line 577 of file internal.h.

Referenced by close_all_connections(), MHD_get_fdset2(), MHD_poll(), MHD_run_from_select(), MHD_select(), and resume_suspended_connections().

◆ nextX

struct MHD_Connection* MHD_Connection::nextX

Next pointer for the XDLL organizing connections by timeout. This DLL can be either the 'manual_timeout_head/manual_timeout_tail' or the 'normal_timeout_head/normal_timeout_tail', depending on whether a custom timeout is set for the connection.

Definition at line 591 of file internal.h.

Referenced by MHD_get_timeout(), and MHD_poll().

◆ pid

MHD_thread_handle_ MHD_Connection::pid

Thread handle for this connection (if we are using one thread per connection).

Definition at line 702 of file internal.h.

Referenced by close_all_connections(), internal_add_connection(), and MHD_cleanup_connections().

◆ pool

struct MemoryPool* MHD_Connection::pool

The memory pool is created whenever we first read from the TCP stream and destroyed at the end of each request (and re-created for the next request). In the meantime, this pointer is NULL. The pool is used for all connection-related data except for the response (which maybe shared between connections) and the IP address (which persists across individual requests).

Definition at line 626 of file internal.h.

Referenced by build_header_response(), check_write_done(), internal_add_connection(), MHD_cleanup_connections(), MHD_connection_handle_idle(), MHD_connection_handle_read(), MHD_response_execute_upgrade_(), MHD_set_connection_value(), parse_cookie_header(), process_broken_line(), try_grow_read_buffer(), and try_ready_chunked_body().

◆ prev

struct MHD_Connection* MHD_Connection::prev

Previous pointer for the DLL describing our IO state.

Definition at line 582 of file internal.h.

◆ prevX

struct MHD_Connection* MHD_Connection::prevX

Previous pointer for the XDLL organizing connections by timeout.

Definition at line 596 of file internal.h.

Referenced by MHD_poll().

◆ read_buffer

char* MHD_Connection::read_buffer

Buffer for reading requests. Allocated in pool. Actually one byte larger than read_buffer_size (if non-NULL) to allow for 0-termination.

Definition at line 667 of file internal.h.

Referenced by do_read(), get_next_header_line(), MHD_connection_handle_idle(), MHD_connection_handle_read(), MHD_response_execute_upgrade_(), process_request_body(), and try_grow_read_buffer().

◆ read_buffer_offset

size_t MHD_Connection::read_buffer_offset

◆ read_buffer_size

size_t MHD_Connection::read_buffer_size

Size of read_buffer (in bytes). This value indicates how many bytes we're willing to read into the buffer; the real buffer is one byte longer to allow for adding zero-termination (when needed).

Definition at line 710 of file internal.h.

Referenced by do_read(), get_next_header_line(), MHD_connection_handle_idle(), MHD_connection_handle_read(), MHD_connection_update_event_loop_info(), MHD_get_fdset2(), MHD_poll(), MHD_select(), thread_main_handle_connection(), and try_grow_read_buffer().

◆ read_closed

int MHD_Connection::read_closed

Has this socket been closed for reading (i.e. other side closed the connection)? If so, we must completely close the connection once we are done sending our response (and stop trying to read from this socket).

Definition at line 790 of file internal.h.

Referenced by build_header_response(), do_read(), MHD_connection_handle_idle(), MHD_connection_handle_read(), MHD_connection_update_event_loop_info(), MHD_queue_response(), parse_connection_headers(), and transmit_error_response().

◆ read_handler

int(* MHD_Connection::read_handler) (struct MHD_Connection *connection)

Handler used for processing read connection operations

Definition at line 861 of file internal.h.

Referenced by call_handlers(), MHD_set_http_callbacks_(), and MHD_set_https_callbacks().

◆ recv_cls

ReceiveCallback MHD_Connection::recv_cls

Function used for reading HTTP request stream.

Definition at line 876 of file internal.h.

Referenced by do_read(), and internal_add_connection().

◆ remaining_upload_size

uint64_t MHD_Connection::remaining_upload_size

How many more bytes of the body do we expect to read? MHD_SIZE_UNKNOWN for unknown.

Definition at line 738 of file internal.h.

Referenced by MHD_connection_handle_idle(), parse_connection_headers(), and process_request_body().

◆ response

◆ response_unready

int MHD_Connection::response_unready

Set to MHD_YES if the response's content reader callback failed to provide data the last time we tried to read from it. In that case, the write socket should be marked as unready until the CRC call succeeds.

Definition at line 833 of file internal.h.

◆ response_write_position

uint64_t MHD_Connection::response_write_position

Current write position in the actual response (excluding headers, content only; should be 0 while sending headers).

Definition at line 745 of file internal.h.

Referenced by MHD_connection_handle_idle(), MHD_connection_handle_write(), MHD_queue_response(), send_param_adapter(), try_ready_chunked_body(), and try_ready_normal_body().

◆ responseCode

unsigned int MHD_Connection::responseCode

HTTP response code. Only valid if response object is already set.

Definition at line 824 of file internal.h.

Referenced by build_header_response(), MHD_connection_handle_idle(), and MHD_queue_response().

◆ resuming

int MHD_Connection::resuming

Is the connection wanting to resume?

Definition at line 924 of file internal.h.

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

◆ send_cls

TransmitCallback MHD_Connection::send_cls

Function used for writing HTTP response stream.

Definition at line 881 of file internal.h.

Referenced by do_write(), internal_add_connection(), and MHD_connection_handle_write().

◆ socket_context

void* MHD_Connection::socket_context

We allow the main application to associate some pointer with the TCP connection (which may span multiple HTTP requests). Here is where we store it. (MHD does not know or care what it is). The location is given to the MHD_NotifyConnectionCallback and also accessible via MHD_CONNECTION_INFO_SOCKET_CONTEXT.

Definition at line 643 of file internal.h.

Referenced by internal_add_connection(), MHD_cleanup_connections(), and MHD_get_connection_info().

◆ socket_fd

◆ state

◆ suspended

◆ thread_joined

int MHD_Connection::thread_joined

Set to MHD_YES if the thread has been joined.

Definition at line 795 of file internal.h.

Referenced by close_all_connections(), and MHD_cleanup_connections().

◆ urh

struct MHD_UpgradeResponseHandle* MHD_Connection::urh

If this connection was upgraded and if we are using MHD_USE_THREAD_PER_CONNECTION or MHD_USE_TLS, this points to the upgrade response details such that the thread_main_connection_upgrade()-logic can perform the bi-directional forwarding.

Definition at line 890 of file internal.h.

Referenced by MHD_cleanup_upgraded_connection_(), MHD_response_execute_upgrade_(), and thread_main_connection_upgrade().

◆ url

const char* MHD_Connection::url

◆ version

char* MHD_Connection::version

◆ write_buffer

char* MHD_Connection::write_buffer

Buffer for writing response (headers only). Allocated in pool.

Definition at line 673 of file internal.h.

Referenced by build_header_response(), check_write_done(), do_write(), MHD_connection_handle_idle(), and try_ready_chunked_body().

◆ write_buffer_append_offset

size_t MHD_Connection::write_buffer_append_offset

Last valid location in write_buffer (where do we append and up to where is it safe to send?)

Definition at line 732 of file internal.h.

Referenced by build_header_response(), check_write_done(), do_write(), MHD_connection_handle_idle(), send_param_adapter(), and try_ready_chunked_body().

◆ write_buffer_send_offset

size_t MHD_Connection::write_buffer_send_offset

Offset where we are with sending from write_buffer.

Definition at line 726 of file internal.h.

Referenced by build_header_response(), check_write_done(), do_write(), MHD_connection_handle_idle(), send_param_adapter(), and try_ready_chunked_body().

◆ write_buffer_size

size_t MHD_Connection::write_buffer_size

Size of write_buffer (in bytes).

Definition at line 721 of file internal.h.

Referenced by build_header_response(), check_write_done(), MHD_connection_handle_idle(), and try_ready_chunked_body().

◆ write_handler

int(* MHD_Connection::write_handler) (struct MHD_Connection *connection)

Handler used for processing write connection operations

Definition at line 866 of file internal.h.

Referenced by call_handlers(), MHD_set_http_callbacks_(), and MHD_set_https_callbacks().


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