80#ifndef MHD_MICROHTTPD_H
81#define MHD_MICROHTTPD_H
84# define MHD_C_DECLRATIONS_START_HERE_
85# define MHD_C_DECLRATIONS_FINISH_HERE_
88# define MHD_C_DECLRATIONS_START_HERE_ extern "C" {
89# define MHD_C_DECLRATIONS_FINISH_HERE_ }
104#define MHD_VERSION 0x01000200
114#ifndef MHD_PLATFORM_H
115#if defined(_WIN32) && ! defined(__CYGWIN__) && \
116 ! defined(_CRT_DECLARE_NONSTDC_NAMES)
118#define _CRT_DECLARE_NONSTDC_NAMES 1
122#include <sys/types.h>
123#if ! defined(_WIN32) || defined(__CYGWIN__)
126#include <sys/socket.h>
129#if defined(_MSC_FULL_VER) && ! defined(_SSIZE_T_DEFINED)
130#define _SSIZE_T_DEFINED
131typedef intptr_t ssize_t;
136#if defined(__CYGWIN__) && ! defined(_SYS_TYPES_FD_SET)
138#error Cygwin with winsock fd_set is not supported
141#ifdef __has_attribute
142#if __has_attribute (flag_enum)
143#define _MHD_FLAGS_ENUM __attribute__((flag_enum))
145#if __has_attribute (enum_extensibility)
146#define _MHD_FIXED_ENUM __attribute__((enum_extensibility (closed)))
150#ifndef _MHD_FLAGS_ENUM
151#define _MHD_FLAGS_ENUM
153#ifndef _MHD_FIXED_ENUM
154#define _MHD_FIXED_ENUM
157#define _MHD_FIXED_FLAGS_ENUM _MHD_FIXED_ENUM _MHD_FLAGS_ENUM
181#define MHD_SIZE_UNKNOWN UINT64_MAX
183#define MHD_SIZE_UNKNOWN ((uint64_t) -1LL)
186#define MHD_CONTENT_READER_END_OF_STREAM ((ssize_t) -1)
187#define MHD_CONTENT_READER_END_WITH_ERROR ((ssize_t) -2)
190#if defined(_WIN32) && defined(MHD_W32LIB)
191#define _MHD_EXTERN extern
192#elif defined(_WIN32) && defined(MHD_W32DLL)
194#define _MHD_EXTERN __declspec(dllimport)
196#define _MHD_EXTERN extern
200#ifndef MHD_SOCKET_DEFINED
204#if ! defined(_WIN32) || defined(_SYS_TYPES_FD_SET)
205#define MHD_POSIX_SOCKETS 1
207#define MHD_INVALID_SOCKET (-1)
209#define MHD_WINSOCK_SOCKETS 1
212#define MHD_INVALID_SOCKET (INVALID_SOCKET)
214#define MHD_SOCKET_DEFINED 1
220#ifdef MHD_NO_DEPRECATION
221#define _MHD_DEPR_MACRO(msg)
222#define _MHD_NO_DEPR_IN_MACRO 1
223#define _MHD_DEPR_IN_MACRO(msg)
224#define _MHD_NO_DEPR_FUNC 1
225#define _MHD_DEPR_FUNC(msg)
228#ifndef _MHD_DEPR_MACRO
229#if defined(_MSC_FULL_VER) && _MSC_VER + 0 >= 1500
232#define _MHD_INSTRMACRO(a) #a
233#define _MHD_STRMACRO(a) _MHD_INSTRMACRO (a)
235#define _MHD_DEPR_MACRO(msg) \
237 (message (__FILE__ "(" _MHD_STRMACRO ( __LINE__) "): warning: " msg))
238#define _MHD_DEPR_IN_MACRO(msg) _MHD_DEPR_MACRO (msg)
239#elif defined(__clang__) || defined(__GNUC_PATCHLEVEL__)
241#define _MHD_GCC_PRAG(x) _Pragma(#x)
242#if (defined(__clang__) && \
243 (__clang_major__ + 0 >= 5 || \
244 (! defined(__apple_build_version__) && \
245 (__clang_major__ + 0 > 3 || \
246 (__clang_major__ + 0 == 3 && __clang_minor__ >= 3))))) || \
247 __GNUC__ + 0 > 4 || (__GNUC__ + 0 == 4 && __GNUC_MINOR__ + 0 >= 8)
250#define _MHD_DEPR_MACRO(msg) _MHD_GCC_PRAG (GCC warning msg)
251#define _MHD_DEPR_IN_MACRO(msg) _MHD_DEPR_MACRO (msg)
254#define _MHD_DEPR_MACRO(msg) _MHD_GCC_PRAG (message msg)
255#if (defined(__clang__) && \
256 (__clang_major__ + 0 > 2 || \
257 (__clang_major__ + 0 == 2 && __clang_minor__ >= 9)))
259#define _MHD_DEPR_IN_MACRO(msg) _MHD_DEPR_MACRO (msg)
266#ifndef _MHD_DEPR_MACRO
267#define _MHD_DEPR_MACRO(msg)
270#ifndef _MHD_DEPR_IN_MACRO
271#define _MHD_NO_DEPR_IN_MACRO 1
272#define _MHD_DEPR_IN_MACRO(msg)
275#ifndef _MHD_DEPR_FUNC
276#if defined(_MSC_FULL_VER) && _MSC_VER + 0 >= 1400
278#define _MHD_DEPR_FUNC(msg) __declspec(deprecated (msg))
279#elif defined(_MSC_FULL_VER) && _MSC_VER + 0 >= 1310
281#define _MHD_DEPR_FUNC(msg) __declspec(deprecated)
282#elif (__GNUC__ + 0 >= 5) || (defined(__clang__) && \
283 (__clang_major__ + 0 > 2 || \
284 (__clang_major__ + 0 == 2 && __clang_minor__ >= 9)))
286#define _MHD_DEPR_FUNC(msg) __attribute__((deprecated (msg)))
287#elif defined(__clang__) || __GNUC__ + 0 > 3 || \
288 (__GNUC__ + 0 == 3 && __GNUC_MINOR__ + 0 >= 1)
291#define _MHD_DEPR_FUNC(msg) __attribute__((__deprecated__))
296#ifndef _MHD_DEPR_FUNC
297#define _MHD_NO_DEPR_FUNC 1
298#define _MHD_DEPR_FUNC(msg)
310#define MHD_LONG_LONG long long
311#define MHD_UNSIGNED_LONG_LONG unsigned long long
314 "Macro MHD_LONG_LONG is deprecated, use MHD_UNSIGNED_LONG_LONG")
320#ifndef MHD_LONG_LONG_PRINTF
324#define MHD_LONG_LONG_PRINTF "ll"
325#define MHD_UNSIGNED_LONG_LONG_PRINTF "%llu"
328 "Macro MHD_LONG_LONG_PRINTF is deprecated, use MHD_UNSIGNED_LONG_LONG_PRINTF")
341#define MHD_HTTP_CONTINUE 100
343#define MHD_HTTP_SWITCHING_PROTOCOLS 101
345#define MHD_HTTP_PROCESSING 102
347#define MHD_HTTP_EARLY_HINTS 103
350#define MHD_HTTP_OK 200
352#define MHD_HTTP_CREATED 201
354#define MHD_HTTP_ACCEPTED 202
356#define MHD_HTTP_NON_AUTHORITATIVE_INFORMATION 203
358#define MHD_HTTP_NO_CONTENT 204
360#define MHD_HTTP_RESET_CONTENT 205
362#define MHD_HTTP_PARTIAL_CONTENT 206
364#define MHD_HTTP_MULTI_STATUS 207
366#define MHD_HTTP_ALREADY_REPORTED 208
369#define MHD_HTTP_IM_USED 226
372#define MHD_HTTP_MULTIPLE_CHOICES 300
374#define MHD_HTTP_MOVED_PERMANENTLY 301
376#define MHD_HTTP_FOUND 302
378#define MHD_HTTP_SEE_OTHER 303
380#define MHD_HTTP_NOT_MODIFIED 304
382#define MHD_HTTP_USE_PROXY 305
384#define MHD_HTTP_SWITCH_PROXY 306
386#define MHD_HTTP_TEMPORARY_REDIRECT 307
388#define MHD_HTTP_PERMANENT_REDIRECT 308
391#define MHD_HTTP_BAD_REQUEST 400
393#define MHD_HTTP_UNAUTHORIZED 401
395#define MHD_HTTP_PAYMENT_REQUIRED 402
397#define MHD_HTTP_FORBIDDEN 403
399#define MHD_HTTP_NOT_FOUND 404
401#define MHD_HTTP_METHOD_NOT_ALLOWED 405
403#define MHD_HTTP_NOT_ACCEPTABLE 406
405#define MHD_HTTP_PROXY_AUTHENTICATION_REQUIRED 407
407#define MHD_HTTP_REQUEST_TIMEOUT 408
409#define MHD_HTTP_CONFLICT 409
411#define MHD_HTTP_GONE 410
413#define MHD_HTTP_LENGTH_REQUIRED 411
415#define MHD_HTTP_PRECONDITION_FAILED 412
417#define MHD_HTTP_CONTENT_TOO_LARGE 413
419#define MHD_HTTP_URI_TOO_LONG 414
421#define MHD_HTTP_UNSUPPORTED_MEDIA_TYPE 415
423#define MHD_HTTP_RANGE_NOT_SATISFIABLE 416
425#define MHD_HTTP_EXPECTATION_FAILED 417
429#define MHD_HTTP_MISDIRECTED_REQUEST 421
431#define MHD_HTTP_UNPROCESSABLE_CONTENT 422
433#define MHD_HTTP_LOCKED 423
435#define MHD_HTTP_FAILED_DEPENDENCY 424
437#define MHD_HTTP_TOO_EARLY 425
439#define MHD_HTTP_UPGRADE_REQUIRED 426
442#define MHD_HTTP_PRECONDITION_REQUIRED 428
444#define MHD_HTTP_TOO_MANY_REQUESTS 429
447#define MHD_HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE 431
450#define MHD_HTTP_UNAVAILABLE_FOR_LEGAL_REASONS 451
453#define MHD_HTTP_INTERNAL_SERVER_ERROR 500
455#define MHD_HTTP_NOT_IMPLEMENTED 501
457#define MHD_HTTP_BAD_GATEWAY 502
459#define MHD_HTTP_SERVICE_UNAVAILABLE 503
461#define MHD_HTTP_GATEWAY_TIMEOUT 504
463#define MHD_HTTP_HTTP_VERSION_NOT_SUPPORTED 505
465#define MHD_HTTP_VARIANT_ALSO_NEGOTIATES 506
467#define MHD_HTTP_INSUFFICIENT_STORAGE 507
469#define MHD_HTTP_LOOP_DETECTED 508
472#define MHD_HTTP_NOT_EXTENDED 510
474#define MHD_HTTP_NETWORK_AUTHENTICATION_REQUIRED 511
479#define MHD_HTTP_RETRY_WITH 449
482#define MHD_HTTP_BLOCKED_BY_WINDOWS_PARENTAL_CONTROLS 450
485#define MHD_HTTP_BANDWIDTH_LIMIT_EXCEEDED 509
489#define MHD_HTTP_METHOD_NOT_ACCEPTABLE _MHD_DEPR_IN_MACRO ( \
490 "Value MHD_HTTP_METHOD_NOT_ACCEPTABLE is deprecated, use MHD_HTTP_NOT_ACCEPTABLE" \
494#define MHD_HTTP_REQUEST_ENTITY_TOO_LARGE _MHD_DEPR_IN_MACRO ( \
495 "Value MHD_HTTP_REQUEST_ENTITY_TOO_LARGE is deprecated, use MHD_HTTP_CONTENT_TOO_LARGE" \
499#define MHD_HTTP_PAYLOAD_TOO_LARGE _MHD_DEPR_IN_MACRO ( \
500 "Value MHD_HTTP_PAYLOAD_TOO_LARGE is deprecated use MHD_HTTP_CONTENT_TOO_LARGE" \
504#define MHD_HTTP_REQUEST_URI_TOO_LONG _MHD_DEPR_IN_MACRO ( \
505 "Value MHD_HTTP_REQUEST_URI_TOO_LONG is deprecated, use MHD_HTTP_URI_TOO_LONG" \
509#define MHD_HTTP_REQUESTED_RANGE_NOT_SATISFIABLE _MHD_DEPR_IN_MACRO ( \
510 "Value MHD_HTTP_REQUESTED_RANGE_NOT_SATISFIABLE is deprecated, use MHD_HTTP_RANGE_NOT_SATISFIABLE" \
514#define MHD_HTTP_UNPROCESSABLE_ENTITY _MHD_DEPR_IN_MACRO ( \
515 "Value MHD_HTTP_UNPROCESSABLE_ENTITY is deprecated, use MHD_HTTP_UNPROCESSABLE_CONTENT" \
519#define MHD_HTTP_UNORDERED_COLLECTION _MHD_DEPR_IN_MACRO ( \
520 "Value MHD_HTTP_UNORDERED_COLLECTION is deprecated as it was removed from RFC" \
524#define MHD_HTTP_NO_RESPONSE _MHD_DEPR_IN_MACRO ( \
525 "Value MHD_HTTP_NO_RESPONSE is deprecated as it is nginx internal code for logs only" \
556#define MHD_ICY_FLAG ((uint32_t) (((uint32_t) 1) << 31))
568#define MHD_HTTP_HEADER_ACCEPT "Accept"
570#define MHD_HTTP_HEADER_ACCEPT_CHARSET "Accept-Charset"
572#define MHD_HTTP_HEADER_ACCEPT_ENCODING "Accept-Encoding"
574#define MHD_HTTP_HEADER_ACCEPT_LANGUAGE "Accept-Language"
576#define MHD_HTTP_HEADER_ACCEPT_RANGES "Accept-Ranges"
578#define MHD_HTTP_HEADER_AGE "Age"
580#define MHD_HTTP_HEADER_ALLOW "Allow"
582#define MHD_HTTP_HEADER_AUTHENTICATION_INFO "Authentication-Info"
584#define MHD_HTTP_HEADER_AUTHORIZATION "Authorization"
586#define MHD_HTTP_HEADER_CACHE_CONTROL "Cache-Control"
588#define MHD_HTTP_HEADER_CLOSE "Close"
590#define MHD_HTTP_HEADER_CONNECTION "Connection"
592#define MHD_HTTP_HEADER_CONTENT_ENCODING "Content-Encoding"
594#define MHD_HTTP_HEADER_CONTENT_LANGUAGE "Content-Language"
596#define MHD_HTTP_HEADER_CONTENT_LENGTH "Content-Length"
598#define MHD_HTTP_HEADER_CONTENT_LOCATION "Content-Location"
600#define MHD_HTTP_HEADER_CONTENT_RANGE "Content-Range"
602#define MHD_HTTP_HEADER_CONTENT_TYPE "Content-Type"
604#define MHD_HTTP_HEADER_DATE "Date"
606#define MHD_HTTP_HEADER_ETAG "ETag"
608#define MHD_HTTP_HEADER_EXPECT "Expect"
610#define MHD_HTTP_HEADER_EXPIRES "Expires"
612#define MHD_HTTP_HEADER_FROM "From"
614#define MHD_HTTP_HEADER_HOST "Host"
616#define MHD_HTTP_HEADER_IF_MATCH "If-Match"
618#define MHD_HTTP_HEADER_IF_MODIFIED_SINCE "If-Modified-Since"
620#define MHD_HTTP_HEADER_IF_NONE_MATCH "If-None-Match"
622#define MHD_HTTP_HEADER_IF_RANGE "If-Range"
624#define MHD_HTTP_HEADER_IF_UNMODIFIED_SINCE "If-Unmodified-Since"
626#define MHD_HTTP_HEADER_LAST_MODIFIED "Last-Modified"
628#define MHD_HTTP_HEADER_LOCATION "Location"
630#define MHD_HTTP_HEADER_MAX_FORWARDS "Max-Forwards"
632#define MHD_HTTP_HEADER_MIME_VERSION "MIME-Version"
634#define MHD_HTTP_HEADER_PRAGMA "Pragma"
636#define MHD_HTTP_HEADER_PROXY_AUTHENTICATE "Proxy-Authenticate"
638#define MHD_HTTP_HEADER_PROXY_AUTHENTICATION_INFO "Proxy-Authentication-Info"
640#define MHD_HTTP_HEADER_PROXY_AUTHORIZATION "Proxy-Authorization"
642#define MHD_HTTP_HEADER_RANGE "Range"
644#define MHD_HTTP_HEADER_REFERER "Referer"
646#define MHD_HTTP_HEADER_RETRY_AFTER "Retry-After"
648#define MHD_HTTP_HEADER_SERVER "Server"
650#define MHD_HTTP_HEADER_TE "TE"
652#define MHD_HTTP_HEADER_TRAILER "Trailer"
654#define MHD_HTTP_HEADER_TRANSFER_ENCODING "Transfer-Encoding"
656#define MHD_HTTP_HEADER_UPGRADE "Upgrade"
658#define MHD_HTTP_HEADER_USER_AGENT "User-Agent"
660#define MHD_HTTP_HEADER_VARY "Vary"
662#define MHD_HTTP_HEADER_VIA "Via"
664#define MHD_HTTP_HEADER_WWW_AUTHENTICATE "WWW-Authenticate"
666#define MHD_HTTP_HEADER_ASTERISK "*"
670#define MHD_HTTP_HEADER_A_IM "A-IM"
672#define MHD_HTTP_HEADER_ACCEPT_ADDITIONS "Accept-Additions"
674#define MHD_HTTP_HEADER_ACCEPT_CH "Accept-CH"
676#define MHD_HTTP_HEADER_ACCEPT_DATETIME "Accept-Datetime"
678#define MHD_HTTP_HEADER_ACCEPT_FEATURES "Accept-Features"
680#define MHD_HTTP_HEADER_ACCEPT_PATCH "Accept-Patch"
682#define MHD_HTTP_HEADER_ACCEPT_POST "Accept-Post"
684#define MHD_HTTP_HEADER_ACCEPT_SIGNATURE "Accept-Signature"
686#define MHD_HTTP_HEADER_ACCESS_CONTROL_ALLOW_CREDENTIALS \
687 "Access-Control-Allow-Credentials"
689#define MHD_HTTP_HEADER_ACCESS_CONTROL_ALLOW_HEADERS \
690 "Access-Control-Allow-Headers"
692#define MHD_HTTP_HEADER_ACCESS_CONTROL_ALLOW_METHODS \
693 "Access-Control-Allow-Methods"
695#define MHD_HTTP_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN \
696 "Access-Control-Allow-Origin"
698#define MHD_HTTP_HEADER_ACCESS_CONTROL_EXPOSE_HEADERS \
699 "Access-Control-Expose-Headers"
701#define MHD_HTTP_HEADER_ACCESS_CONTROL_MAX_AGE "Access-Control-Max-Age"
703#define MHD_HTTP_HEADER_ACCESS_CONTROL_REQUEST_HEADERS \
704 "Access-Control-Request-Headers"
706#define MHD_HTTP_HEADER_ACCESS_CONTROL_REQUEST_METHOD \
707 "Access-Control-Request-Method"
709#define MHD_HTTP_HEADER_ALPN "ALPN"
711#define MHD_HTTP_HEADER_ALT_SVC "Alt-Svc"
713#define MHD_HTTP_HEADER_ALT_USED "Alt-Used"
715#define MHD_HTTP_HEADER_ALTERNATES "Alternates"
717#define MHD_HTTP_HEADER_APPLY_TO_REDIRECT_REF "Apply-To-Redirect-Ref"
719#define MHD_HTTP_HEADER_AUTHENTICATION_CONTROL "Authentication-Control"
721#define MHD_HTTP_HEADER_CACHE_STATUS "Cache-Status"
723#define MHD_HTTP_HEADER_CAL_MANAGED_ID "Cal-Managed-ID"
725#define MHD_HTTP_HEADER_CALDAV_TIMEZONES "CalDAV-Timezones"
727#define MHD_HTTP_HEADER_CAPSULE_PROTOCOL "Capsule-Protocol"
729#define MHD_HTTP_HEADER_CDN_CACHE_CONTROL "CDN-Cache-Control"
731#define MHD_HTTP_HEADER_CDN_LOOP "CDN-Loop"
733#define MHD_HTTP_HEADER_CERT_NOT_AFTER "Cert-Not-After"
735#define MHD_HTTP_HEADER_CERT_NOT_BEFORE "Cert-Not-Before"
737#define MHD_HTTP_HEADER_CLEAR_SITE_DATA "Clear-Site-Data"
739#define MHD_HTTP_HEADER_CLIENT_CERT "Client-Cert"
741#define MHD_HTTP_HEADER_CLIENT_CERT_CHAIN "Client-Cert-Chain"
743#define MHD_HTTP_HEADER_CONTENT_DIGEST "Content-Digest"
745#define MHD_HTTP_HEADER_CONTENT_DISPOSITION "Content-Disposition"
747#define MHD_HTTP_HEADER_CONTENT_ID "Content-ID"
749#define MHD_HTTP_HEADER_CONTENT_SECURITY_POLICY "Content-Security-Policy"
751#define MHD_HTTP_HEADER_CONTENT_SECURITY_POLICY_REPORT_ONLY \
752 "Content-Security-Policy-Report-Only"
754#define MHD_HTTP_HEADER_COOKIE "Cookie"
756#define MHD_HTTP_HEADER_CROSS_ORIGIN_EMBEDDER_POLICY \
757 "Cross-Origin-Embedder-Policy"
759#define MHD_HTTP_HEADER_CROSS_ORIGIN_EMBEDDER_POLICY_REPORT_ONLY \
760 "Cross-Origin-Embedder-Policy-Report-Only"
762#define MHD_HTTP_HEADER_CROSS_ORIGIN_OPENER_POLICY "Cross-Origin-Opener-Policy"
764#define MHD_HTTP_HEADER_CROSS_ORIGIN_OPENER_POLICY_REPORT_ONLY \
765 "Cross-Origin-Opener-Policy-Report-Only"
767#define MHD_HTTP_HEADER_CROSS_ORIGIN_RESOURCE_POLICY \
768 "Cross-Origin-Resource-Policy"
770#define MHD_HTTP_HEADER_DASL "DASL"
772#define MHD_HTTP_HEADER_DAV "DAV"
774#define MHD_HTTP_HEADER_DELTA_BASE "Delta-Base"
776#define MHD_HTTP_HEADER_DEPTH "Depth"
778#define MHD_HTTP_HEADER_DESTINATION "Destination"
780#define MHD_HTTP_HEADER_DIFFERENTIAL_ID "Differential-ID"
782#define MHD_HTTP_HEADER_DPOP "DPoP"
784#define MHD_HTTP_HEADER_DPOP_NONCE "DPoP-Nonce"
786#define MHD_HTTP_HEADER_EARLY_DATA "Early-Data"
788#define MHD_HTTP_HEADER_EXPECT_CT "Expect-CT"
790#define MHD_HTTP_HEADER_FORWARDED "Forwarded"
792#define MHD_HTTP_HEADER_HOBAREG "Hobareg"
794#define MHD_HTTP_HEADER_IF "If"
796#define MHD_HTTP_HEADER_IF_SCHEDULE_TAG_MATCH "If-Schedule-Tag-Match"
798#define MHD_HTTP_HEADER_IM "IM"
800#define MHD_HTTP_HEADER_INCLUDE_REFERRED_TOKEN_BINDING_ID \
801 "Include-Referred-Token-Binding-ID"
803#define MHD_HTTP_HEADER_KEEP_ALIVE "Keep-Alive"
805#define MHD_HTTP_HEADER_LABEL "Label"
807#define MHD_HTTP_HEADER_LAST_EVENT_ID "Last-Event-ID"
809#define MHD_HTTP_HEADER_LINK "Link"
811#define MHD_HTTP_HEADER_LOCK_TOKEN "Lock-Token"
813#define MHD_HTTP_HEADER_MEMENTO_DATETIME "Memento-Datetime"
815#define MHD_HTTP_HEADER_METER "Meter"
817#define MHD_HTTP_HEADER_NEGOTIATE "Negotiate"
819#define MHD_HTTP_HEADER_NEL "NEL"
821#define MHD_HTTP_HEADER_ODATA_ENTITYID "OData-EntityId"
823#define MHD_HTTP_HEADER_ODATA_ISOLATION "OData-Isolation"
825#define MHD_HTTP_HEADER_ODATA_MAXVERSION "OData-MaxVersion"
827#define MHD_HTTP_HEADER_ODATA_VERSION "OData-Version"
829#define MHD_HTTP_HEADER_OPTIONAL_WWW_AUTHENTICATE "Optional-WWW-Authenticate"
831#define MHD_HTTP_HEADER_ORDERING_TYPE "Ordering-Type"
833#define MHD_HTTP_HEADER_ORIGIN "Origin"
835#define MHD_HTTP_HEADER_ORIGIN_AGENT_CLUSTER "Origin-Agent-Cluster"
837#define MHD_HTTP_HEADER_OSCORE "OSCORE"
839#define MHD_HTTP_HEADER_OSLC_CORE_VERSION "OSLC-Core-Version"
841#define MHD_HTTP_HEADER_OVERWRITE "Overwrite"
843#define MHD_HTTP_HEADER_PING_FROM "Ping-From"
845#define MHD_HTTP_HEADER_PING_TO "Ping-To"
847#define MHD_HTTP_HEADER_POSITION "Position"
849#define MHD_HTTP_HEADER_PREFER "Prefer"
851#define MHD_HTTP_HEADER_PREFERENCE_APPLIED "Preference-Applied"
853#define MHD_HTTP_HEADER_PRIORITY "Priority"
855#define MHD_HTTP_HEADER_PROXY_STATUS "Proxy-Status"
857#define MHD_HTTP_HEADER_PUBLIC_KEY_PINS "Public-Key-Pins"
859#define MHD_HTTP_HEADER_PUBLIC_KEY_PINS_REPORT_ONLY \
860 "Public-Key-Pins-Report-Only"
862#define MHD_HTTP_HEADER_REDIRECT_REF "Redirect-Ref"
864#define MHD_HTTP_HEADER_REFRESH "Refresh"
866#define MHD_HTTP_HEADER_REPLAY_NONCE "Replay-Nonce"
868#define MHD_HTTP_HEADER_REPR_DIGEST "Repr-Digest"
870#define MHD_HTTP_HEADER_SCHEDULE_REPLY "Schedule-Reply"
872#define MHD_HTTP_HEADER_SCHEDULE_TAG "Schedule-Tag"
874#define MHD_HTTP_HEADER_SEC_PURPOSE "Sec-Purpose"
876#define MHD_HTTP_HEADER_SEC_TOKEN_BINDING "Sec-Token-Binding"
878#define MHD_HTTP_HEADER_SEC_WEBSOCKET_ACCEPT "Sec-WebSocket-Accept"
880#define MHD_HTTP_HEADER_SEC_WEBSOCKET_EXTENSIONS "Sec-WebSocket-Extensions"
882#define MHD_HTTP_HEADER_SEC_WEBSOCKET_KEY "Sec-WebSocket-Key"
884#define MHD_HTTP_HEADER_SEC_WEBSOCKET_PROTOCOL "Sec-WebSocket-Protocol"
886#define MHD_HTTP_HEADER_SEC_WEBSOCKET_VERSION "Sec-WebSocket-Version"
888#define MHD_HTTP_HEADER_SERVER_TIMING "Server-Timing"
890#define MHD_HTTP_HEADER_SET_COOKIE "Set-Cookie"
892#define MHD_HTTP_HEADER_SIGNATURE "Signature"
894#define MHD_HTTP_HEADER_SIGNATURE_INPUT "Signature-Input"
896#define MHD_HTTP_HEADER_SLUG "SLUG"
898#define MHD_HTTP_HEADER_SOAPACTION "SoapAction"
900#define MHD_HTTP_HEADER_STATUS_URI "Status-URI"
902#define MHD_HTTP_HEADER_STRICT_TRANSPORT_SECURITY "Strict-Transport-Security"
904#define MHD_HTTP_HEADER_SUNSET "Sunset"
906#define MHD_HTTP_HEADER_SURROGATE_CAPABILITY "Surrogate-Capability"
908#define MHD_HTTP_HEADER_SURROGATE_CONTROL "Surrogate-Control"
910#define MHD_HTTP_HEADER_TCN "TCN"
912#define MHD_HTTP_HEADER_TIMEOUT "Timeout"
914#define MHD_HTTP_HEADER_TOPIC "Topic"
916#define MHD_HTTP_HEADER_TRACEPARENT "Traceparent"
918#define MHD_HTTP_HEADER_TRACESTATE "Tracestate"
920#define MHD_HTTP_HEADER_TTL "TTL"
922#define MHD_HTTP_HEADER_URGENCY "Urgency"
924#define MHD_HTTP_HEADER_VARIANT_VARY "Variant-Vary"
926#define MHD_HTTP_HEADER_WANT_CONTENT_DIGEST "Want-Content-Digest"
928#define MHD_HTTP_HEADER_WANT_REPR_DIGEST "Want-Repr-Digest"
930#define MHD_HTTP_HEADER_X_CONTENT_TYPE_OPTIONS "X-Content-Type-Options"
932#define MHD_HTTP_HEADER_X_FRAME_OPTIONS "X-Frame-Options"
934#define MHD_HTTP_HEADER_AMP_CACHE_TRANSFORM "AMP-Cache-Transform"
936#define MHD_HTTP_HEADER_CONFIGURATION_CONTEXT "Configuration-Context"
938#define MHD_HTTP_HEADER_EDIINT_FEATURES "EDIINT-Features"
940#define MHD_HTTP_HEADER_ISOLATION "Isolation"
942#define MHD_HTTP_HEADER_PERMISSIONS_POLICY "Permissions-Policy"
944#define MHD_HTTP_HEADER_REPEATABILITY_CLIENT_ID "Repeatability-Client-ID"
946#define MHD_HTTP_HEADER_REPEATABILITY_FIRST_SENT "Repeatability-First-Sent"
948#define MHD_HTTP_HEADER_REPEATABILITY_REQUEST_ID "Repeatability-Request-ID"
950#define MHD_HTTP_HEADER_REPEATABILITY_RESULT "Repeatability-Result"
952#define MHD_HTTP_HEADER_REPORTING_ENDPOINTS "Reporting-Endpoints"
954#define MHD_HTTP_HEADER_SEC_GPC "Sec-GPC"
956#define MHD_HTTP_HEADER_TIMING_ALLOW_ORIGIN "Timing-Allow-Origin"
958#define MHD_HTTP_HEADER_C_PEP_INFO "C-PEP-Info"
960#define MHD_HTTP_HEADER_PROTOCOL_INFO "Protocol-Info"
962#define MHD_HTTP_HEADER_PROTOCOL_QUERY "Protocol-Query"
964#define MHD_HTTP_HEADER_ACCESS_CONTROL "Access-Control"
966#define MHD_HTTP_HEADER_C_EXT "C-Ext"
968#define MHD_HTTP_HEADER_C_MAN "C-Man"
970#define MHD_HTTP_HEADER_C_OPT "C-Opt"
972#define MHD_HTTP_HEADER_C_PEP "C-PEP"
974#define MHD_HTTP_HEADER_CONTENT_BASE "Content-Base"
976#define MHD_HTTP_HEADER_CONTENT_MD5 "Content-MD5"
978#define MHD_HTTP_HEADER_CONTENT_SCRIPT_TYPE "Content-Script-Type"
980#define MHD_HTTP_HEADER_CONTENT_STYLE_TYPE "Content-Style-Type"
982#define MHD_HTTP_HEADER_CONTENT_VERSION "Content-Version"
984#define MHD_HTTP_HEADER_COOKIE2 "Cookie2"
986#define MHD_HTTP_HEADER_DEFAULT_STYLE "Default-Style"
988#define MHD_HTTP_HEADER_DERIVED_FROM "Derived-From"
990#define MHD_HTTP_HEADER_DIGEST "Digest"
992#define MHD_HTTP_HEADER_EXT "Ext"
994#define MHD_HTTP_HEADER_GETPROFILE "GetProfile"
996#define MHD_HTTP_HEADER_HTTP2_SETTINGS "HTTP2-Settings"
998#define MHD_HTTP_HEADER_MAN "Man"
1000#define MHD_HTTP_HEADER_METHOD_CHECK "Method-Check"
1002#define MHD_HTTP_HEADER_METHOD_CHECK_EXPIRES "Method-Check-Expires"
1004#define MHD_HTTP_HEADER_OPT "Opt"
1006#define MHD_HTTP_HEADER_P3P "P3P"
1008#define MHD_HTTP_HEADER_PEP "PEP"
1010#define MHD_HTTP_HEADER_PEP_INFO "Pep-Info"
1012#define MHD_HTTP_HEADER_PICS_LABEL "PICS-Label"
1014#define MHD_HTTP_HEADER_PROFILEOBJECT "ProfileObject"
1016#define MHD_HTTP_HEADER_PROTOCOL "Protocol"
1018#define MHD_HTTP_HEADER_PROTOCOL_REQUEST "Protocol-Request"
1020#define MHD_HTTP_HEADER_PROXY_FEATURES "Proxy-Features"
1022#define MHD_HTTP_HEADER_PROXY_INSTRUCTION "Proxy-Instruction"
1024#define MHD_HTTP_HEADER_PUBLIC "Public"
1026#define MHD_HTTP_HEADER_REFERER_ROOT "Referer-Root"
1028#define MHD_HTTP_HEADER_SAFE "Safe"
1030#define MHD_HTTP_HEADER_SECURITY_SCHEME "Security-Scheme"
1032#define MHD_HTTP_HEADER_SET_COOKIE2 "Set-Cookie2"
1034#define MHD_HTTP_HEADER_SETPROFILE "SetProfile"
1036#define MHD_HTTP_HEADER_URI "URI"
1038#define MHD_HTTP_HEADER_WANT_DIGEST "Want-Digest"
1040#define MHD_HTTP_HEADER_WARNING "Warning"
1044#define MHD_HTTP_HEADER_COMPLIANCE "Compliance"
1046#define MHD_HTTP_HEADER_CONTENT_TRANSFER_ENCODING "Content-Transfer-Encoding"
1048#define MHD_HTTP_HEADER_COST "Cost"
1050#define MHD_HTTP_HEADER_MESSAGE_ID "Message-ID"
1052#define MHD_HTTP_HEADER_NON_COMPLIANCE "Non-Compliance"
1054#define MHD_HTTP_HEADER_OPTIONAL "Optional"
1056#define MHD_HTTP_HEADER_RESOLUTION_HINT "Resolution-Hint"
1058#define MHD_HTTP_HEADER_RESOLVER_LOCATION "Resolver-Location"
1060#define MHD_HTTP_HEADER_SUBOK "SubOK"
1062#define MHD_HTTP_HEADER_SUBST "Subst"
1064#define MHD_HTTP_HEADER_TITLE "Title"
1066#define MHD_HTTP_HEADER_UA_COLOR "UA-Color"
1068#define MHD_HTTP_HEADER_UA_MEDIA "UA-Media"
1070#define MHD_HTTP_HEADER_UA_PIXELS "UA-Pixels"
1072#define MHD_HTTP_HEADER_UA_RESOLUTION "UA-Resolution"
1074#define MHD_HTTP_HEADER_UA_WINDOWPIXELS "UA-Windowpixels"
1076#define MHD_HTTP_HEADER_VERSION "Version"
1078#define MHD_HTTP_HEADER_X_DEVICE_ACCEPT "X-Device-Accept"
1080#define MHD_HTTP_HEADER_X_DEVICE_ACCEPT_CHARSET "X-Device-Accept-Charset"
1082#define MHD_HTTP_HEADER_X_DEVICE_ACCEPT_ENCODING "X-Device-Accept-Encoding"
1084#define MHD_HTTP_HEADER_X_DEVICE_ACCEPT_LANGUAGE "X-Device-Accept-Language"
1086#define MHD_HTTP_HEADER_X_DEVICE_USER_AGENT "X-Device-User-Agent"
1096#define MHD_HTTP_VERSION_1_0 "HTTP/1.0"
1097#define MHD_HTTP_VERSION_1_1 "HTTP/1.1"
1111#define MHD_HTTP_METHOD_GET "GET"
1113#define MHD_HTTP_METHOD_HEAD "HEAD"
1115#define MHD_HTTP_METHOD_POST "POST"
1117#define MHD_HTTP_METHOD_PUT "PUT"
1119#define MHD_HTTP_METHOD_DELETE "DELETE"
1121#define MHD_HTTP_METHOD_CONNECT "CONNECT"
1123#define MHD_HTTP_METHOD_OPTIONS "OPTIONS"
1125#define MHD_HTTP_METHOD_TRACE "TRACE"
1129#define MHD_HTTP_METHOD_ACL "ACL"
1131#define MHD_HTTP_METHOD_BASELINE_CONTROL "BASELINE-CONTROL"
1133#define MHD_HTTP_METHOD_BIND "BIND"
1135#define MHD_HTTP_METHOD_CHECKIN "CHECKIN"
1137#define MHD_HTTP_METHOD_CHECKOUT "CHECKOUT"
1139#define MHD_HTTP_METHOD_COPY "COPY"
1141#define MHD_HTTP_METHOD_LABEL "LABEL"
1143#define MHD_HTTP_METHOD_LINK "LINK"
1145#define MHD_HTTP_METHOD_LOCK "LOCK"
1147#define MHD_HTTP_METHOD_MERGE "MERGE"
1149#define MHD_HTTP_METHOD_MKACTIVITY "MKACTIVITY"
1151#define MHD_HTTP_METHOD_MKCALENDAR "MKCALENDAR"
1153#define MHD_HTTP_METHOD_MKCOL "MKCOL"
1155#define MHD_HTTP_METHOD_MKREDIRECTREF "MKREDIRECTREF"
1157#define MHD_HTTP_METHOD_MKWORKSPACE "MKWORKSPACE"
1159#define MHD_HTTP_METHOD_MOVE "MOVE"
1161#define MHD_HTTP_METHOD_ORDERPATCH "ORDERPATCH"
1163#define MHD_HTTP_METHOD_PATCH "PATCH"
1165#define MHD_HTTP_METHOD_PRI "PRI"
1167#define MHD_HTTP_METHOD_PROPFIND "PROPFIND"
1169#define MHD_HTTP_METHOD_PROPPATCH "PROPPATCH"
1171#define MHD_HTTP_METHOD_REBIND "REBIND"
1173#define MHD_HTTP_METHOD_REPORT "REPORT"
1175#define MHD_HTTP_METHOD_SEARCH "SEARCH"
1177#define MHD_HTTP_METHOD_UNBIND "UNBIND"
1179#define MHD_HTTP_METHOD_UNCHECKOUT "UNCHECKOUT"
1181#define MHD_HTTP_METHOD_UNLINK "UNLINK"
1183#define MHD_HTTP_METHOD_UNLOCK "UNLOCK"
1185#define MHD_HTTP_METHOD_UPDATE "UPDATE"
1187#define MHD_HTTP_METHOD_UPDATEREDIRECTREF "UPDATEREDIRECTREF"
1189#define MHD_HTTP_METHOD_VERSION_CONTROL "VERSION-CONTROL"
1191#define MHD_HTTP_METHOD_ASTERISK "*"
1200#define MHD_HTTP_POST_ENCODING_FORM_URLENCODED \
1201 "application/x-www-form-urlencoded"
1202#define MHD_HTTP_POST_ENCODING_MULTIPART_FORMDATA "multipart/form-data"
1277#define MHD_USE_SSL \
1278 _MHD_DEPR_IN_MACRO ("Value MHD_USE_SSL is deprecated, use MHD_USE_TLS") \
1308#define MHD_USE_SELECT_INTERNALLY \
1309 _MHD_DEPR_IN_MACRO ( \
1310 "Value MHD_USE_SELECT_INTERNALLY is deprecated, use MHD_USE_INTERNAL_POLLING_THREAD instead") \
1311 MHD_USE_INTERNAL_POLLING_THREAD
1332#define MHD_USE_PEDANTIC_CHECKS \
1333 _MHD_DEPR_IN_MACRO ( \
1334 "Flag MHD_USE_PEDANTIC_CHECKS is deprecated, " \
1335 "use option MHD_OPTION_CLIENT_DISCIPLINE_LVL instead") \
1359#define MHD_USE_POLL_INTERNALLY \
1360 _MHD_DEPR_IN_MACRO ( \
1361 "Value MHD_USE_POLL_INTERNALLY is deprecated, use MHD_USE_POLL_INTERNAL_THREAD instead") \
1362 MHD_USE_POLL_INTERNAL_THREAD
1376#define MHD_SUPPRESS_DATE_NO_CLOCK \
1377 _MHD_DEPR_IN_MACRO ( \
1378 "Value MHD_SUPPRESS_DATE_NO_CLOCK is deprecated, use MHD_USE_SUPPRESS_DATE_NO_CLOCK instead") \
1379 MHD_USE_SUPPRESS_DATE_NO_CLOCK
1403#define MHD_USE_EPOLL_LINUX_ONLY \
1404 _MHD_DEPR_IN_MACRO ( \
1405 "Value MHD_USE_EPOLL_LINUX_ONLY is deprecated, use MHD_USE_EPOLL") \
1424#define MHD_USE_EPOLL_INTERNALLY \
1425 _MHD_DEPR_IN_MACRO ( \
1426 "Value MHD_USE_EPOLL_INTERNALLY is deprecated, use MHD_USE_EPOLL_INTERNAL_THREAD") \
1427 MHD_USE_EPOLL_INTERNAL_THREAD
1429#define MHD_USE_EPOLL_INTERNALLY_LINUX_ONLY \
1430 _MHD_DEPR_IN_MACRO ( \
1431 "Value MHD_USE_EPOLL_INTERNALLY_LINUX_ONLY is deprecated, use MHD_USE_EPOLL_INTERNAL_THREAD") \
1432 MHD_USE_EPOLL_INTERNAL_THREAD
1452#define MHD_USE_PIPE_FOR_SHUTDOWN \
1453 _MHD_DEPR_IN_MACRO ( \
1454 "Value MHD_USE_PIPE_FOR_SHUTDOWN is deprecated, use MHD_USE_ITC") \
1474#define MHD_USE_EPOLL_TURBO \
1475 _MHD_DEPR_IN_MACRO ( \
1476 "Value MHD_USE_EPOLL_TURBO is deprecated, use MHD_USE_TURBO") \
1489#define MHD_USE_SUSPEND_RESUME \
1490 _MHD_DEPR_IN_MACRO ( \
1491 "Value MHD_USE_SUSPEND_RESUME is deprecated, use MHD_ALLOW_SUSPEND_RESUME instead") \
1492 MHD_ALLOW_SUSPEND_RESUME
1586 const char *username,
2258#define MHD_RESPONSE_HEADER_KIND \
2259 _MHD_DEPR_IN_MACRO ( \
2260 "Value MHD_RESPONSE_HEADER_KIND is deprecated and not used") \
2261 MHD_RESPONSE_HEADER_KIND
2643 const char *reason);
2655 const struct sockaddr *addr,
2728 const char *version,
2729 const char *upload_data,
2730 size_t *upload_data_size,
2917 const char *filename,
2918 const char *content_type,
2919 const char *transfer_encoding,
3045 const struct sockaddr *addr,
3082 fd_set *read_fd_set,
3083 fd_set *write_fd_set,
3084 fd_set *except_fd_set,
3124 fd_set *read_fd_set,
3125 fd_set *write_fd_set,
3126 fd_set *except_fd_set,
3128 unsigned int fd_setsize);
3162#define MHD_get_fdset(daemon,read_fd_set,write_fd_set,except_fd_set,max_fd) \
3163 MHD_get_fdset2 ((daemon),(read_fd_set),(write_fd_set),(except_fd_set), \
3164 (max_fd),FD_SETSIZE)
3442 const fd_set *read_fd_set,
3443 const fd_set *write_fd_set,
3444 const fd_set *except_fd_set);
3480 const fd_set *read_fd_set,
3481 const fd_set *write_fd_set,
3482 const fd_set *except_fd_set,
3483 unsigned int fd_setsize);
3516#define MHD_run_from_select(d,r,w,e) \
3517 MHD_run_from_select2 ((d),(r),(w),(e),(unsigned int) (FD_SETSIZE))
3537 void *iterator_cls);
3557 void *iterator_cls);
3702 const char **value_ptr,
3703 size_t *value_size_ptr);
3753 unsigned int status_code,
3971 "MHD_create_response_from_data() is deprecated, use MHD_create_response_from_buffer()" \
4068 const void *buffer);
4095 const void *buffer);
4246 "Function MHD_create_response_from_fd_at_offset() is deprecated, use MHD_create_response_from_fd_at_offset64()" \
4253#if ! defined(_MHD_NO_DEPR_IN_MACRO) || defined(_MHD_NO_DEPR_FUNC)
4256#define MHD_create_response_from_fd_at_offset(size,fd,offset) \
4257 _MHD_DEPR_IN_MACRO ( \
4258 "Usage of MHD_create_response_from_fd_at_offset() is deprecated, use MHD_create_response_from_fd_at_offset64()") \
4259 MHD_create_response_from_fd_at_offset64 ((size),(fd),(offset))
4315 unsigned int iovcnt,
4373struct MHD_UpgradeResponseHandle;
4445 const char *extra_in,
4446 size_t extra_in_size,
4448 struct MHD_UpgradeResponseHandle *urh);
4482 void *upgrade_handler_cls);
4550 const char *content);
4565 const char *content);
4585 const char *content);
4601 void *iterator_cls);
4665 const char *post_data,
4666 size_t post_data_len);
4691#define MHD_MD5_DIGEST_SIZE 16
4698#define MHD_SHA256_DIGEST_SIZE 32
4708#define MHD_SHA512_256_DIGEST_SIZE 32
4748#define MHD_DIGEST_AUTH_ALGO3_NON_SESSION (1 << 6)
4755#define MHD_DIGEST_AUTH_ALGO3_SESSION (1 << 7)
4995 const char *username,
4998 size_t bin_buf_size);
5043 const char *username,
5046 size_t hex_buf_size);
5195#define MHD_DIGEST_AUTH_INVALID_NC_VALUE (0)
5574 const char *password,
5575 unsigned int nonce_timeout,
5618 const char *password,
5619 void *userdigest_bin,
5620 size_t bin_buf_size);
5669 const void *userdigest,
5670 size_t userdigest_size,
5671 unsigned int nonce_timeout,
5748 int userhash_support,
5759#define MHD_INVALID_NONCE -1
5827 const char *password,
5828 unsigned int nonce_timeout,
5854 const char *password,
5855 unsigned int nonce_timeout);
5881 const uint8_t *digest,
5883 unsigned int nonce_timeout,
5911 unsigned int nonce_timeout);
6510#define MHD_FEATURE_HTTPS_COOKIE_PARSING _MHD_DEPR_IN_MACRO ( \
6511 "Value MHD_FEATURE_HTTPS_COOKIE_PARSING is deprecated, use MHD_FEATURE_COOKIE_PARSING" \
6512 ) MHD_FEATURE_COOKIE_PARSING
_MHD_EXTERN enum MHD_Result MHD_digest_auth_calc_userdigest(enum MHD_DigestAuthAlgo3 algo3, const char *username, const char *realm, const char *password, void *userdigest_bin, size_t bin_buf_size)
_MHD_EXTERN enum MHD_Result MHD_queue_auth_fail_response(struct MHD_Connection *connection, const char *realm, const char *opaque, struct MHD_Response *response, int signal_stale)
_MHD_EXTERN int MHD_digest_auth_check2(struct MHD_Connection *connection, const char *realm, const char *username, const char *password, unsigned int nonce_timeout, enum MHD_DigestAuthAlgorithm algo)
_MHD_EXTERN enum MHD_Result MHD_queue_basic_auth_fail_response(struct MHD_Connection *connection, const char *realm, struct MHD_Response *response)
_MHD_EXTERN enum MHD_Result MHD_queue_auth_required_response3(struct MHD_Connection *connection, const char *realm, const char *opaque, const char *domain, struct MHD_Response *response, int signal_stale, enum MHD_DigestAuthMultiQOP mqop, enum MHD_DigestAuthMultiAlgo3 algo, int userhash_support, int prefer_utf8)
_MHD_EXTERN int MHD_digest_auth_check_digest2(struct MHD_Connection *connection, const char *realm, const char *username, const uint8_t *digest, size_t digest_size, unsigned int nonce_timeout, enum MHD_DigestAuthAlgorithm algo)
_MHD_EXTERN enum MHD_Result MHD_digest_auth_calc_userhash_hex(enum MHD_DigestAuthAlgo3 algo3, const char *username, const char *realm, char *userhash_hex, size_t hex_buf_size)
_MHD_EXTERN enum MHD_Result MHD_queue_basic_auth_required_response3(struct MHD_Connection *connection, const char *realm, int prefer_utf8, struct MHD_Response *response)
_MHD_EXTERN enum MHD_DigestAuthResult MHD_digest_auth_check_digest3(struct MHD_Connection *connection, const char *realm, const char *username, const void *userdigest, size_t userdigest_size, unsigned int nonce_timeout, uint32_t max_nc, enum MHD_DigestAuthMultiQOP mqop, enum MHD_DigestAuthMultiAlgo3 malgo3)
_MHD_EXTERN char * MHD_basic_auth_get_username_password(struct MHD_Connection *connection, char **password)
_MHD_EXTERN enum MHD_Result MHD_queue_auth_fail_response2(struct MHD_Connection *connection, const char *realm, const char *opaque, struct MHD_Response *response, int signal_stale, enum MHD_DigestAuthAlgorithm algo)
_MHD_EXTERN struct MHD_DigestAuthInfo * MHD_digest_auth_get_request_info3(struct MHD_Connection *connection)
_MHD_EXTERN size_t MHD_digest_get_hash_size(enum MHD_DigestAuthAlgo3 algo3)
_MHD_EXTERN int MHD_digest_auth_check_digest(struct MHD_Connection *connection, const char *realm, const char *username, const uint8_t digest[MHD_MD5_DIGEST_SIZE], unsigned int nonce_timeout)
_MHD_EXTERN char * MHD_digest_auth_get_username(struct MHD_Connection *connection)
_MHD_EXTERN int MHD_digest_auth_check(struct MHD_Connection *connection, const char *realm, const char *username, const char *password, unsigned int nonce_timeout)
_MHD_EXTERN enum MHD_DigestAuthResult MHD_digest_auth_check3(struct MHD_Connection *connection, const char *realm, const char *username, const char *password, unsigned int nonce_timeout, uint32_t max_nc, enum MHD_DigestAuthMultiQOP mqop, enum MHD_DigestAuthMultiAlgo3 malgo3)
_MHD_EXTERN struct MHD_BasicAuthInfo * MHD_basic_auth_get_username_password3(struct MHD_Connection *connection)
_MHD_EXTERN enum MHD_Result MHD_digest_auth_calc_userhash(enum MHD_DigestAuthAlgo3 algo3, const char *username, const char *realm, void *userhash_bin, size_t bin_buf_size)
_MHD_EXTERN struct MHD_DigestAuthUsernameInfo * MHD_digest_auth_get_username3(struct MHD_Connection *connection)
#define MHD_MD5_DIGEST_SIZE
_MHD_EXTERN int MHD_get_timeout_i(struct MHD_Daemon *daemon)
_MHD_EXTERN int64_t MHD_get_timeout64s(struct MHD_Daemon *daemon)
#define MHD_run_from_select(d, r, w, e)
_MHD_EXTERN void MHD_stop_daemon(struct MHD_Daemon *daemon)
_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 enum MHD_Result MHD_run(struct MHD_Daemon *daemon)
_MHD_EXTERN enum MHD_Result MHD_get_fdset2(struct MHD_Daemon *daemon, fd_set *read_fd_set, fd_set *write_fd_set, fd_set *except_fd_set, MHD_socket *max_fd, unsigned int fd_setsize)
#define MHD_get_fdset(daemon, read_fd_set, write_fd_set, except_fd_set, max_fd)
_MHD_EXTERN enum MHD_Result MHD_get_timeout(struct MHD_Daemon *daemon, MHD_UNSIGNED_LONG_LONG *timeout)
_MHD_EXTERN enum MHD_Result MHD_get_timeout64(struct MHD_Daemon *daemon, uint64_t *timeout)
_MHD_EXTERN enum MHD_Result MHD_run_from_select2(struct MHD_Daemon *daemon, const fd_set *read_fd_set, const fd_set *write_fd_set, const fd_set *except_fd_set, unsigned int fd_setsize)
_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 enum MHD_Result MHD_run_wait(struct MHD_Daemon *daemon, int32_t millisec)
void(* MHD_PanicCallback)(void *cls, const char *file, unsigned int line, const char *reason)
_MHD_EXTERN void MHD_set_panic_func(MHD_PanicCallback cb, void *cls)
void(* MHD_LogCallback)(void *cls, const char *fm, va_list ap)
MHD_ConnectionNotificationCode
_MHD_EXTERN enum MHD_Result MHD_destroy_post_processor(struct MHD_PostProcessor *pp)
_MHD_EXTERN enum MHD_Result MHD_set_connection_value(struct MHD_Connection *connection, enum MHD_ValueKind kind, const char *key, const char *value)
enum MHD_Result(* MHD_KeyValueIterator)(void *cls, enum MHD_ValueKind kind, const char *key, const char *value)
_MHD_EXTERN const char * MHD_lookup_connection_value(struct MHD_Connection *connection, enum MHD_ValueKind kind, const char *key)
_MHD_EXTERN enum MHD_Result MHD_post_process(struct MHD_PostProcessor *pp, const char *post_data, size_t post_data_len)
enum MHD_Result(* MHD_KeyValueIteratorN)(void *cls, enum MHD_ValueKind kind, const char *key, size_t key_size, const char *value, size_t value_size)
_MHD_EXTERN int MHD_get_connection_values_n(struct MHD_Connection *connection, enum MHD_ValueKind kind, MHD_KeyValueIteratorN iterator, void *iterator_cls)
_MHD_EXTERN int MHD_get_connection_values(struct MHD_Connection *connection, enum MHD_ValueKind kind, MHD_KeyValueIterator iterator, void *iterator_cls)
void(* MHD_RequestCompletedCallback)(void *cls, struct MHD_Connection *connection, void **req_cls, enum MHD_RequestTerminationCode toe)
_MHD_EXTERN struct MHD_PostProcessor * MHD_create_post_processor(struct MHD_Connection *connection, size_t buffer_size, MHD_PostDataIterator iter, void *iter_cls)
_MHD_EXTERN enum MHD_Result MHD_set_connection_value_n(struct MHD_Connection *connection, enum MHD_ValueKind kind, const char *key, size_t key_size, const char *value, size_t value_size)
void(* MHD_NotifyConnectionCallback)(void *cls, struct MHD_Connection *connection, void **socket_context, enum MHD_ConnectionNotificationCode toe)
_MHD_EXTERN enum MHD_Result MHD_lookup_connection_value_n(struct MHD_Connection *connection, enum MHD_ValueKind kind, const char *key, size_t key_size, const char **value_ptr, size_t *value_size_ptr)
MHD_RequestTerminationCode
@ MHD_CONNECTION_NOTIFY_STARTED
@ MHD_CONNECTION_NOTIFY_CLOSED
@ MHD_CONNECTION_INFO_CONNECTION_TIMEOUT
@ MHD_CONNECTION_INFO_SOCKET_CONTEXT
@ MHD_CONNECTION_INFO_GNUTLS_SESSION
@ MHD_CONNECTION_INFO_REQUEST_HEADER_SIZE
@ MHD_CONNECTION_INFO_CIPHER_ALGO
@ MHD_CONNECTION_INFO_CONNECTION_SUSPENDED
@ MHD_CONNECTION_INFO_CLIENT_ADDRESS
@ MHD_CONNECTION_INFO_DAEMON
@ MHD_CONNECTION_INFO_GNUTLS_CLIENT_CERT
@ MHD_CONNECTION_INFO_HTTP_STATUS
@ MHD_CONNECTION_INFO_CONNECTION_FD
@ MHD_CONNECTION_INFO_PROTOCOL
@ MHD_REQUEST_TERMINATED_TIMEOUT_REACHED
@ MHD_REQUEST_TERMINATED_DAEMON_SHUTDOWN
@ MHD_REQUEST_TERMINATED_COMPLETED_OK
@ MHD_REQUEST_TERMINATED_WITH_ERROR
@ MHD_REQUEST_TERMINATED_READ_ERROR
@ MHD_REQUEST_TERMINATED_CLIENT_ABORT
_MHD_EXTERN int MHD_get_response_headers(struct MHD_Response *response, MHD_KeyValueIterator iterator, void *iterator_cls)
_MHD_EXTERN struct MHD_Response * MHD_create_response_from_buffer_with_free_callback(size_t size, void *buffer, MHD_ContentReaderFreeCallback crfc)
_MHD_EXTERN struct MHD_Response * MHD_create_response_from_iovec(const struct MHD_IoVec *iov, unsigned int iovcnt, MHD_ContentReaderFreeCallback free_cb, void *cls)
_MHD_EXTERN struct MHD_Response * MHD_create_response_from_data(size_t size, void *data, int must_free, int must_copy)
_MHD_EXTERN struct MHD_Response * MHD_create_response_from_buffer_copy(size_t size, const void *buffer)
_MHD_EXTERN struct MHD_Response * MHD_create_response_from_buffer(size_t size, void *buffer, enum MHD_ResponseMemoryMode mode)
_MHD_EXTERN enum MHD_Result MHD_del_response_header(struct MHD_Response *response, const char *header, const char *content)
_MHD_EXTERN struct MHD_Response * MHD_create_response_from_pipe(int fd)
_MHD_EXTERN enum MHD_Result MHD_queue_response(struct MHD_Connection *connection, unsigned int status_code, struct MHD_Response *response)
_MHD_EXTERN void MHD_destroy_response(struct MHD_Response *response)
_MHD_EXTERN struct MHD_Response * MHD_create_response_from_fd(size_t size, int fd)
_MHD_EXTERN struct MHD_Response * MHD_create_response_empty(enum MHD_ResponseFlags flags)
_MHD_EXTERN const char * MHD_get_response_header(struct MHD_Response *response, const char *key)
_MHD_EXTERN struct MHD_Response * MHD_create_response_from_buffer_static(size_t size, const void *buffer)
void(* MHD_ContentReaderFreeCallback)(void *cls)
_MHD_EXTERN struct MHD_Response * MHD_create_response_from_fd_at_offset64(uint64_t size, int fd, uint64_t offset)
_MHD_EXTERN struct MHD_Response * MHD_create_response_from_buffer_with_free_callback_cls(size_t size, const void *buffer, MHD_ContentReaderFreeCallback crfc, void *crfc_cls)
_MHD_EXTERN enum MHD_Result MHD_add_response_header(struct MHD_Response *response, const char *header, const char *content)
_MHD_EXTERN struct MHD_Response * MHD_create_response_from_callback(uint64_t size, size_t block_size, MHD_ContentReaderCallback crc, void *crc_cls, MHD_ContentReaderFreeCallback crfc)
_MHD_EXTERN struct MHD_Response * MHD_create_response_from_fd64(uint64_t size, int fd)
_MHD_EXTERN enum MHD_Result MHD_add_response_footer(struct MHD_Response *response, const char *footer, const char *content)
_MHD_EXTERN enum MHD_Result MHD_add_connection(struct MHD_Daemon *daemon, MHD_socket client_socket, const struct sockaddr *addr, socklen_t addrlen)
_MHD_EXTERN enum MHD_Result MHD_is_feature_supported(enum MHD_FEATURE feature)
_MHD_EXTERN enum MHD_Result MHD_set_connection_option(struct MHD_Connection *connection, enum MHD_CONNECTION_OPTION option,...)
_MHD_EXTERN MHD_socket MHD_quiesce_daemon(struct MHD_Daemon *daemon)
_MHD_EXTERN const union MHD_DaemonInfo * MHD_get_daemon_info(struct MHD_Daemon *daemon, enum MHD_DaemonInfoType info_type,...)
_MHD_EXTERN const union MHD_ConnectionInfo * MHD_get_connection_info(struct MHD_Connection *connection, enum MHD_ConnectionInfoType info_type,...)
_MHD_EXTERN uint32_t MHD_get_version_bin(void)
_MHD_EXTERN const char * MHD_get_version(void)
_MHD_EXTERN void MHD_free(void *ptr)
@ MHD_FEATURE_POSTPROCESSOR
@ MHD_FEATURE_SHUTDOWN_LISTEN_SOCKET
@ MHD_FEATURE_DIGEST_AUTH_USERHASH
@ MHD_FEATURE_DIGEST_AUTH_AUTH_INT
@ MHD_FEATURE_DIGEST_AUTH_SHA256
@ MHD_FEATURE_AUTODETECT_BIND_PORT
@ MHD_FEATURE_DIGEST_AUTH_SHA512_256
@ MHD_FEATURE_EXTERN_HASH
@ MHD_FEATURE_HTTPS_CERT_CALLBACK
@ MHD_FEATURE_DIGEST_AUTH
@ MHD_FEATURE_THREAD_NAMES
@ MHD_FEATURE_DEBUG_BUILD
@ MHD_FEATURE_FLEXIBLE_FD_SETSIZE
@ MHD_FEATURE_HTTPS_KEY_PASSWORD
@ MHD_FEATURE_AUTOSUPPRESS_SIGPIPE
@ MHD_FEATURE_RESPONSES_SHARED_FD
@ MHD_FEATURE_DIGEST_AUTH_ALGO_SESSION
@ MHD_FEATURE_COOKIE_PARSING
@ MHD_FEATURE_DIGEST_AUTH_MD5
@ MHD_FEATURE_TCP_FASTOPEN
@ MHD_FEATURE_DIGEST_AUTH_RFC2069
@ MHD_FEATURE_HTTPS_CERT_CALLBACK2
@ MHD_OPTION_HTTPS_PRIORITIES_APPEND
@ MHD_OPTION_CONNECTION_MEMORY_INCREMENT
@ MHD_OPTION_HTTPS_CRED_TYPE
@ MHD_OPTION_URI_LOG_CALLBACK
@ MHD_OPTION_HTTPS_CERT_CALLBACK2
@ MHD_OPTION_DIGEST_AUTH_DEFAULT_NONCE_TIMEOUT
@ MHD_OPTION_CLIENT_DISCIPLINE_LVL
@ MHD_OPTION_SOCK_ADDR_LEN
@ MHD_OPTION_APP_FD_SETSIZE
@ MHD_OPTION_SIGPIPE_HANDLED_BY_APP
@ MHD_OPTION_UNESCAPE_CALLBACK
@ MHD_OPTION_EXTERNAL_LOGGER
@ MHD_OPTION_LISTEN_BACKLOG_SIZE
@ MHD_OPTION_HTTPS_PRIORITIES
@ MHD_OPTION_HTTPS_MEM_DHPARAMS
@ MHD_OPTION_NOTIFY_CONNECTION
@ MHD_OPTION_LISTENING_ADDRESS_REUSE
@ MHD_OPTION_THREAD_POOL_SIZE
@ MHD_OPTION_CONNECTION_LIMIT
@ MHD_OPTION_PER_IP_CONNECTION_LIMIT
@ MHD_OPTION_DIGEST_AUTH_DEFAULT_MAX_NC
@ MHD_OPTION_TCP_FASTOPEN_QUEUE_SIZE
@ MHD_OPTION_HTTPS_MEM_CERT
@ MHD_OPTION_SERVER_INSANITY
@ MHD_OPTION_LISTEN_SOCKET
@ MHD_OPTION_HTTPS_MEM_KEY
@ MHD_OPTION_DIGEST_AUTH_RANDOM
@ MHD_OPTION_HTTPS_KEY_PASSWORD
@ MHD_OPTION_NONCE_NC_SIZE
@ MHD_OPTION_CONNECTION_MEMORY_LIMIT
@ MHD_OPTION_THREAD_STACK_SIZE
@ MHD_OPTION_DIGEST_AUTH_RANDOM_COPY
@ MHD_OPTION_STRICT_FOR_CLIENT
@ MHD_OPTION_DIGEST_AUTH_NONCE_BIND_TYPE
@ MHD_OPTION_CONNECTION_TIMEOUT
@ MHD_OPTION_GNUTLS_PSK_CRED_HANDLER
@ MHD_OPTION_HTTPS_MEM_TRUST
@ MHD_OPTION_HTTPS_CERT_CALLBACK
@ MHD_OPTION_NOTIFY_COMPLETED
#define MHD_RESPONSE_HEADER_KIND
@ MHD_DAUTH_RESPONSE_WRONG
@ MHD_DAUTH_NONCE_OTHER_COND
@ MHD_DAUTH_WRONG_USERNAME
#define MHD_DIGEST_AUTH_ALGO3_SESSION
#define MHD_DIGEST_AUTH_ALGO3_NON_SESSION
@ MHD_DIGEST_AUTH_MULT_QOP_AUTH_INT
@ MHD_DIGEST_AUTH_MULT_QOP_INVALID
@ MHD_DIGEST_AUTH_MULT_QOP_AUTH
@ MHD_DIGEST_AUTH_MULT_QOP_ANY_NON_INT
@ MHD_DIGEST_AUTH_MULT_QOP_AUTH_ANY
@ MHD_DIGEST_AUTH_MULT_QOP_NONE
@ MHD_DIGEST_BASE_ALGO_INVALID
@ MHD_DIGEST_BASE_ALGO_SHA256
@ MHD_DIGEST_BASE_ALGO_SHA512_256
@ MHD_DIGEST_BASE_ALGO_MD5
enum MHD_Result(* MHD_AcceptPolicyCallback)(void *cls, const struct sockaddr *addr, socklen_t addrlen)
#define MHD_create_response_from_fd_at_offset(size, fd, offset)
#define MHD_UNSIGNED_LONG_LONG
_MHD_EXTERN struct MHD_Response * MHD_create_response_for_upgrade(MHD_UpgradeHandler upgrade_handler, void *upgrade_handler_cls)
#define _MHD_DEPR_MACRO(msg)
enum MHD_Result(* 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 **req_cls)
@ MHD_DIGEST_AUTH_ALGO3_MD5_SESSION
@ MHD_DIGEST_AUTH_ALGO3_MD5
@ MHD_DIGEST_AUTH_ALGO3_SHA256
@ MHD_DIGEST_AUTH_ALGO3_SHA512_256_SESSION
@ MHD_DIGEST_AUTH_ALGO3_INVALID
@ MHD_DIGEST_AUTH_ALGO3_SHA256_SESSION
@ MHD_DIGEST_AUTH_ALGO3_SHA512_256
@ MHD_DIGEST_AUTH_QOP_AUTH
@ MHD_DIGEST_AUTH_QOP_INVALID
@ MHD_DIGEST_AUTH_QOP_NONE
@ MHD_DIGEST_AUTH_QOP_AUTH_INT
_MHD_EXTERN void MHD_resume_connection(struct MHD_Connection *connection)
_MHD_EXTERN size_t MHD_get_reason_phrase_len_for(unsigned int code)
_MHD_EXTERN size_t MHD_http_unescape(char *val)
ssize_t(* MHD_ContentReaderCallback)(void *cls, uint64_t pos, char *buf, size_t max)
#define _MHD_FIXED_FLAGS_ENUM
#define _MHD_DEPR_FUNC(msg)
enum MHD_Result(* 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)
_MHD_EXTERN const char * MHD_get_reason_phrase_for(unsigned int code)
@ MHD_UPGRADE_ACTION_CORK_ON
@ MHD_UPGRADE_ACTION_CLOSE
@ MHD_UPGRADE_ACTION_CORK_OFF
MHD_DigestAuthUsernameType
@ MHD_DIGEST_AUTH_UNAME_TYPE_STANDARD
@ MHD_DIGEST_AUTH_UNAME_TYPE_MISSING
@ MHD_DIGEST_AUTH_UNAME_TYPE_INVALID
@ MHD_DIGEST_AUTH_UNAME_TYPE_EXTENDED
@ MHD_DIGEST_AUTH_UNAME_TYPE_USERHASH
void(* MHD_UpgradeHandler)(void *cls, struct MHD_Connection *connection, void *req_cls, const char *extra_in, size_t extra_in_size, MHD_socket sock, struct MHD_UpgradeResponseHandle *urh)
int(* MHD_PskServerCredentialsCallback)(void *cls, const struct MHD_Connection *connection, const char *username, void **psk, size_t *psk_size)
#define MHD_C_DECLRATIONS_START_HERE_
@ MHD_DIGEST_AUTH_MULT_ALGO3_SHA_ANY_SESSION
@ MHD_DIGEST_AUTH_MULT_ALGO3_ANY_SESSION
@ MHD_DIGEST_AUTH_MULT_ALGO3_SHA256_ANY
@ MHD_DIGEST_AUTH_MULT_ALGO3_SHA256
@ MHD_DIGEST_AUTH_MULT_ALGO3_SHA512_256
@ MHD_DIGEST_AUTH_MULT_ALGO3_ANY_NON_SESSION
@ MHD_DIGEST_AUTH_MULT_ALGO3_SHA512_256_SESSION
@ MHD_DIGEST_AUTH_MULT_ALGO3_ANY
@ MHD_DIGEST_AUTH_MULT_ALGO3_SHA512_256_ANY
@ MHD_DIGEST_AUTH_MULT_ALGO3_SHA_ANY_ANY
@ MHD_DIGEST_AUTH_MULT_ALGO3_INVALID
@ MHD_DIGEST_AUTH_MULT_ALGO3_MD5_SESSION
@ MHD_DIGEST_AUTH_MULT_ALGO3_MD5_ANY
@ MHD_DIGEST_AUTH_MULT_ALGO3_MD5
@ MHD_DIGEST_AUTH_MULT_ALGO3_SHA256_SESSION
@ MHD_DIGEST_AUTH_MULT_ALGO3_SHA_ANY_NON_SESSION
@ MHD_DAEMON_INFO_MAC_KEY_SIZE
@ MHD_DAEMON_INFO_EPOLL_FD_LINUX_ONLY
@ MHD_DAEMON_INFO_BIND_PORT
@ MHD_DAEMON_INFO_EPOLL_FD
@ MHD_DAEMON_INFO_KEY_SIZE
@ MHD_DAEMON_INFO_CURRENT_CONNECTIONS
@ MHD_DAEMON_INFO_LISTEN_FD
#define MHD_C_DECLRATIONS_FINISH_HERE_
MHD_FLAG
Flags for the struct MHD_Daemon.
@ MHD_ALLOW_SUSPEND_RESUME
@ MHD_USE_THREAD_PER_CONNECTION
@ MHD_USE_EPOLL_INTERNALLY
@ MHD_USE_EPOLL_LINUX_ONLY
@ MHD_SUPPRESS_DATE_NO_CLOCK
@ MHD_USE_POST_HANDSHAKE_AUTH_SUPPORT
@ MHD_USE_SUPPRESS_DATE_NO_CLOCK
@ MHD_USE_POLL_INTERNAL_THREAD
@ MHD_USE_SELECT_INTERNALLY
@ MHD_USE_EPOLL_INTERNAL_THREAD
@ MHD_USE_PIPE_FOR_SHUTDOWN
@ MHD_USE_AUTO_INTERNAL_THREAD
@ MHD_USE_INSECURE_TLS_EARLY_DATA
@ MHD_USE_POLL_INTERNALLY
@ MHD_USE_NO_LISTEN_SOCKET
@ MHD_USE_PEDANTIC_CHECKS
@ MHD_USE_EPOLL_INTERNALLY_LINUX_ONLY
@ MHD_USE_INTERNAL_POLLING_THREAD
@ MHD_USE_NO_THREAD_SAFETY
@ MHD_RF_SEND_KEEP_ALIVE_HEADER
@ MHD_RF_HTTP_VERSION_1_0_RESPONSE
@ MHD_RF_HEAD_ONLY_RESPONSE
@ MHD_RF_HTTP_1_0_COMPATIBLE_STRICT
@ MHD_RF_INSANITY_HEADER_CONTENT_LENGTH
@ MHD_RF_HTTP_VERSION_1_0_ONLY
_MHD_EXTERN enum MHD_Result MHD_set_response_options(struct MHD_Response *response, enum MHD_ResponseFlags flags,...)
_MHD_EXTERN enum MHD_Result MHD_upgrade_action(struct MHD_UpgradeResponseHandle *urh, enum MHD_UpgradeAction action,...)
_MHD_EXTERN void MHD_suspend_connection(struct MHD_Connection *connection)
@ MHD_DAUTH_BIND_NONCE_NONE
@ MHD_DAUTH_BIND_NONCE_URI
@ MHD_DAUTH_BIND_NONCE_URI_PARAMS
@ MHD_DAUTH_BIND_NONCE_REALM
@ MHD_DAUTH_BIND_NONCE_CLIENT_IP
@ MHD_CONNECTION_OPTION_TIMEOUT
MHD_AcceptPolicyCallback apc
enum MHD_DigestAuthQOP qop
enum MHD_DigestAuthUsernameType uname_type
enum MHD_DigestAuthAlgo3 algo3
enum MHD_DigestAuthAlgo3 algo3
enum MHD_DigestAuthUsernameType uname_type
struct MHD_Connection * connection
MHD_ContentReaderFreeCallback crfc
MHD_ContentReaderCallback crc
enum MHD_ResponseFlags flags
unsigned int connection_timeout
struct MHD_Daemon * daemon
struct sockaddr * client_addr
unsigned int num_connections