#include <sys/types.h>
#include <sys/select.h>
#include <sys/socket.h>
Go to the source code of this file.
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") if the entire data fits into the allowed amount of memory for the connection. Unsupported encodings and large POST submissions are provided as a stream 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.
TODO:
Definition in file microhttpd.h.
#define MHD_HTTP_ACCEPTED 202 |
Definition at line 105 of file microhttpd.h.
#define MHD_HTTP_BAD_GATEWAY 502 |
Definition at line 148 of file microhttpd.h.
#define MHD_HTTP_BAD_REQUEST 400 |
Definition at line 121 of file microhttpd.h.
Referenced by MHD_connection_handle_idle(), parse_connection_headers(), and process_broken_line().
#define MHD_HTTP_BANDWIDTH_LIMIT_EXCEEDED 509 |
Definition at line 154 of file microhttpd.h.
#define MHD_HTTP_CONFLICT 409 |
Definition at line 130 of file microhttpd.h.
#define MHD_HTTP_CONTINUE 100 |
HTTP response codes.
Definition at line 99 of file microhttpd.h.
#define MHD_HTTP_CREATED 201 |
Definition at line 104 of file microhttpd.h.
#define MHD_HTTP_EXPECTATION_FAILED 417 |
Definition at line 138 of file microhttpd.h.
#define MHD_HTTP_FAILED_DEPENDENCY 424 |
Definition at line 141 of file microhttpd.h.
#define MHD_HTTP_FORBIDDEN 403 |
Definition at line 124 of file microhttpd.h.
#define MHD_HTTP_FOUND 302 |
Definition at line 114 of file microhttpd.h.
#define MHD_HTTP_GATEWAY_TIMEOUT 504 |
Definition at line 150 of file microhttpd.h.
#define MHD_HTTP_GONE 410 |
Definition at line 131 of file microhttpd.h.
#define MHD_HTTP_HEADER_ACCEPT "Accept" |
Definition at line 158 of file microhttpd.h.
#define MHD_HTTP_HEADER_ACCEPT_CHARSET "Accept-Charset" |
Definition at line 159 of file microhttpd.h.
#define MHD_HTTP_HEADER_ACCEPT_ENCODING "Accept-Encoding" |
Definition at line 160 of file microhttpd.h.
#define MHD_HTTP_HEADER_ACCEPT_LANGUAGE "Accept-Language" |
Definition at line 161 of file microhttpd.h.
#define MHD_HTTP_HEADER_ACCEPT_RANGES "Accept-Ranges" |
Definition at line 162 of file microhttpd.h.
#define MHD_HTTP_HEADER_AGE "Age" |
Definition at line 163 of file microhttpd.h.
#define MHD_HTTP_HEADER_ALLOW "Allow" |
Definition at line 164 of file microhttpd.h.
#define MHD_HTTP_HEADER_AUTHORIZATION "Authorization" |
Definition at line 165 of file microhttpd.h.
#define MHD_HTTP_HEADER_CACHE_CONTROL "Cache-Control" |
Definition at line 166 of file microhttpd.h.
#define MHD_HTTP_HEADER_CONNECTION "Connection" |
Definition at line 167 of file microhttpd.h.
Referenced by add_extra_headers(), and MHD_connection_handle_idle().
#define MHD_HTTP_HEADER_CONTENT_ENCODING "Content-Encoding" |
Definition at line 168 of file microhttpd.h.
#define MHD_HTTP_HEADER_CONTENT_LANGUAGE "Content-Language" |
Definition at line 169 of file microhttpd.h.
#define MHD_HTTP_HEADER_CONTENT_LENGTH "Content-Length" |
Definition at line 170 of file microhttpd.h.
Referenced by add_extra_headers(), and parse_connection_headers().
#define MHD_HTTP_HEADER_CONTENT_LOCATION "Content-Location" |
Definition at line 171 of file microhttpd.h.
#define MHD_HTTP_HEADER_CONTENT_MD5 "Content-MD5" |
Definition at line 172 of file microhttpd.h.
#define MHD_HTTP_HEADER_CONTENT_RANGE "Content-Range" |
Definition at line 173 of file microhttpd.h.
#define MHD_HTTP_HEADER_CONTENT_TYPE "Content-Type" |
Definition at line 174 of file microhttpd.h.
Referenced by MHD_create_post_processor(), and test_simple_large().
#define MHD_HTTP_HEADER_DATE "Date" |
#define MHD_HTTP_HEADER_ETAG "ETag" |
Definition at line 176 of file microhttpd.h.
#define MHD_HTTP_HEADER_EXPECT "Expect" |
#define MHD_HTTP_HEADER_EXPIRES "Expires" |
Definition at line 178 of file microhttpd.h.
#define MHD_HTTP_HEADER_FROM "From" |
Definition at line 179 of file microhttpd.h.
#define MHD_HTTP_HEADER_HOST "Host" |
#define MHD_HTTP_HEADER_IF_MATCH "If-Match" |
Definition at line 181 of file microhttpd.h.
#define MHD_HTTP_HEADER_IF_MODIFIED_SINCE "If-Modified-Since" |
Definition at line 182 of file microhttpd.h.
#define MHD_HTTP_HEADER_IF_NONE_MATCH "If-None-Match" |
Definition at line 183 of file microhttpd.h.
#define MHD_HTTP_HEADER_IF_RANGE "If-Range" |
Definition at line 184 of file microhttpd.h.
#define MHD_HTTP_HEADER_IF_UNMODIFIED_SINCE "If-Unmodified-Since" |
Definition at line 185 of file microhttpd.h.
#define MHD_HTTP_HEADER_LAST_MODIFIED "Last-Modified" |
Definition at line 186 of file microhttpd.h.
#define MHD_HTTP_HEADER_LOCATION "Location" |
Definition at line 187 of file microhttpd.h.
#define MHD_HTTP_HEADER_MAX_FORWARDS "Max-Forwards" |
Definition at line 188 of file microhttpd.h.
#define MHD_HTTP_HEADER_PRAGMA "Pragma" |
Definition at line 189 of file microhttpd.h.
#define MHD_HTTP_HEADER_PROXY_AUTHENTICATE "Proxy-Authenticate" |
Definition at line 190 of file microhttpd.h.
#define MHD_HTTP_HEADER_PROXY_AUTHORIZATION "Proxy-Authorization" |
Definition at line 191 of file microhttpd.h.
#define MHD_HTTP_HEADER_RANGE "Range" |
Definition at line 192 of file microhttpd.h.
#define MHD_HTTP_HEADER_REFERER "Referer" |
Definition at line 193 of file microhttpd.h.
#define MHD_HTTP_HEADER_RETRY_AFTER "Retry-After" |
Definition at line 194 of file microhttpd.h.
#define MHD_HTTP_HEADER_SERVER "Server" |
Definition at line 195 of file microhttpd.h.
#define MHD_HTTP_HEADER_TE "TE" |
Definition at line 196 of file microhttpd.h.
#define MHD_HTTP_HEADER_TRAILER "Trailer" |
Definition at line 197 of file microhttpd.h.
#define MHD_HTTP_HEADER_TRANSFER_ENCODING "Transfer-Encoding" |
Definition at line 198 of file microhttpd.h.
Referenced by add_extra_headers(), and parse_connection_headers().
#define MHD_HTTP_HEADER_UPGRADE "Upgrade" |
Definition at line 199 of file microhttpd.h.
#define MHD_HTTP_HEADER_USER_AGENT "User-Agent" |
Definition at line 200 of file microhttpd.h.
#define MHD_HTTP_HEADER_VARY "Vary" |
Definition at line 201 of file microhttpd.h.
#define MHD_HTTP_HEADER_VIA "Via" |
Definition at line 202 of file microhttpd.h.
#define MHD_HTTP_HEADER_WARNING "Warning" |
Definition at line 203 of file microhttpd.h.
#define MHD_HTTP_HEADER_WWW_AUTHENTICATE "WWW-Authenticate" |
Definition at line 204 of file microhttpd.h.
#define MHD_HTTP_HTTP_VERSION_NOT_SUPPORTED 505 |
Definition at line 151 of file microhttpd.h.
#define MHD_HTTP_INSUFFICIENT_STORAGE 507 |
Definition at line 153 of file microhttpd.h.
#define MHD_HTTP_INTERNAL_SERVER_ERROR 500 |
#define MHD_HTTP_LENGTH_REQUIRED 411 |
Definition at line 132 of file microhttpd.h.
#define MHD_HTTP_LOCKED 423 |
Definition at line 140 of file microhttpd.h.
#define MHD_HTTP_METHOD_CONNECT "CONNECT" |
HTTP methods
Definition at line 216 of file microhttpd.h.
#define MHD_HTTP_METHOD_DELETE "DELETE" |
Definition at line 217 of file microhttpd.h.
#define MHD_HTTP_METHOD_GET "GET" |
Definition at line 218 of file microhttpd.h.
#define MHD_HTTP_METHOD_HEAD "HEAD" |
#define MHD_HTTP_METHOD_NOT_ACCEPTABLE 406 |
Definition at line 127 of file microhttpd.h.
#define MHD_HTTP_METHOD_NOT_ALLOWED 405 |
Definition at line 126 of file microhttpd.h.
#define MHD_HTTP_METHOD_OPTIONS "OPTIONS" |
Definition at line 220 of file microhttpd.h.
#define MHD_HTTP_METHOD_POST "POST" |
Definition at line 221 of file microhttpd.h.
#define MHD_HTTP_METHOD_PUT "PUT" |
Definition at line 222 of file microhttpd.h.
#define MHD_HTTP_METHOD_TRACE "TRACE" |
Definition at line 223 of file microhttpd.h.
#define MHD_HTTP_MOVED_PERMANENTLY 301 |
Definition at line 113 of file microhttpd.h.
#define MHD_HTTP_MULTI_STATUS 207 |
Definition at line 110 of file microhttpd.h.
#define MHD_HTTP_MULTIPLE_CHOICES 300 |
Definition at line 112 of file microhttpd.h.
#define MHD_HTTP_NO_CONTENT 204 |
Definition at line 107 of file microhttpd.h.
#define MHD_HTTP_NON_AUTHORITATIVE_INFORMATION 203 |
Definition at line 106 of file microhttpd.h.
#define MHD_HTTP_NOT_EXTENDED 510 |
Definition at line 155 of file microhttpd.h.
#define MHD_HTTP_NOT_FOUND 404 |
Definition at line 125 of file microhttpd.h.
#define MHD_HTTP_NOT_IMPLEMENTED 501 |
Definition at line 147 of file microhttpd.h.
#define MHD_HTTP_NOT_MODIFIED 304 |
Definition at line 116 of file microhttpd.h.
#define MHD_HTTP_OK 200 |
Definition at line 103 of file microhttpd.h.
#define MHD_HTTP_PARTIAL_CONTENT 206 |
Definition at line 109 of file microhttpd.h.
#define MHD_HTTP_PAYMENT_REQUIRED 402 |
Definition at line 123 of file microhttpd.h.
#define MHD_HTTP_POST_ENCODING_FORM_URLENCODED "application/x-www-form-urlencoded" |
HTTP POST encodings, see also http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4
Definition at line 229 of file microhttpd.h.
Referenced by MHD_create_post_processor(), MHD_post_process(), and test_simple_large().
#define MHD_HTTP_POST_ENCODING_MULTIPART_FORMDATA "multipart/form-data" |
Definition at line 230 of file microhttpd.h.
Referenced by MHD_create_post_processor(), and MHD_post_process().
#define MHD_HTTP_PRECONDITION_FAILED 412 |
Definition at line 133 of file microhttpd.h.
#define MHD_HTTP_PROCESSING 102 |
Definition at line 101 of file microhttpd.h.
#define MHD_HTTP_PROXY_AUTHENTICATION_REQUIRED 407 |
Definition at line 128 of file microhttpd.h.
#define MHD_HTTP_REQUEST_ENTITY_TOO_LARGE 413 |
Definition at line 134 of file microhttpd.h.
Referenced by connection_add_header(), get_next_header_line(), MHD_connection_get_fdset(), parse_cookie_header(), and process_broken_line().
#define MHD_HTTP_REQUEST_TIMEOUT 408 |
Definition at line 129 of file microhttpd.h.
#define MHD_HTTP_REQUEST_URI_TOO_LONG 414 |
Definition at line 135 of file microhttpd.h.
Referenced by get_next_header_line(), and MHD_connection_get_fdset().
#define MHD_HTTP_REQUESTED_RANGE_NOT_SATISFIABLE 416 |
Definition at line 137 of file microhttpd.h.
#define MHD_HTTP_RESET_CONTENT 205 |
Definition at line 108 of file microhttpd.h.
#define MHD_HTTP_RETRY_WITH 449 |
Definition at line 144 of file microhttpd.h.
#define MHD_HTTP_SEE_OTHER 303 |
Definition at line 115 of file microhttpd.h.
#define MHD_HTTP_SERVICE_UNAVAILABLE 503 |
Definition at line 149 of file microhttpd.h.
#define MHD_HTTP_SWITCH_PROXY 306 |
Definition at line 118 of file microhttpd.h.
#define MHD_HTTP_SWITCHING_PROTOCOLS 101 |
Definition at line 100 of file microhttpd.h.
#define MHD_HTTP_TEMPORARY_REDIRECT 307 |
Definition at line 119 of file microhttpd.h.
#define MHD_HTTP_UNAUTHORIZED 401 |
Definition at line 122 of file microhttpd.h.
#define MHD_HTTP_UNORDERED_COLLECTION 425 |
Definition at line 142 of file microhttpd.h.
#define MHD_HTTP_UNPROCESSABLE_ENTITY 422 |
Definition at line 139 of file microhttpd.h.
#define MHD_HTTP_UNSUPPORTED_MEDIA_TYPE 415 |
Definition at line 136 of file microhttpd.h.
#define MHD_HTTP_UPGRADE_REQUIRED 426 |
Definition at line 143 of file microhttpd.h.
#define MHD_HTTP_USE_PROXY 305 |
Definition at line 117 of file microhttpd.h.
#define MHD_HTTP_VARIANT_ALSO_NEGOTIATES 506 |
Definition at line 152 of file microhttpd.h.
#define MHD_HTTP_VERSION_1_0 "HTTP/1.0" |
HTTP versions (used to match against the first line of the HTTP header as well as in the response code).
Definition at line 210 of file microhttpd.h.
#define MHD_HTTP_VERSION_1_1 "HTTP/1.1" |
Definition at line 211 of file microhttpd.h.
Referenced by add_extra_headers(), build_header_response(), MHD_connection_handle_idle(), MHD_queue_response(), need_100_continue(), and parse_connection_headers().
#define MHD_NO 0 |
Definition at line 94 of file microhttpd.h.
Referenced by add_extra_headers(), build_header_response(), call_connection_handler(), check_write_done(), connection_add_header(), do_read(), do_write(), find_boundary(), MHD_accept_connection(), MHD_add_response_header(), MHD_connection_get_fdset(), MHD_connection_handle_idle(), MHD_connection_handle_read(), MHD_connection_handle_write(), MHD_del_response_header(), MHD_destroy_post_processor(), MHD_get_fdset(), MHD_get_timeout(), MHD_pool_create(), MHD_pool_destroy(), MHD_post_process(), MHD_queue_response(), MHD_run(), MHD_select(), MHD_select_thread(), parse_arguments(), parse_connection_headers(), parse_cookie_header(), parse_initial_message_line(), post_process_multipart(), post_process_urlencoded(), process_broken_line(), process_header_line(), process_multipart_headers(), process_value_to_boundary(), transmit_error_response(), try_grow_read_buffer(), try_match_header(), try_ready_chunked_body(), and try_ready_normal_body().
#define MHD_VERSION 0x00030000 |
Current version of the library.
Definition at line 87 of file microhttpd.h.
#define MHD_YES 1 |
MHD-internal return codes.
Definition at line 92 of file microhttpd.h.
Referenced by add_extra_headers(), build_header_response(), call_connection_handler(), check_write_done(), connection_add_header(), do_read(), do_write(), find_boundary(), MHD_accept_connection(), MHD_add_response_header(), MHD_connection_get_fdset(), MHD_connection_handle_idle(), MHD_connection_handle_read(), MHD_connection_handle_write(), MHD_del_response_header(), MHD_destroy_post_processor(), MHD_get_connection_values(), MHD_get_fdset(), MHD_get_response_headers(), MHD_get_timeout(), MHD_pool_allocate(), MHD_pool_create(), MHD_post_process(), MHD_queue_response(), MHD_run(), MHD_select(), MHD_select_thread(), MHD_stop_daemon(), parse_arguments(), parse_connection_headers(), parse_cookie_header(), parse_initial_message_line(), post_process_multipart(), post_process_urlencoded(), process_broken_line(), process_header_line(), process_multipart_headers(), process_value_to_boundary(), transmit_error_response(), try_grow_read_buffer(), try_match_header(), try_ready_chunked_body(), try_ready_normal_body(), and value_checker().
typedef int(* MHD_AcceptPolicyCallback)(void *cls, const struct sockaddr *addr, socklen_t addrlen) |
Allow or deny a client to connect.
addr | address information from the client | |
addrlen | length of the address information |
Definition at line 461 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, unsigned int *upload_data_size, void **con_cls) |
A client has requested the given url using the given method ("GET", "PUT", "DELETE", "POST", etc). The callback must call MHS callbacks to provide content to give back to the client and return an HTTP status code (i.e. 200 for OK, 404, 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 ("GET", "PUT", etc.) | |
version | the HTTP version string (i.e. "HTTP/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_RequestCompleted" callback (which can be set with the MHD_OPTION_NOTIFY_COMPLETED). Initially, *con_cls will be NULL. |
Definition at line 501 of file microhttpd.h.
typedef int(* MHD_ContentReaderCallback)(void *cls, size_t pos, char *buf, int 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, either "immediately" if in multi-threaded mode (in which case the callback may want to do blocking operations) or in the next round if MHD_run is used. Returning 0 for a daemon that runs in internal select mode is an error (since it would result in busy waiting) and will cause the program to be aborted (abort()).
cls | extra argument to the callback | |
pos | position in the datastream to access; note that if an 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 an 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. |
Definition at line 575 of file microhttpd.h.
typedef void(* MHD_ContentReaderFreeCallback)(void *cls) |
This method is called by libmicrohttpd if we are done with a content reader. It should be used to free resources associated with the content reader.
Definition at line 583 of file microhttpd.h.
typedef int(* MHD_KeyValueIterator)(void *cls, enum MHD_ValueKind kind, const char *key, const char *value) |
Iterator over key-value pairs. This iterator can be used to iterate over all of the cookies, headers, or POST-data fields of a request, and also to iterate over the headers that have been added to a response.
Definition at line 538 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, size_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 | |
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 605 of file microhttpd.h.
typedef void(* MHD_RequestCompletedCallback)(void *cls, struct MHD_Connection *connection, void **con_cls, enum MHD_RequestTerminationCode toe) |
Signature of the callback used by MHD to notify the application about completed requests.
cls | client-defined closure | |
connection | connection handle | |
con_cls | value as set by the last call to the MHD_AccessHandlerCallback | |
toe | reason for request termination |
Definition at line 522 of file microhttpd.h.
enum MHD_FLAG |
Options for the MHD daemon. Note that if neither MHD_USER_THREAD_PER_CONNECTION nor MHD_USE_SELECT_INTERNALLY are used, the client wants control over the process and will call the appropriate microhttpd callbacks.
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 SSL, threads or IPv6).
Definition at line 242 of file microhttpd.h.
enum MHD_OPTION |
MHD options. Passed in the varargs portion of MHD_start_daemon.
Definition at line 294 of file microhttpd.h.
The MHD_RequestTerminationCode specifies reasons why a request has been terminated (or completed).
Definition at line 399 of file microhttpd.h.
enum MHD_ValueKind |
The MHD_ValueKind specifies the source of the key-value pairs in the HTTP protocol.
Definition at line 354 of file microhttpd.h.
int MHD_add_response_header | ( | struct MHD_Response * | response, | |
const char * | header, | |||
const char * | content | |||
) |
Add a header line to the response.
Definition at line 36 of file response.c.
References MHD_Response::first_header, MHD_HTTP_Header::header, MHD_HTTP_Header::kind, MHD_HEADER_KIND, MHD_NO, MHD_YES, MHD_HTTP_Header::next, and MHD_HTTP_Header::value.
Referenced by add_extra_headers().
struct MHD_PostProcessor* MHD_create_post_processor | ( | struct MHD_Connection * | connection, | |
unsigned int | buffer_size, | |||
MHD_PostDataIterator | ikvi, | |||
void * | cls | |||
) | [read] |
Create a PostProcessor.
A PostProcessor can be used to (incrementally) parse the data portion of a POST request.
connection | the connection on which the POST is happening (used to determine the POST format) | |
buffer_size | maximum number of bytes to use for internal buffering (used only for the parsing, specifically the parsing of the keys). A tiny value (256-1024) should be sufficient. Do NOT use a value smaller than 256. | |
iter | iterator to be called with the parsed data, Must NOT be NULL. | |
cls | first argument to ikvi |
A PostProcessor can be used to (incrementally) parse the data portion of a POST request.
connection | the connection on which the POST is happening (used to determine the POST format) | |
buffer_size | maximum number of bytes to use for internal buffering (used only for the parsing, specifically the parsing of the keys). A tiny value (256-1024) should be sufficient. Do NOT use 0. | |
ikvi | iterator to be called with the parsed data | |
cls | first argument to ikvi |
Definition at line 249 of file postprocessor.c.
References MHD_HEADER_KIND, MHD_HTTP_HEADER_CONTENT_TYPE, MHD_HTTP_POST_ENCODING_FORM_URLENCODED, MHD_HTTP_POST_ENCODING_MULTIPART_FORMDATA, MHD_lookup_connection_value(), PP_Init, and RN_Inactive.
Referenced by test_simple_large().
struct MHD_Response* MHD_create_response_from_callback | ( | size_t | size, | |
unsigned int | block_size, | |||
MHD_ContentReaderCallback | crc, | |||
void * | crc_cls, | |||
MHD_ContentReaderFreeCallback | crfc | |||
) | [read] |
Create a response object. The response object can be extended with header information and then be used any number of times.
size | size of the data portion of the response, -1 for unknown | |
block_size | preferred block size for querying crc (advisory only, MHD may still call crc using smaller chunks); this is essentially the buffer size used for IO, clients should pick a value that is appropriate for IO and memory performance requirements | |
crc | callback to use to obtain response data | |
crc_cls | extra argument to crc | |
crfc | callback to call to free crc_cls resources |
Definition at line 178 of file response.c.
References MHD_Response::crc, MHD_Response::crc_cls, MHD_Response::crfc, MHD_Response::data, MHD_Response::data_buffer_size, MHD_BUF_INC_SIZE, MHD_Response::mutex, MHD_Response::reference_count, and MHD_Response::total_size.
struct MHD_Response* MHD_create_response_from_data | ( | size_t | size, | |
void * | data, | |||
int | must_free, | |||
int | must_copy | |||
) | [read] |
Create a response object. The response object can be extended with header information and then be used any number of times.
size | size of the data portion of the response | |
data | the data itself | |
must_free | libmicrohttpd should free data when done | |
must_copy | libmicrohttpd must make a copy of data right away, the data maybe released anytime after this call returns |
Definition at line 220 of file response.c.
References MHD_Response::crc, MHD_Response::crc_cls, MHD_Response::crfc, MHD_Response::data, MHD_Response::data_size, MHD_Response::mutex, MHD_Response::reference_count, and MHD_Response::total_size.
Referenced by parse_connection_headers(), and transmit_error_response().
int MHD_del_response_header | ( | struct MHD_Response * | response, | |
const char * | header, | |||
const char * | content | |||
) |
Delete a header line from the response.
Definition at line 80 of file response.c.
References MHD_Response::first_header, MHD_HTTP_Header::header, MHD_NO, MHD_YES, MHD_HTTP_Header::next, and MHD_HTTP_Header::value.
int MHD_destroy_post_processor | ( | struct MHD_PostProcessor * | pp | ) |
Release PostProcessor resources.
Definition at line 1023 of file postprocessor.c.
References free_unmarked(), MHD_NO, MHD_YES, NE_none, and PP_Done.
Referenced by test_simple_large().
void MHD_destroy_response | ( | struct MHD_Response * | response | ) |
Destroy a response object and associated resources. Note that libmicrohttpd may keep some of the resources around if the response is still in the queue for some clients, so the memory may not necessarily be freed immediatley.
Definition at line 266 of file response.c.
References MHD_Response::crc_cls, MHD_Response::crfc, MHD_Response::first_header, MHD_HTTP_Header::header, MHD_Response::mutex, MHD_HTTP_Header::next, MHD_Response::reference_count, and MHD_HTTP_Header::value.
Referenced by MHD_cleanup_connections(), MHD_connection_handle_idle(), parse_connection_headers(), and transmit_error_response().
int MHD_get_connection_values | ( | struct MHD_Connection * | connection, | |
enum MHD_ValueKind | kind, | |||
MHD_KeyValueIterator | iterator, | |||
void * | iterator_cls | |||
) |
Get all of the headers from the request.
iterator | callback to call on each header; maybe NULL (then just count headers) | |
iterator_cls | extra argument to iterator |
Definition at line 130 of file connection.c.
References MHD_HTTP_Header::header, MHD_Connection::headers_received, MHD_HTTP_Header::kind, MHD_YES, MHD_HTTP_Header::next, and MHD_HTTP_Header::value.
int MHD_get_fdset | ( | struct MHD_Daemon * | daemon, | |
fd_set * | read_fd_set, | |||
fd_set * | write_fd_set, | |||
fd_set * | except_fd_set, | |||
int * | max_fd | |||
) |
Obtain the select sets for this daemon.
Definition at line 64 of file daemon.c.
References MHD_Daemon::connections, MHD_connection_get_fdset(), MHD_NO, MHD_USE_THREAD_PER_CONNECTION, MHD_YES, MHD_Connection::next, MHD_Daemon::options, MHD_Daemon::shutdown, and MHD_Daemon::socket_fd.
Referenced by MHD_select().
const char* MHD_get_response_header | ( | struct MHD_Response * | response, | |
const char * | key | |||
) |
Get a particular header from the response.
key | which header to get |
Definition at line 145 of file response.c.
References MHD_Response::first_header, MHD_HTTP_Header::header, MHD_HTTP_Header::next, and MHD_HTTP_Header::value.
Referenced by add_extra_headers(), and build_header_response().
int MHD_get_response_headers | ( | struct MHD_Response * | response, | |
MHD_KeyValueIterator | iterator, | |||
void * | iterator_cls | |||
) |
Get all of the headers added to a response.
iterator | callback to call on each header; maybe NULL (then just count headers) | |
iterator_cls | extra argument to iterator |
Definition at line 119 of file response.c.
References MHD_Response::first_header, MHD_HTTP_Header::header, MHD_HTTP_Header::kind, MHD_YES, MHD_HTTP_Header::next, and MHD_HTTP_Header::value.
int MHD_get_timeout | ( | struct MHD_Daemon * | daemon, | |
unsigned long long * | timeout | |||
) |
Obtain timeout value for select for this daemon (only needed if connection timeout is used). The returned value is how long select should at most block, not the timeout value set for connections.
timeout | set to the timeout (in milliseconds) |
Definition at line 377 of file daemon.c.
References MHD_Daemon::connection_timeout, MHD_Daemon::connections, MHD_Connection::last_activity, MHD_NO, MHD_YES, and MHD_Connection::next.
Referenced by MHD_select().
const char* MHD_lookup_connection_value | ( | struct MHD_Connection * | connection, | |
enum MHD_ValueKind | kind, | |||
const char * | key | |||
) |
Get a particular header value. If multiple values match the kind, return any one of them.
key | the header to look for |
Definition at line 164 of file connection.c.
References MHD_HTTP_Header::header, MHD_Connection::headers_received, MHD_HTTP_Header::kind, MHD_HTTP_Header::next, and MHD_HTTP_Header::value.
Referenced by MHD_connection_handle_idle(), MHD_create_post_processor(), need_100_continue(), parse_connection_headers(), and parse_cookie_header().
int MHD_post_process | ( | struct MHD_PostProcessor * | pp, | |
const char * | post_data, | |||
unsigned int | post_data_len | |||
) |
Parse and process POST data. Call this function when POST data is available (usually during an MHD_AccessHandlerCallback) with the upload_data and upload_data_size. Whenever possible, this will then cause calls to the MHD_IncrementalKeyValueIterator.
pp | the post processor | |
post_data | post_data_len bytes of POST data | |
post_data_len | length of post_data |
Definition at line 1002 of file postprocessor.c.
References MHD_HTTP_POST_ENCODING_FORM_URLENCODED, MHD_HTTP_POST_ENCODING_MULTIPART_FORMDATA, MHD_NO, MHD_YES, post_process_multipart(), and post_process_urlencoded().
Referenced by test_simple_large().
int MHD_queue_response | ( | struct MHD_Connection * | connection, | |
unsigned int | status_code, | |||
struct MHD_Response * | response | |||
) |
Queue a response to be transmitted to the client (as soon as possible).
connection | the connection identifying the client | |
status_code | HTTP status code (i.e. 200 for OK) | |
response | response to transmit |
Definition at line 192 of file connection.c.
References MHD_Connection::have_chunked_response, MHD_Connection::method, MHD_CONNECTION_FOOTERS_RECEIVED, MHD_CONNECTION_HEADERS_PROCESSED, MHD_HTTP_METHOD_HEAD, MHD_HTTP_VERSION_1_1, MHD_increment_response_rc(), MHD_NO, MHD_YES, MHD_Connection::read_closed, MHD_Connection::response, MHD_Connection::response_write_position, MHD_Connection::responseCode, SHUTDOWN, MHD_Connection::socket_fd, MHD_Connection::state, MHD_Response::total_size, and MHD_Connection::version.
Referenced by parse_connection_headers(), and transmit_error_response().
int MHD_run | ( | struct MHD_Daemon * | daemon | ) |
Run webserver operations (without blocking unless in client callbacks). This method should be called by clients in combination with MHD_get_fdset if the client-controlled select method is used.
Definition at line 519 of file daemon.c.
References MHD_cleanup_connections(), MHD_NO, MHD_select(), MHD_USE_SELECT_INTERNALLY, MHD_USE_THREAD_PER_CONNECTION, MHD_YES, MHD_Daemon::options, and MHD_Daemon::shutdown.
struct MHD_Daemon* MHD_start_daemon | ( | unsigned int | options, | |
unsigned short | port, | |||
MHD_AcceptPolicyCallback | apc, | |||
void * | apc_cls, | |||
MHD_AccessHandlerCallback | dh, | |||
void * | dh_cls, | |||
... | ||||
) | [read] |
Start a webserver on the given port.
flags | combination of MHD_FLAG values | |
port | port to bind to | |
apc | callback to call to check which clients will be allowed to connect; you can pass NULL in which case connections from any IP will be accepted | |
apc_cls | extra argument to apc | |
dh | handler called for all requests (repeatedly) | |
dh_cls | extra argument to dh | |
... | list of options (type-value pairs, terminated with MHD_OPTION_END). |
port | port to bind to | |
apc | callback to call to check which clients will be allowed to connect | |
apc_cls | extra argument to apc | |
dh | default handler for all URIs | |
dh_cls | extra argument to dh |
Definition at line 560 of file daemon.c.
References MHD_Daemon::apc, MHD_Daemon::apc_cls, BIND, CLOSE, MHD_Daemon::connection_timeout, MHD_Daemon::default_handler, MHD_Daemon::default_handler_cls, LISTEN, MHD_Daemon::max_connections, MHD_MAX_CONNECTIONS_DEFAULT, MHD_OPTION_CONNECTION_LIMIT, MHD_OPTION_CONNECTION_MEMORY_LIMIT, MHD_OPTION_CONNECTION_TIMEOUT, MHD_OPTION_END, MHD_OPTION_NOTIFY_COMPLETED, MHD_OPTION_PER_IP_CONNECTION_LIMIT, MHD_POOL_SIZE_DEFAULT, MHD_select_thread(), MHD_USE_DEBUG, MHD_USE_IPv6, MHD_USE_SELECT_INTERNALLY, MHD_USE_SSL, MHD_USE_THREAD_PER_CONNECTION, MHD_Daemon::notify_completed, MHD_Daemon::notify_completed_cls, MHD_Daemon::options, MHD_Daemon::per_ip_connection_limit, MHD_Daemon::pid, MHD_Daemon::pool_size, MHD_Daemon::port, SETSOCKOPT, SOCKET, MHD_Daemon::socket_fd, and STRERROR.
void MHD_stop_daemon | ( | struct MHD_Daemon * | daemon | ) |
Shutdown an http daemon.
Definition at line 704 of file daemon.c.
References MHD_Connection::client_context, CLOSE, MHD_Daemon::connections, MHD_cleanup_connections(), MHD_REQUEST_TERMINATED_DAEMON_SHUTDOWN, MHD_USE_SELECT_INTERNALLY, MHD_USE_THREAD_PER_CONNECTION, MHD_YES, MHD_Daemon::notify_completed, MHD_Daemon::notify_completed_cls, MHD_Daemon::options, MHD_Daemon::pid, SHUTDOWN, MHD_Daemon::shutdown, SIGALRM, MHD_Connection::socket_fd, and MHD_Daemon::socket_fd.