GNU libmicrohttpd 0.9.77
Loading...
Searching...
No Matches
MHD_Connection Struct Reference

#include </builddir/build/BUILD/libmicrohttpd-0.9.77/src/lib/internal.h>

Data Fields

struct MHD_Connectionnext
 
struct MHD_Connectionprev
 
struct MHD_ConnectionnextX
 
struct MHD_ConnectionprevX
 
struct MHD_Daemondaemon
 
struct MemoryPool * pool
 
void * socket_context
 
ReceiveCallback recv_cls
 
TransmitCallback send_cls
 
struct MHD_Request request
 
MHD_thread_handle_ID_ pid
 
struct sockaddr_storage addr
 
socklen_t addr_len
 
time_t last_activity
 
time_t connection_timeout
 
MHD_socket socket_fd
 
bool suspended
 
bool tls_read_ready
 
bool resuming
 
bool thread_joined
 
bool sk_nonblck
 
bool read_closed
 
struct MHD_HTTP_Headerheaders_received
 
struct MHD_HTTP_Headerheaders_received_tail
 
struct MHD_Responseresponse
 
void * client_context
 
char * method
 
enum MHD_HTTP_Method http_mthd
 
const char * url
 
char * version
 
enum MHD_HTTP_Version http_ver
 
enum MHD_ConnKeepAlive keepalive
 
char * read_buffer
 
char * write_buffer
 
char * last
 
char * colon
 
struct sockaddr * addr
 
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
 
size_t header_size
 
uint64_t remaining_upload_size
 
uint64_t response_write_position
 
struct MHD_iovec_track_ resp_iov
 
size_t continue_message_write_offset
 
uint64_t last_activity
 
uint64_t connection_timeout_ms
 
unsigned int connection_timeout_dummy
 
bool client_aware
 
enum MHD_tristate is_nonip
 
bool sk_spipe_suppress
 
enum MHD_tristate sk_corked
 
enum MHD_tristate sk_nodelay
 
bool stop_with_error
 
bool discard_request
 
bool in_idle
 
bool in_cleanup
 
enum MHD_CONNECTION_STATE state
 
enum MHD_ConnectionEventLoopInfo event_loop_info
 
unsigned int responseCode
 
struct MHD_Reply_Properties rp_props
 
bool have_chunked_upload
 
uint64_t current_chunk_size
 
uint64_t current_chunk_offset
 
int suspended_dummy
 
volatile bool resuming
 

Detailed Description

State kept per HTTP connection.

State kept for each HTTP request.

Definition at line 633 of file internal.h.

Field Documentation

◆ addr [1/2]

◆ addr [2/2]

struct sockaddr* MHD_Connection::addr

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

Definition at line 1065 of file internal.h.

◆ addr_len

socklen_t MHD_Connection::addr_len

◆ client_aware

bool 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 1174 of file internal.h.

Referenced by call_connection_handler(), connection_reset(), MHD_connection_close_(), parse_initial_message_line(), process_request_body(), and resume_suspended_connections().

◆ 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 986 of file internal.h.

Referenced by call_connection_handler(), connection_reset(), MHD_connection_close_(), parse_initial_message_line(), process_request_body(), and resume_suspended_connections().

◆ 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 1059 of file internal.h.

Referenced by connection_reset(), process_broken_line(), process_header_line(), process_header_line(), and transmit_error_response_len().

◆ connection_timeout

time_t MHD_Connection::connection_timeout

◆ connection_timeout_dummy

unsigned int MHD_Connection::connection_timeout_dummy

Special member to be returned by MHD_get_connection_info()

Definition at line 1167 of file internal.h.

Referenced by MHD_get_connection_info().

◆ connection_timeout_ms

uint64_t MHD_Connection::connection_timeout_ms

◆ 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 1144 of file internal.h.

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

◆ current_chunk_offset

uint64_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 1306 of file internal.h.

Referenced by connection_reset(), and process_request_body().

◆ current_chunk_size

uint64_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 1300 of file internal.h.

Referenced by connection_reset(), and process_request_body().

◆ daemon

