GNU libmicrohttpd
0.9.29
|
public interface to libmicrohttpd More...
#include <stdarg.h>
#include <stdint.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/socket.h>
Go to the source code of this file.
Data Structures | |
struct | MHD_OptionItem |
union | MHD_ConnectionInfo |
Typedefs | |
typedef int | MHD_socket |
typedef void(* | MHD_LogCallback) (void *cls, const char *fm, va_list ap) |
typedef void(* | MHD_PanicCallback) (void *cls, const char *file, unsigned int line, const char *reason) |
typedef int(* | MHD_AcceptPolicyCallback) (void *cls, const struct sockaddr *addr, socklen_t addrlen) |
typedef int(* | MHD_AccessHandlerCallback) (void *cls, struct MHD_Connection *connection, const char *url, const char *method, const char *version, const char *upload_data, size_t *upload_data_size, void **con_cls) |
typedef void(* | MHD_RequestCompletedCallback) (void *cls, struct MHD_Connection *connection, void **con_cls, enum MHD_RequestTerminationCode toe) |
typedef void(* | MHD_NotifyConnectionCallback) (void *cls, struct MHD_Connection *connection, void **socket_context, enum MHD_ConnectionNotificationCode toe) |
typedef int(* | MHD_KeyValueIterator) (void *cls, enum MHD_ValueKind kind, const char *key, const char *value) |
typedef ssize_t(* | MHD_ContentReaderCallback) (void *cls, uint64_t pos, char *buf, size_t max) |
typedef void(* | MHD_ContentReaderFreeCallback) (void *cls) |
typedef int(* | MHD_PostDataIterator) (void *cls, enum MHD_ValueKind kind, const char *key, const char *filename, const char *content_type, const char *transfer_encoding, const char *data, uint64_t off, size_t size) |
Functions | |
_MHD_EXTERN const char * | MHD_get_reason_phrase_for (unsigned int code) |
_MHD_EXTERN struct MHD_Daemon * | MHD_start_daemon_va (unsigned int flags, uint16_t port, MHD_AcceptPolicyCallback apc, void *apc_cls, MHD_AccessHandlerCallback dh, void *dh_cls, va_list ap) |
_MHD_EXTERN struct MHD_Daemon * | MHD_start_daemon (unsigned int flags, uint16_t port, MHD_AcceptPolicyCallback apc, void *apc_cls, MHD_AccessHandlerCallback dh, void *dh_cls,...) |
_MHD_EXTERN MHD_socket | MHD_quiesce_daemon (struct MHD_Daemon *daemon) |
_MHD_EXTERN void | MHD_stop_daemon (struct MHD_Daemon *daemon) |
_MHD_EXTERN int | MHD_add_connection (struct MHD_Daemon *daemon, MHD_socket client_socket, const struct sockaddr *addr, socklen_t addrlen) |
public interface to libmicrohttpd
All symbols defined in this header start with MHD. MHD is a small HTTP daemon library. As such, it does not have any API for logging errors (you can only enable or disable logging to stderr). Also, it may not support all of the HTTP features directly, where applicable, portions of HTTP may have to be handled by clients of the library.
The library is supposed to handle everything that it must handle (because the API would not allow clients to do this), such as basic connection management; however, detailed interpretations of headers – such as range requests – and HTTP methods are left to clients. The library does understand HEAD and will only send the headers of the response and not the body, even if the client supplied a body. The library also understands headers that control connection management (specifically, "Connection: close" and "Expect: 100 continue" are understood and handled automatically).
MHD understands POST data and is able to decode certain formats (at the moment only "application/x-www-form-urlencoded" and "mulitpart/formdata"). Unsupported encodings and large POST submissions may require the application to manually process the stream, which is provided to the main application (and thus can be processed, just not conveniently by MHD).
The header file defines various constants used by the HTTP protocol. This does not mean that MHD actually interprets all of these values. The provided constants are exported as a convenience for users of the library. MHD does not verify that transmitted HTTP headers are part of the standard specification; users of the library are free to define their own extensions of the HTTP standard and use those with MHD.
All functions are guaranteed to be completely reentrant and thread-safe (with the exception of MHD_set_connection_value, which must only be used in a particular context).
Definition in file microhttpd.h.
#define _MHD_DEPR_FUNC | ( | msg | ) |
Definition at line 264 of file microhttpd.h.
#define _MHD_DEPR_IN_MACRO | ( | msg | ) |
Definition at line 240 of file microhttpd.h.
#define _MHD_DEPR_MACRO | ( | msg | ) |
Define MHD_NO_DEPRECATION before including "microhttpd.h" to disable deprecation messages
Definition at line 235 of file microhttpd.h.
#define _MHD_EXTERN extern |
Definition at line 171 of file microhttpd.h.
#define _MHD_NO_DEPR_FUNC 1 |
Definition at line 263 of file microhttpd.h.
#define _MHD_NO_DEPR_IN_MACRO 1 |
Definition at line 239 of file microhttpd.h.
#define MHD_CONTENT_READER_END_OF_STREAM ((size_t) -1LL) |
Definition at line 160 of file microhttpd.h.
Referenced by file_reader(), try_ready_chunked_body(), and try_ready_normal_body().
#define MHD_CONTENT_READER_END_WITH_ERROR (((size_t) -1LL) - 1) |
Definition at line 161 of file microhttpd.h.
Referenced by file_reader(), try_ready_chunked_body(), and try_ready_normal_body().
#define MHD_INVALID_NONCE -1 |
MHD digest auth internal code for an invalid nonce.
Definition at line 144 of file microhttpd.h.
Referenced by MHD_digest_auth_check().
#define MHD_INVALID_SOCKET (-1) |
Definition at line 182 of file microhttpd.h.
Referenced by call_handlers(), internal_get_fdset2(), internal_run_from_select(), MHD_accept_connection(), MHD_add_to_fd_set_(), MHD_cleanup_connections(), MHD_connection_close_(), MHD_create_response_from_buffer(), MHD_get_fdset(), MHD_poll(), MHD_quiesce_daemon(), MHD_select(), MHD_socket_create_listen_(), MHD_start_daemon_va(), MHD_stop_daemon(), parse_options_va(), recv_param_adapter(), send_param_adapter(), and thread_main_handle_connection().
#define MHD_LONG_LONG long long |
Not all architectures and printf()
's support the long long
type. This gives the ability to replace long long
with just a long
, standard int
or a short
.
Definition at line 276 of file microhttpd.h.
#define MHD_LONG_LONG_PRINTF "ll" |
Format string for printing a variable of type MHD_LONG_LONG. You should only redefine this if you also define MHD_LONG_LONG.
Definition at line 289 of file microhttpd.h.
#define MHD_NO 0 |
MHD-internal return code for "NO".
Definition at line 139 of file microhttpd.h.
Referenced by add_response_entry(), build_header_response(), call_connection_handler(), check_argument_match(), check_nonce_nc(), check_write_done(), connection_add_header(), do_read(), do_write(), find_boundary(), get_next_header_line(), internal_add_connection(), internal_get_fdset2(), keepalive_possible(), MHD_accept_connection(), MHD_connection_handle_idle(), MHD_connection_handle_read(), MHD_connection_handle_write(), MHD_connection_mark_closed_(), MHD_connection_update_event_loop_info(), MHD_create_response_from_buffer(), MHD_del_response_header(), MHD_destroy_post_processor(), MHD_digest_auth_check(), MHD_get_connection_info(), MHD_get_fdset2(), MHD_get_timeout(), MHD_ip_addr_to_key(), MHD_ip_limit_add(), MHD_ip_limit_del(), MHD_is_feature_supported(), MHD_parse_arguments_(), MHD_poll(), MHD_pool_create(), MHD_pool_destroy(), MHD_post_process(), MHD_queue_auth_fail_response(), MHD_queue_basic_auth_fail_response(), MHD_queue_response(), MHD_run(), MHD_run_from_select(), MHD_select(), MHD_set_connection_option(), MHD_set_connection_value(), MHD_set_response_options(), MHD_tls_connection_shutdown(), parse_cookie_header(), parse_initial_message_line(), parse_options_va(), post_process_multipart(), post_process_urlencoded(), process_broken_line(), process_header_line(), process_multipart_headers(), process_request_body(), process_value_to_boundary(), resume_suspended_connections(), run_tls_handshake(), socket_flush_possible(), socket_start_extra_buffering(), socket_start_no_buffering(), socket_start_no_buffering_flush(), socket_start_normal_buffering(), test_header(), thread_main_handle_connection(), transmit_error_response(), try_grow_read_buffer(), try_match_header(), try_ready_chunked_body(), and try_ready_normal_body().
#define MHD_POSIX_SOCKETS 1 |
MHD_socket is type for socket FDs
Definition at line 180 of file microhttpd.h.
#define MHD_RESPONSE_HEADER_KIND |
Definition at line 1532 of file microhttpd.h.
#define MHD_SIZE_UNKNOWN ((uint64_t) -1LL) |
Constant used to indicate unknown size (use when creating a response).
Definition at line 153 of file microhttpd.h.
Referenced by build_header_response(), MHD_connection_handle_idle(), MHD_create_response_from_buffer(), parse_connection_headers(), and process_request_body().
#define MHD_SOCKET_DEFINED 1 |
Definition at line 189 of file microhttpd.h.
#define MHD_UNSIGNED_LONG_LONG unsigned long long |
Definition at line 277 of file microhttpd.h.
Referenced by build_header_response(), call_handlers(), MHD_poll(), and MHD_select().
#define MHD_UNSIGNED_LONG_LONG_PRINTF "%llu" |
Definition at line 290 of file microhttpd.h.
Referenced by build_header_response(), and call_handlers().
#define MHD_VERSION 0x00095500 |
Current version of the library. 0x01093001 = 1.9.30-1.
Definition at line 129 of file microhttpd.h.
Referenced by MHD_get_version().
#define MHD_YES 1 |
MHD-internal return code for "YES".
Definition at line 134 of file microhttpd.h.
Referenced by add_response_entry(), build_header_response(), check_argument_match(), check_nonce_nc(), check_write_done(), connection_add_header(), do_read(), do_write(), find_boundary(), internal_add_connection(), internal_get_fdset2(), internal_run_from_select(), keepalive_possible(), MHD_accept_connection(), MHD_add_connection(), MHD_connection_handle_idle(), MHD_connection_handle_read(), MHD_connection_handle_write(), MHD_connection_update_event_loop_info(), MHD_create_response_from_buffer(), MHD_create_response_from_data(), MHD_del_response_header(), MHD_destroy_post_processor(), MHD_digest_auth_check(), MHD_get_connection_info(), MHD_get_connection_values(), MHD_get_fdset2(), MHD_get_response_headers(), MHD_get_timeout(), MHD_ip_addr_to_key(), MHD_ip_limit_add(), MHD_is_feature_supported(), MHD_parse_arguments_(), MHD_poll(), MHD_pool_allocate(), MHD_pool_create(), MHD_post_process(), MHD_queue_auth_fail_response(), MHD_queue_basic_auth_fail_response(), MHD_queue_response(), MHD_run(), MHD_select(), MHD_select_thread(), MHD_set_connection_option(), MHD_set_connection_value(), MHD_set_response_options(), MHD_start_daemon_va(), MHD_tls_connection_handle_idle(), MHD_tls_connection_handle_read(), MHD_tls_connection_handle_write(), MHD_tls_connection_shutdown(), parse_cookie_header(), parse_initial_message_line(), parse_options_va(), post_process_multipart(), post_process_urlencoded(), process_broken_line(), process_header_line(), process_multipart_headers(), process_request_body(), process_value_to_boundary(), resume_suspended_connections(), run_tls_handshake(), socket_flush_possible(), socket_start_extra_buffering(), socket_start_no_buffering(), socket_start_no_buffering_flush(), socket_start_normal_buffering(), test_header(), try_grow_read_buffer(), try_match_header(), try_ready_chunked_body(), and try_ready_normal_body().
typedef int(* MHD_AcceptPolicyCallback) (void *cls, const struct sockaddr *addr, socklen_t addrlen) |
Allow or deny a client to connect.
cls | closure |
addr | address information from the client |
addrlen | length of addr |
Definition at line 1877 of file microhttpd.h.
typedef int(* MHD_AccessHandlerCallback) (void *cls, struct MHD_Connection *connection, const char *url, const char *method, const char *version, const char *upload_data, size_t *upload_data_size, void **con_cls) |
A client has requested the given url using the given method (MHD_HTTP_METHOD_GET, MHD_HTTP_METHOD_PUT, MHD_HTTP_METHOD_DELETE, MHD_HTTP_METHOD_POST, etc). The callback must call MHD callbacks to provide content to give back to the client and return an HTTP status code (i.e. MHD_HTTP_OK, MHD_HTTP_NOT_FOUND, etc.).
cls | argument given together with the function pointer when the handler was registered with MHD |
url | the requested url |
method | the HTTP method used (MHD_HTTP_METHOD_GET, MHD_HTTP_METHOD_PUT, etc.) |
version | the HTTP version string (i.e. MHD_HTTP_VERSION_1_1) |
upload_data | the data being uploaded (excluding HEADERS, for a POST that fits into memory and that is encoded with a supported encoding, the POST data will NOT be given in upload_data and is instead available as part of MHD_get_connection_values; very large POST data will be made available incrementally in upload_data) |
upload_data_size | set initially to the size of the upload_data provided; the method must update this value to the number of bytes NOT processed; |
con_cls | pointer that the callback can set to some address and that will be preserved by MHD for future calls for this request; since the access handler may be called many times (i.e., for a PUT/POST operation with plenty of upload data) this allows the application to easily associate some request-specific state. If necessary, this state can be cleaned up in the global MHD_RequestCompletedCallback (which can be set with the MHD_OPTION_NOTIFY_COMPLETED). Initially, *con_cls will be NULL. |
Definition at line 1922 of file microhttpd.h.
typedef ssize_t(* MHD_ContentReaderCallback) (void *cls, uint64_t pos, char *buf, size_t max) |
Callback used by libmicrohttpd in order to obtain content. The callback is to copy at most max bytes of content into buf. The total number of bytes that has been placed into buf should be returned.
Note that returning zero will cause libmicrohttpd to try again. Thus, returning zero should only be used in conjunction with MHD_suspend_connection() to avoid busy waiting.
cls | extra argument to the callback |
pos | position in the datastream to access; note that if a struct MHD_Response object is re-used, it is possible for the same content reader to be queried multiple times for the same data; however, if a struct MHD_Response is not re-used, libmicrohttpd guarantees that "pos" will be the sum of all non-negative return values obtained from the content reader so far. |
buf | where to copy the data |
max | maximum number of bytes to copy to buf (size of buf) |
Definition at line 2043 of file microhttpd.h.
typedef int(* MHD_PostDataIterator) (void *cls, enum MHD_ValueKind kind, const char *key, const char *filename, const char *content_type, const char *transfer_encoding, const char *data, uint64_t off, size_t size) |
Iterator over key-value pairs where the value maybe made available in increments and/or may not be zero-terminated. Used for processing POST data.
cls | user-specified closure |
kind | type of the value, always MHD_POSTDATA_KIND when called from MHD |
key | 0-terminated key for the value |
filename | name of the uploaded file, NULL if not known |
content_type | mime-type of the data, NULL if not known |
transfer_encoding | encoding of the data, NULL if not known |
data | pointer to size bytes of data at the specified offset |
off | offset of data in the overall value |
size | number of bytes in data available |
Definition at line 2082 of file microhttpd.h.
typedef int MHD_socket |
Definition at line 181 of file microhttpd.h.
enum MHD_DaemonInfoType |
Values of this enum are used to specify what information about a deamon is desired.
Enumerator | |
---|---|
MHD_DAEMON_INFO_KEY_SIZE | No longer supported (will return NULL). |
MHD_DAEMON_INFO_MAC_KEY_SIZE | No longer supported (will return NULL). |
MHD_DAEMON_INFO_LISTEN_FD | Request the file descriptor for the listening socket. No extra arguments should be passed. |
MHD_DAEMON_INFO_EPOLL_FD_LINUX_ONLY | Request the file descriptor for the external epoll. No extra arguments should be passed. |
MHD_DAEMON_INFO_EPOLL_FD | |
MHD_DAEMON_INFO_CURRENT_CONNECTIONS | Request the number of current connections handled by the daemon. No extra arguments should be passed. Note: when using MHD in external polling mode, this type of request could be used only when MHD_run()/MHD_run_from_select is not working in other thread at the same time. |
MHD_DAEMON_INFO_FLAGS | Request the daemon flags. No extra arguments should be passed. Note: flags may differ from original 'flags' specified for daemon, especially if MHD_USE_AUTO was set. |
Definition at line 1808 of file microhttpd.h.
enum MHD_FLAG |
Flags for the struct MHD_Daemon
.
Note that MHD will run automatically in background thread(s) only if MHD_USE_INTERNAL_POLLING_THREAD is used. Otherwise caller (application) must use MHD_run() or MHD_run_from_select() to have MHD processed network connections and data.
Starting the daemon may also fail if a particular option is not implemented or not supported on the target platform (i.e. no support for TLS, epoll or IPv6).
Enumerator | |
---|---|
MHD_NO_FLAG | No options selected. |
MHD_USE_ERROR_LOG | Print errors messages to custom error logger or to
|
MHD_USE_DEBUG | Run in debug mode. If this flag is used, the library should print error messages and warnings to |
MHD_USE_TLS | Run in HTTPS mode. The modern protocol is called TLS. |
MHD_USE_SSL | |
MHD_USE_THREAD_PER_CONNECTION | Run using one thread per connection. Must be used only with MHD_USE_INTERNAL_POLLING_THREAD. |
MHD_USE_INTERNAL_POLLING_THREAD | Run using an internal thread (or thread pool) for sockets sending and receiving and data processing. Without this flag MHD will not run automatically in background thread(s). If this flag is set, MHD_run() and MHD_run_from_select() couldn't be used. This flag is set explicitly by MHD_USE_POLL_INTERNAL_THREAD and by MHD_USE_EPOLL_INTERNAL_THREAD. |
MHD_USE_SELECT_INTERNALLY | |
MHD_USE_IPv6 | Run using the IPv6 protocol (otherwise, MHD will just support IPv4). If you want MHD to support IPv4 and IPv6 using a single socket, pass MHD_USE_DUAL_STACK, otherwise, if you only pass this option, MHD will try to bind to IPv6-only (resulting in no IPv4 support). |
MHD_USE_PEDANTIC_CHECKS | Be pedantic about the protocol (as opposed to as tolerant as possible). Specifically, at the moment, this flag causes MHD to reject HTTP 1.1 connections without a "Host" header. This is required by the standard, but of course in violation of the "be as liberal as possible in what you accept" norm. It is recommended to turn this ON if you are testing clients against MHD, and OFF in production. |
MHD_USE_POLL | Use
|
MHD_USE_POLL_INTERNAL_THREAD | Run using an internal thread (or thread pool) doing
|
MHD_USE_POLL_INTERNALLY | |
MHD_USE_SUPPRESS_DATE_NO_CLOCK | Suppress (automatically) adding the 'Date:' header to HTTP responses. This option should ONLY be used on systems that do not have a clock and that DO provide other mechanisms for cache control. See also RFC 2616, section 14.18 (exception 3). |
MHD_SUPPRESS_DATE_NO_CLOCK | |
MHD_USE_NO_LISTEN_SOCKET | Run without a listen socket. This option only makes sense if MHD_add_connection is to be used exclusively to connect HTTP clients to the HTTP server. This option is incompatible with using a thread pool; if it is used, MHD_OPTION_THREAD_POOL_SIZE is ignored. |
MHD_USE_EPOLL | Use
|
MHD_USE_EPOLL_LINUX_ONLY | |
MHD_USE_EPOLL_INTERNAL_THREAD | Run using an internal thread (or thread pool) doing
|
MHD_USE_EPOLL_INTERNALLY | |
MHD_USE_EPOLL_INTERNALLY_LINUX_ONLY | |
MHD_USE_ITC | Use inter-thread communication channel. MHD_USE_ITC can be used with MHD_USE_INTERNAL_POLLING_THREAD and is ignored with any "external" mode. It's required for use of MHD_quiesce_daemon or MHD_add_connection. This option is enforced by MHD_ALLOW_SUSPEND_RESUME or MHD_USE_NO_LISTEN_SOCKET. MHD_USE_ITC is always used automatically on platforms where select()/poll()/other ignore shutdown of listen socket. |
MHD_USE_PIPE_FOR_SHUTDOWN | |
MHD_USE_DUAL_STACK | Use a single socket for IPv4 and IPv6. |
MHD_USE_TURBO | Enable |
MHD_USE_EPOLL_TURBO | |
MHD_ALLOW_SUSPEND_RESUME | Enable suspend/resume functions, which also implies setting up ITC to signal resume. |
MHD_USE_SUSPEND_RESUME | |
MHD_USE_TCP_FASTOPEN | Enable TCP_FASTOPEN option. This option is only available on Linux with a kernel >= 3.6. On other systems, using this option cases MHD_start_daemon to fail. |
MHD_ALLOW_UPGRADE | You need to set this option if you want to use HTTP "Upgrade". "Upgrade" may require usage of additional internal resources, which we do not want to use unless necessary. |
MHD_USE_AUTO | Automatically use best available polling function. Choice of polling function is also depend on other daemon options. If MHD_USE_INTERNAL_POLLING_THREAD is specified then epoll, poll() or select() will be used (listed in decreasing preference order, first function available on system will be used). If MHD_USE_THREAD_PER_CONNECTION is specified then poll() or select() will be used. If those flags are not specified then epoll or select() will be used (as the only suitable for MHD_get_fdset()) |
MHD_USE_AUTO_INTERNAL_THREAD | Run using an internal thread (or thread pool) with best available on system polling function. This is combination of MHD_USE_AUTO and MHD_USE_INTERNAL_POLLING_THREAD flags. |
Definition at line 882 of file microhttpd.h.
enum MHD_OPTION |
MHD options.
Passed in the varargs portion of MHD_start_daemon.
Enumerator | |
---|---|
MHD_OPTION_END | No more options / last option. This is used to terminate the VARARGs list. |
MHD_OPTION_CONNECTION_MEMORY_LIMIT | Maximum memory size per connection (followed by a |
MHD_OPTION_CONNECTION_LIMIT | Maximum number of concurrent connections to accept (followed by an |
MHD_OPTION_CONNECTION_TIMEOUT | After how many seconds of inactivity should a connection automatically be timed out? (followed by an |
MHD_OPTION_NOTIFY_COMPLETED | Register a function that should be called whenever a request has been completed (this can be used for application-specific clean up). Requests that have never been presented to the application (via MHD_AccessHandlerCallback) will not result in notifications. This option should be followed by TWO pointers. First a pointer to a function of type MHD_RequestCompletedCallback and second a pointer to a closure to pass to the request completed callback. The second pointer maybe NULL. |
MHD_OPTION_PER_IP_CONNECTION_LIMIT | Limit on the number of (concurrent) connections made to the server from the same IP address. Can be used to prevent one IP from taking over all of the allowed connections. If the same IP tries to establish more than the specified number of connections, they will be immediately rejected. The option should be followed by an |
MHD_OPTION_SOCK_ADDR | Bind daemon to the supplied |
MHD_OPTION_URI_LOG_CALLBACK | Specify a function that should be called before parsing the URI from the client. The specified callback function can be used for processing the URI (including the options) before it is parsed. The URI after parsing will no longer contain the options, which maybe inconvenient for logging. This option should be followed by two arguments, the first one must be of the form void * my_logger(void *cls, const char *uri, struct MHD_Connection *con) where the return value will be passed as ( Note that during the time of this call, most of the connection's state is not initialized (as we have not yet parsed the headers). However, information about the connecting client (IP, socket) is available. The specified function is called only once per request, therefore some programmers may use it to instantiate their own request objects, freeing them in the notifier MHD_OPTION_NOTIFY_COMPLETED. |
MHD_OPTION_HTTPS_MEM_KEY | Memory pointer for the private key (key.pem) to be used by the HTTPS daemon. This option should be followed by a |
MHD_OPTION_HTTPS_MEM_CERT | Memory pointer for the certificate (cert.pem) to be used by the HTTPS daemon. This option should be followed by a |
MHD_OPTION_HTTPS_CRED_TYPE | Daemon credentials type. Followed by an argument of type |
MHD_OPTION_HTTPS_PRIORITIES | Memory pointer to a |
MHD_OPTION_LISTEN_SOCKET | Pass a listen socket for MHD to use (systemd-style). If this option is used, MHD will not open its own listen socket(s). The argument passed must be of type |
MHD_OPTION_EXTERNAL_LOGGER | Use the given function for logging error messages. This option must be followed by two arguments; the first must be a pointer to a function of type MHD_LogCallback and the second a pointer Note that MHD will not generate any log messages if it was compiled without the "--enable-messages" flag being set. |
MHD_OPTION_THREAD_POOL_SIZE | Number ( |
MHD_OPTION_ARRAY | Additional options given in an array of struct MHD_OptionItem ops[] = { { MHD_OPTION_CONNECTION_LIMIT, 100, NULL }, { MHD_OPTION_CONNECTION_TIMEOUT, 10, NULL }, { MHD_OPTION_END, 0, NULL } }; d = MHD_start_daemon (0, 8080, NULL, NULL, dh, NULL, MHD_OPTION_ARRAY, ops, MHD_OPTION_END); For options that expect a single pointer argument, the second member of the |
MHD_OPTION_UNESCAPE_CALLBACK | Specify a function that should be called for unescaping escape sequences in URIs and URI arguments. Note that this function will NOT be used by the size_t my_unescaper(void *cls, struct MHD_Connection *c, char *s) where the return value must be "strlen(s)" and "s" should be updated. Note that the unescape function must not lengthen "s" (the result must be shorter than the input and still be 0-terminated). "cls" will be set to the second argument following MHD_OPTION_UNESCAPE_CALLBACK. |
MHD_OPTION_DIGEST_AUTH_RANDOM | Memory pointer for the random values to be used by the Digest Auth module. This option should be followed by two arguments. First an integer of type |
MHD_OPTION_NONCE_NC_SIZE | Size of the internal array holding the map of the nonce and the nonce counter. This option should be followed by an |
MHD_OPTION_THREAD_STACK_SIZE | Desired size of the stack for threads created by MHD. Followed by an argument of type |
MHD_OPTION_HTTPS_MEM_TRUST | Memory pointer for the certificate (ca.pem) to be used by the HTTPS daemon for client authentification. This option should be followed by a |
MHD_OPTION_CONNECTION_MEMORY_INCREMENT | Increment to use for growing the read buffer (followed by a |
MHD_OPTION_HTTPS_CERT_CALLBACK | Use a callback to determine which X.509 certificate should be used for a given HTTPS connection. This option should be followed by a argument of type |
MHD_OPTION_TCP_FASTOPEN_QUEUE_SIZE | When using MHD_USE_TCP_FASTOPEN, this option changes the default TCP fastopen queue length of 50. Note that having a larger queue size can cause resource exhaustion attack as the TCP stack has to now allocate resources for the SYN packet along with its DATA. This option should be followed by an |
MHD_OPTION_HTTPS_MEM_DHPARAMS | Memory pointer for the Diffie-Hellman parameters (dh.pem) to be used by the HTTPS daemon for key exchange. This option must be followed by a |
MHD_OPTION_LISTENING_ADDRESS_REUSE | If present and set to true, allow reusing address:port socket (by using SO_REUSEPORT on most platform, or platform-specific ways). If present and set to false, disallow reusing address:port socket (does nothing on most plaform, but uses SO_EXCLUSIVEADDRUSE on Windows). This option must be followed by a |
MHD_OPTION_HTTPS_KEY_PASSWORD | Memory pointer for a password that decrypts the private key (key.pem) to be used by the HTTPS daemon. This option should be followed by a
|
MHD_OPTION_NOTIFY_CONNECTION | Register a function that should be called whenever a connection is started or closed. This option should be followed by TWO pointers. First a pointer to a function of type MHD_NotifyConnectionCallback and second a pointer to a closure to pass to the request completed callback. The second pointer maybe NULL. |
MHD_OPTION_LISTEN_BACKLOG_SIZE | Allow to change maximum length of the queue of pending connections on listen socket. If not present than default platform-specific SOMAXCONN value is used. This option should be followed by an |
MHD_OPTION_STRICT_FOR_CLIENT | If set to 1 - be strict about the protocol (as opposed to as tolerant as possible). Specifically, at the moment, this flag causes MHD to reject HTTP 1.1 connections without a "Host" header. This is required by the standard, but of course in violation of the "be as liberal as possible in what you accept" norm. It is recommended to set this to 1 if you are testing clients against MHD, and 0 in production. if set to -1 - be opposite to strict and be permissive about the protocol, allowing slight deviations that are technically not allowed by the RFC. Specifically, at the moment, this flag causes MHD to allow spaces in header field names. This is disallowed by the standard. It is not recommended to set it to -1 on publicly available servers as it may potentially lower level of protection. This option should be followed by an |
Definition at line 1168 of file microhttpd.h.
enum MHD_ValueKind |
The enum MHD_ValueKind
specifies the source of the key-value pairs in the HTTP protocol.
Enumerator | |
---|---|
MHD_RESPONSE_HEADER_KIND | Response header |
MHD_RESPONSE_HEADER_KIND | Response header |
MHD_HEADER_KIND | HTTP header (request/response). |
MHD_COOKIE_KIND | Cookies. Note that the original HTTP header containing the cookie(s) will still be available and intact. |
MHD_POSTDATA_KIND | POST data. This is available only if a content encoding supported by MHD is used (currently only URL encoding), and only if the posted content fits within the available memory pool. Note that in that case, the upload data given to the MHD_AccessHandlerCallback will be empty (since it has already been processed). |
MHD_GET_ARGUMENT_KIND | GET (URI) arguments. |
MHD_FOOTER_KIND | HTTP footer (only for HTTP 1.1 chunked encodings). |
Definition at line 1524 of file microhttpd.h.
_MHD_EXTERN const char* MHD_get_reason_phrase_for | ( | unsigned int | code | ) |
Returns the string reason phrase for a response code.
If we don't have a string for a status code, we give the first message in that status code class.
Definition at line 176 of file reason_phrase.c.
Referenced by build_header_response().