57 #ifndef SPDY_MICROSPDY_H 58 #define SPDY_MICROSPDY_H 73 #ifndef MHD_PLATFORM_H 81 #include <sys/types.h> 82 #include <sys/socket.h> 87 #define _MHD_EXTERN extern 105 #define SPDY_INPUT_ERROR -1 110 #define SPDY_VERSION 3 117 #define SPDY_MAX_SUPPORTED_FRAME_SIZE 8192 122 #define SPDY_HTTP_CONTINUE 100 123 #define SPDY_HTTP_SWITCHING_PROTOCOLS 101 124 #define SPDY_HTTP_PROCESSING 102 126 #define SPDY_HTTP_OK 200 127 #define SPDY_HTTP_CREATED 201 128 #define SPDY_HTTP_ACCEPTED 202 129 #define SPDY_HTTP_NON_AUTHORITATIVE_INFORMATION 203 130 #define SPDY_HTTP_NO_CONTENT 204 131 #define SPDY_HTTP_RESET_CONTENT 205 132 #define SPDY_HTTP_PARTIAL_CONTENT 206 133 #define SPDY_HTTP_MULTI_STATUS 207 135 #define SPDY_HTTP_MULTIPLE_CHOICES 300 136 #define SPDY_HTTP_MOVED_PERMANENTLY 301 137 #define SPDY_HTTP_FOUND 302 138 #define SPDY_HTTP_SEE_OTHER 303 139 #define SPDY_HTTP_NOT_MODIFIED 304 140 #define SPDY_HTTP_USE_PROXY 305 141 #define SPDY_HTTP_SWITCH_PROXY 306 142 #define SPDY_HTTP_TEMPORARY_REDIRECT 307 144 #define SPDY_HTTP_BAD_REQUEST 400 145 #define SPDY_HTTP_UNAUTHORIZED 401 146 #define SPDY_HTTP_PAYMENT_REQUIRED 402 147 #define SPDY_HTTP_FORBIDDEN 403 148 #define SPDY_HTTP_NOT_FOUND 404 149 #define SPDY_HTTP_METHOD_NOT_ALLOWED 405 150 #define SPDY_HTTP_METHOD_NOT_ACCEPTABLE 406 151 #define SPDY_HTTP_PROXY_AUTHENTICATION_REQUIRED 407 152 #define SPDY_HTTP_REQUEST_TIMEOUT 408 153 #define SPDY_HTTP_CONFLICT 409 154 #define SPDY_HTTP_GONE 410 155 #define SPDY_HTTP_LENGTH_REQUIRED 411 156 #define SPDY_HTTP_PRECONDITION_FAILED 412 157 #define SPDY_HTTP_REQUEST_ENTITY_TOO_LARGE 413 158 #define SPDY_HTTP_REQUEST_URI_TOO_LONG 414 159 #define SPDY_HTTP_UNSUPPORTED_MEDIA_TYPE 415 160 #define SPDY_HTTP_REQUESTED_RANGE_NOT_SATISFIABLE 416 161 #define SPDY_HTTP_EXPECTATION_FAILED 417 162 #define SPDY_HTTP_UNPROCESSABLE_ENTITY 422 163 #define SPDY_HTTP_LOCKED 423 164 #define SPDY_HTTP_FAILED_DEPENDENCY 424 165 #define SPDY_HTTP_UNORDERED_COLLECTION 425 166 #define SPDY_HTTP_UPGRADE_REQUIRED 426 167 #define SPDY_HTTP_NO_RESPONSE 444 168 #define SPDY_HTTP_RETRY_WITH 449 169 #define SPDY_HTTP_BLOCKED_BY_WINDOWS_PARENTAL_CONTROLS 450 170 #define SPDY_HTTP_UNAVAILABLE_FOR_LEGAL_REASONS 451 172 #define SPDY_HTTP_INTERNAL_SERVER_ERROR 500 173 #define SPDY_HTTP_NOT_IMPLEMENTED 501 174 #define SPDY_HTTP_BAD_GATEWAY 502 175 #define SPDY_HTTP_SERVICE_UNAVAILABLE 503 176 #define SPDY_HTTP_GATEWAY_TIMEOUT 504 177 #define SPDY_HTTP_HTTP_VERSION_NOT_SUPPORTED 505 178 #define SPDY_HTTP_VARIANT_ALSO_NEGOTIATES 506 179 #define SPDY_HTTP_INSUFFICIENT_STORAGE 507 180 #define SPDY_HTTP_BANDWIDTH_LIMIT_EXCEEDED 509 181 #define SPDY_HTTP_NOT_EXTENDED 510 187 #define SPDY_HTTP_HEADER_ACCEPT "accept" 188 #define SPDY_HTTP_HEADER_ACCEPT_CHARSET "accept-charset" 189 #define SPDY_HTTP_HEADER_ACCEPT_ENCODING "accept-encoding" 190 #define SPDY_HTTP_HEADER_ACCEPT_LANGUAGE "accept-language" 191 #define SPDY_HTTP_HEADER_ACCEPT_RANGES "accept-ranges" 192 #define SPDY_HTTP_HEADER_AGE "age" 193 #define SPDY_HTTP_HEADER_ALLOW "allow" 194 #define SPDY_HTTP_HEADER_AUTHORIZATION "authorization" 195 #define SPDY_HTTP_HEADER_CACHE_CONTROL "cache-control" 197 #define SPDY_HTTP_HEADER_CONNECTION "connection" 198 #define SPDY_HTTP_HEADER_CONTENT_ENCODING "content-encoding" 199 #define SPDY_HTTP_HEADER_CONTENT_LANGUAGE "content-language" 200 #define SPDY_HTTP_HEADER_CONTENT_LENGTH "content-length" 201 #define SPDY_HTTP_HEADER_CONTENT_LOCATION "content-location" 202 #define SPDY_HTTP_HEADER_CONTENT_MD5 "content-md5" 203 #define SPDY_HTTP_HEADER_CONTENT_RANGE "content-range" 204 #define SPDY_HTTP_HEADER_CONTENT_TYPE "content-type" 205 #define SPDY_HTTP_HEADER_COOKIE "cookie" 206 #define SPDY_HTTP_HEADER_DATE "date" 207 #define SPDY_HTTP_HEADER_ETAG "etag" 208 #define SPDY_HTTP_HEADER_EXPECT "expect" 209 #define SPDY_HTTP_HEADER_EXPIRES "expires" 210 #define SPDY_HTTP_HEADER_FROM "from" 212 #define SPDY_HTTP_HEADER_HOST "host" 213 #define SPDY_HTTP_HEADER_IF_MATCH "if-match" 214 #define SPDY_HTTP_HEADER_IF_MODIFIED_SINCE "if-modified-since" 215 #define SPDY_HTTP_HEADER_IF_NONE_MATCH "if-none-match" 216 #define SPDY_HTTP_HEADER_IF_RANGE "if-range" 217 #define SPDY_HTTP_HEADER_IF_UNMODIFIED_SINCE "if-unmodified-since" 219 #define SPDY_HTTP_HEADER_KEEP_ALIVE "keep-alive" 220 #define SPDY_HTTP_HEADER_LAST_MODIFIED "last-modified" 221 #define SPDY_HTTP_HEADER_LOCATION "location" 222 #define SPDY_HTTP_HEADER_MAX_FORWARDS "max-forwards" 223 #define SPDY_HTTP_HEADER_PRAGMA "pragma" 224 #define SPDY_HTTP_HEADER_PROXY_AUTHENTICATE "proxy-authenticate" 225 #define SPDY_HTTP_HEADER_PROXY_AUTHORIZATION "proxy-authorization" 227 #define SPDY_HTTP_HEADER_PROXY_CONNECTION "proxy-connection" 228 #define SPDY_HTTP_HEADER_RANGE "range" 229 #define SPDY_HTTP_HEADER_REFERER "referer" 230 #define SPDY_HTTP_HEADER_RETRY_AFTER "retry-after" 231 #define SPDY_HTTP_HEADER_SERVER "server" 232 #define SPDY_HTTP_HEADER_SET_COOKIE "set-cookie" 233 #define SPDY_HTTP_HEADER_SET_COOKIE2 "set-cookie2" 234 #define SPDY_HTTP_HEADER_TE "te" 235 #define SPDY_HTTP_HEADER_TRAILER "trailer" 237 #define SPDY_HTTP_HEADER_TRANSFER_ENCODING "transfer-encoding" 238 #define SPDY_HTTP_HEADER_UPGRADE "upgrade" 239 #define SPDY_HTTP_HEADER_USER_AGENT "user-agent" 240 #define SPDY_HTTP_HEADER_VARY "vary" 241 #define SPDY_HTTP_HEADER_VIA "via" 242 #define SPDY_HTTP_HEADER_WARNING "warning" 243 #define SPDY_HTTP_HEADER_WWW_AUTHENTICATE "www-authenticate" 248 #define SPDY_HTTP_VERSION_1_0 "HTTP/1.0" 249 #define SPDY_HTTP_VERSION_1_1 "HTTP/1.1" 254 #define SPDY_HTTP_METHOD_CONNECT "CONNECT" 255 #define SPDY_HTTP_METHOD_DELETE "DELETE" 256 #define SPDY_HTTP_METHOD_GET "GET" 257 #define SPDY_HTTP_METHOD_HEAD "HEAD" 258 #define SPDY_HTTP_METHOD_OPTIONS "OPTIONS" 259 #define SPDY_HTTP_METHOD_POST "POST" 260 #define SPDY_HTTP_METHOD_PUT "PUT" 261 #define SPDY_HTTP_METHOD_TRACE "TRACE" 267 #define SPDY_HTTP_POST_ENCODING_FORM_URLENCODED "application/x-www-form-urlencoded" 268 #define SPDY_HTTP_POST_ENCODING_MULTIPART_FORMDATA "multipart/form-data" 309 struct SPDY_Settings;
640 const char *
const * value,
770 struct timeval *rtt);
803 struct SPDY_Settings *settings,
826 #define SPDY_init() SPDY_init (SPDY_IO_SUBSYSTEM_OPENSSL) 926 fd_set *write_fd_set,
927 fd_set *except_fd_set);
943 unsigned long long *timeout);
1004 struct sockaddr **addr);
1064 void *iterator_cls);
1144 const char *statustext,
1145 const char *version,
1184 const char *statustext,
1185 const char *version,
1189 uint32_t block_size);
1224 bool consider_priority,
1308 void *iterator_cls);
1342 struct SPDY_Settings *settings,
_MHD_EXTERN void SPDY_settings_destroy(struct SPDY_Settings *container)
_MHD_EXTERN int SPDY_get_timeout(struct SPDY_Daemon *daemon, unsigned long long *timeout)
_MHD_EXTERN int SPDY_settings_iterate(const struct SPDY_Settings *container, SPDY_SettingsIterator iterator, void *iterator_cls)
_MHD_EXTERN const struct SPDY_Settings * SPDY_settings_create(void)
_MHD_EXTERN struct SPDY_Response * SPDY_build_response_with_callback(int status, const char *statustext, const char *version, struct SPDY_NameValue *headers, SPDY_ResponseCallback rcb, void *rcb_cls, uint32_t block_size)
_MHD_EXTERN struct SPDY_Daemon * SPDY_start_daemon(uint16_t port, const char *certfile, const char *keyfile, SPDY_NewSessionCallback nscb, SPDY_SessionClosedCallback sccb, SPDY_NewRequestCallback nrcb, SPDY_NewDataCallback npdcb, void *cls,...)
_MHD_EXTERN int SPDY_name_value_add(struct SPDY_NameValue *container, const char *name, const char *value)
ssize_t(* SPDY_ResponseCallback)(void *cls, void *buffer, size_t max, bool *more)
_MHD_EXTERN int SPDY_settings_add(struct SPDY_Settings *container, enum SPDY_SETTINGS id, enum SPDY_FLAG_SETTINGS flags, int32_t value)
int(* SPDY_SettingsIterator)(void *cls, enum SPDY_SETTINGS id, int32_t value, uint8_t flags)
_MHD_EXTERN int SPDY_send_settings(struct SPDY_Session *session, struct SPDY_Settings *settings, enum SPDY_FLAG_SETTINGS_FRAME flags,...)
_MHD_EXTERN const char *const * SPDY_name_value_lookup(struct SPDY_NameValue *container, const char *name, int *num_values)
void(* SPDY_NewRequestCallback)(void *cls, struct SPDY_Request *request, uint8_t priority, const char *method, const char *path, const char *version, const char *host, const char *scheme, struct SPDY_NameValue *headers, bool more)
_MHD_EXTERN void SPDY_close_session(struct SPDY_Session *session)
_MHD_EXTERN void * SPDY_get_cls_from_session(struct SPDY_Session *session)
_MHD_EXTERN socklen_t SPDY_get_remote_addr(struct SPDY_Session *session, struct sockaddr **addr)
void(* SPDY_ResponseResultCallback)(void *cls, struct SPDY_Response *response, struct SPDY_Request *request, enum SPDY_RESPONSE_RESULT status, bool streamopened)
_MHD_EXTERN void SPDY_run(struct SPDY_Daemon *daemon)
int(* SPDY_NameValueIterator)(void *cls, const char *name, const char *const *value, int num_values)
_MHD_EXTERN void SPDY_stop_daemon(struct SPDY_Daemon *daemon)
_MHD_EXTERN struct SPDY_NameValue * SPDY_name_value_create(void)
SPDY_ResponseCallback rcb
_MHD_EXTERN void SPDY_destroy_response(struct SPDY_Response *response)
void(* SPDY_NewSessionCallback)(void *cls, struct SPDY_Session *session)
_MHD_EXTERN void SPDY_destroy_request(struct SPDY_Request *request)
void(* SPDY_SettingsReceivedCallback)(struct SPDY_Session *session, struct SPDY_Settings *settings, uint8_t flags,...)
_MHD_EXTERN void SPDY_deinit(void)
void(* SPDY_PingCallback)(void *cls, struct SPDY_Session *session, struct timeval *rtt)
int(* SPDY_NewDataCallback)(void *cls, struct SPDY_Request *request, const void *buf, size_t size, bool more)
_MHD_EXTERN int SPDY_get_fdset(struct SPDY_Daemon *daemon, fd_set *read_fd_set, fd_set *write_fd_set, fd_set *except_fd_set)
void(* SPDY_SessionClosedCallback)(void *cls, struct SPDY_Session *session, int by_client)
_MHD_EXTERN struct SPDY_Response * SPDY_build_response(int status, const char *statustext, const char *version, struct SPDY_NameValue *headers, const void *data, size_t size)
_MHD_EXTERN int SPDY_send_ping(struct SPDY_Session *session, SPDY_PingCallback rttcb, void *rttcb_cls)
_MHD_EXTERN void SPDY_name_value_destroy(struct SPDY_NameValue *container)
_MHD_EXTERN int SPDY_settings_lookup(const struct SPDY_Settings *container, enum SPDY_SETTINGS id, enum SPDY_FLAG_SETTINGS *flags, int32_t *value)
_MHD_EXTERN void SPDY_set_cls_to_session(struct SPDY_Session *session, void *cls)
_MHD_EXTERN struct SPDY_Session * SPDY_get_session_for_request(const struct SPDY_Request *request)
_MHD_EXTERN void SPDY_set_panic_func(SPDY_PanicCallback cb, void *cls)
void(* SPDY_PanicCallback)(void *cls, const char *file, unsigned int line, const char *reason)
_MHD_EXTERN void * SPDY_get_cls_from_request(struct SPDY_Request *request)
_MHD_EXTERN void SPDY_set_cls_to_request(struct SPDY_Request *request, void *cls)
_MHD_EXTERN int SPDY_name_value_iterate(struct SPDY_NameValue *container, SPDY_NameValueIterator iterator, void *iterator_cls)
_MHD_EXTERN int SPDY_queue_response(struct SPDY_Request *request, struct SPDY_Response *response, bool closestream, bool consider_priority, SPDY_ResponseResultCallback rrcb, void *rrcb_cls)