struct MHD_Daemon * MHD_Connection::daemon

Reference to the MHD_Daemon struct.

Definition at line 675 of file internal.h.

Referenced by build_header_response(), call_connection_handler(), call_handlers(), check_argument_match(), check_nonce_nc(), cleanup_connection(), cleanup_connection(), close_all_connections(), close_connection(), close_connection(), connection_add_header(), connection_check_timedout(), connection_close_error(), connection_close_error(), connection_reset(), connection_update_event_loop_info(), digest_auth_check_all(), internal_add_connection(), internal_add_connection(), internal_get_fdset2(), internal_get_fdset2(), internal_suspend_connection_(), MHD_basic_auth_get_username_password(), MHD_cleanup_connections(), MHD_connection_call_handlers_(), MHD_connection_cleanup_(), MHD_connection_close_(), MHD_connection_close_(), MHD_connection_get_information_sz(), MHD_connection_handle_idle(), MHD_connection_handle_read(), MHD_connection_handle_write(), MHD_connection_mark_closed_(), MHD_connection_set_cork_state_(), MHD_connection_set_nodelay_state_(), MHD_connection_set_timeout(), MHD_connection_update_event_loop_info(), MHD_connection_update_last_activity_(), MHD_daemon_close_all_connections_(), MHD_daemon_get_timeout(), MHD_get_connection_info(), MHD_get_timeout(), MHD_parse_arguments_(), MHD_queue_auth_fail_response2(), MHD_queue_basic_auth_fail_response(), MHD_queue_response(), MHD_resume_connection(), MHD_resume_suspended_connections_(), MHD_run_tls_handshake_(), MHD_send_data_(), MHD_send_hdr_and_body_(), MHD_send_iovec_(), MHD_set_connection_option(), MHD_stop_daemon(), MHD_suspend_connection(), MHD_update_last_activity_(), new_connection_prepare_(), new_connection_process_(), new_connections_list_process_(), parse_connection_headers(), parse_cookie_header(), parse_initial_message_line(), post_send_setopt(), process_header_line(), process_request_body(), process_request_body(), resume_suspended_connections(), suspend_action(), thread_main_handle_connection(), transmit_error_response_len(), and zero_send_().

◆ discard_request

bool MHD_Connection::discard_request

Response queued early, before the request is fully processed, the client upload is rejected. The connection cannot be reused for additional requests as the current request is incompletely read and it is unclear where is the initial byte of the next request.

Definition at line 1233 of file internal.h.

Referenced by connection_close_error(), connection_reset(), keepalive_possible(), MHD_connection_handle_idle(), MHD_connection_handle_read(), MHD_connection_update_event_loop_info(), MHD_queue_response(), and transmit_error_response_len().

◆ event_loop_info

enum MHD_ConnectionEventLoopInfo MHD_Connection::event_loop_info

What is this connection waiting for?

Definition at line 1268 of file internal.h.

Referenced by call_handlers(), internal_get_fdset2(), MHD_connection_mark_closed_(), and MHD_connection_update_event_loop_info().

◆ have_chunked_upload

bool 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). It is used only for requests, chunked encoding for response is indicated by rp_props.

Definition at line 1291 of file internal.h.

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

◆ header_size

size_t MHD_Connection::header_size

Number of bytes we had in the HTTP header, set once we pass MHD_CONNECTION_HEADERS_RECEIVED.

Definition at line 1108 of file internal.h.

Referenced by connection_reset(), MHD_connection_handle_idle(), and MHD_get_connection_info().

◆ headers_received

◆ headers_received_tail

struct MHD_HTTP_Header* MHD_Connection::headers_received_tail

Tail of linked list of parsed headers.

Definition at line 963 of file internal.h.

Referenced by connection_reset(), MHD_set_connection_value_n_nocheck_(), and transmit_error_response_len().

◆ http_mthd

enum MHD_HTTP_Method MHD_Connection::http_mthd

The request method as enum.

Definition at line 1005 of file internal.h.

Referenced by connection_reset(), is_reply_body_headers_needed(), is_reply_body_needed(), MHD_queue_response(), and parse_http_std_method().

◆ http_ver

◆ in_cleanup

bool MHD_Connection::in_cleanup

Connection is in the cleanup DL-linked list.

Definition at line 1251 of file internal.h.

Referenced by cleanup_connection().

◆ in_idle

bool MHD_Connection::in_idle

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

Definition at line 1246 of file internal.h.

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

◆ is_nonip

enum MHD_tristate MHD_Connection::is_nonip

true if socket_fd is not TCP/IP (a UNIX domain socket, a pipe), false (TCP/IP) otherwise.

Definition at line 1187 of file internal.h.

Referenced by MHD_connection_set_cork_state_(), MHD_connection_set_nodelay_state_(), new_connection_prepare_(), post_send_setopt(), pre_send_setopt(), and zero_send_().

◆ keepalive

enum MHD_ConnKeepAlive MHD_Connection::keepalive

Close connection after sending response? Functions may change value from "Unknown" or "KeepAlive" to "Must close", but no functions reset value "Must Close" to any other value.

Definition at line 1029 of file internal.h.

Referenced by build_header_response(), connection_reset(), keepalive_possible(), MHD_connection_handle_idle(), MHD_connection_handle_write(), setup_reply_properties(), and transmit_error_response_len().

◆ 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 1050 of file internal.h.

Referenced by connection_reset(), process_broken_line(), process_broken_line(), process_header_line(), and transmit_error_response_len().

◆ last_activity [1/2]

◆ last_activity [2/2]

uint64_t MHD_Connection::last_activity

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

Definition at line 1155 of file internal.h.

◆ method

char* MHD_Connection::method

◆ next

struct MHD_Connection * MHD_Connection::next

Next pointer for the DLL describing our IO state.

Definition at line 651 of file internal.h.

◆ 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 665 of file internal.h.

◆ pid

◆ 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 request-related data except for the response (which maybe shared between requests) and the IP address (which persists across individual requests).

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 685 of file internal.h.

Referenced by build_header_response(), check_write_done(), connection_alloc_memory(), connection_maximize_write_buffer(), connection_reset(), connection_shrink_read_buffer(), internal_add_connection(), MHD_cleanup_connections(), MHD_connection_cleanup_(), MHD_connection_close_(), MHD_connection_handle_read(), MHD_request_handle_idle_(), MHD_request_handle_read_(), MHD_request_set_value(), new_connection_process_(), parse_cookie_header(), process_broken_line(), transmit_error_response_len(), try_grow_read_buffer(), try_grow_read_buffer(), try_ready_chunked_body(), and try_ready_chunked_body().

◆ prev

◆ prevX

struct MHD_Connection * MHD_Connection::prevX

Previous pointer for the XDLL organizing connections by timeout.

Definition at line 670 of file internal.h.

Referenced by MHD_daemon_get_timeout(), and MHD_get_timeout().

◆ 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 1036 of file internal.h.

Referenced by connection_alloc_memory(), connection_reset(), connection_shrink_read_buffer(), get_next_header_line(), MHD_connection_handle_idle(), MHD_connection_handle_read(), process_request_body(), transmit_error_response_len(), 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.

Definition at line 1080 of file internal.h.

Referenced by connection_alloc_memory(), connection_reset(), connection_shrink_read_buffer(), get_next_header_line(), MHD_connection_handle_read(), MHD_connection_update_event_loop_info(), transmit_error_response_len(), and try_grow_read_buffer().

◆ read_closed

bool 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 792 of file internal.h.

Referenced by build_header_response(), connection_update_event_loop_info(), keepalive_possible(), MHD_connection_handle_idle(), MHD_connection_handle_read(), MHD_connection_update_event_loop_info(), MHD_request_handle_idle_(), MHD_request_handle_read_(), parse_request_headers(), response_action(), and transmit_error_response().

◆ recv_cls

ReceiveCallback MHD_Connection::recv_cls

Function used for reading HTTP request stream.

Definition at line 706 of file internal.h.

Referenced by internal_add_connection(), MHD_connection_handle_read(), MHD_request_handle_read_(), MHD_set_http_callbacks_(), and MHD_set_https_callbacks().

◆ 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 1114 of file internal.h.

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

◆ request

◆ resp_iov

struct MHD_iovec_track_ MHD_Connection::resp_iov

The copy of iov response. Valid if iovec response is used. Updated during send. Members are allocated in the pool.

Definition at line 1129 of file internal.h.

Referenced by connection_reset(), MHD_connection_handle_write(), MHD_send_iovec_(), and try_ready_normal_body().

◆ response

◆ 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 1121 of file internal.h.

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

◆ responseCode

unsigned int MHD_Connection::responseCode

◆ resuming [1/2]

◆ resuming [2/2]

volatile bool MHD_Connection::resuming

Is the connection wanting to resume?

Definition at line 1365 of file internal.h.

◆ rp_props

◆ send_cls

TransmitCallback MHD_Connection::send_cls

Function used for writing HTTP response stream.

Definition at line 711 of file internal.h.

Referenced by internal_add_connection(), and MHD_request_handle_write_().

◆ sk_corked

enum MHD_tristate MHD_Connection::sk_corked

Tracks TCP_CORK / TCP_NOPUSH of the connection socket.

Definition at line 1202 of file internal.h.

Referenced by MHD_connection_set_cork_state_(), new_connection_prepare_(), post_send_setopt(), pre_send_setopt(), and zero_send_().

◆ sk_nodelay

enum MHD_tristate MHD_Connection::sk_nodelay

Tracks TCP_NODELAY state of the connection socket.

Definition at line 1207 of file internal.h.

Referenced by MHD_connection_set_nodelay_state_(), MHD_run_tls_handshake_(), new_connection_prepare_(), post_send_setopt(), pre_send_setopt(), and zero_send_().

◆ sk_nonblck

bool MHD_Connection::sk_nonblck

◆ sk_spipe_suppress

bool MHD_Connection::sk_spipe_suppress

true if connection socket has set SIGPIPE suppression

Definition at line 1197 of file internal.h.

Referenced by MHD_queue_response(), MHD_send_hdr_and_body_(), MHD_send_iovec_(), and new_connection_prepare_().

◆ 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 694 of file internal.h.

Referenced by MHD_cleanup_connections(), MHD_connection_get_information_sz(), MHD_get_connection_info(), and new_connection_process_().

◆ socket_fd

◆ state

◆ stop_with_error

bool MHD_Connection::stop_with_error

Some error happens during processing the connection therefore this connection must be closed. The error may come from the client side (like wrong request format), from the application side (like data callback returned error), or from the OS side (like out-of-memory).

Definition at line 1224 of file internal.h.

Referenced by connection_close_error(), connection_close_error_check(), connection_reset(), keepalive_possible(), and transmit_error_response_len().

◆ suspended

◆ suspended_dummy

int MHD_Connection::suspended_dummy

Special member to be returned by MHD_get_connection_info()

Definition at line 1360 of file internal.h.

Referenced by MHD_get_connection_info().

◆ thread_joined

bool MHD_Connection::thread_joined

Set to true if the thread has been joined.

Definition at line 779 of file internal.h.

Referenced by close_all_connections(), MHD_cleanup_connections(), MHD_connection_cleanup_(), and MHD_daemon_close_all_connections_().

◆ tls_read_ready

bool MHD_Connection::tls_read_ready

Are we ready to read from TLS for this connection?

Definition at line 769 of file internal.h.

Referenced by call_handlers(), MHD_connection_call_handlers_(), recv_tls_adapter(), and thread_main_handle_connection().

◆ url

◆ version

char* MHD_Connection::version

HTTP version string (i.e. http/1.1). Allocated in pool.

Definition at line 1017 of file internal.h.

Referenced by call_connection_handler(), connection_reset(), parse_initial_message_line(), process_request_body(), and transmit_error_response_len().

◆ write_buffer

char* MHD_Connection::write_buffer

◆ write_buffer_append_offset

size_t MHD_Connection::write_buffer_append_offset

◆ write_buffer_send_offset

size_t MHD_Connection::write_buffer_send_offset

◆ write_buffer_size


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