From: Stephan Bosch Date: Mon, 27 Mar 2017 18:34:21 +0000 (+0200) Subject: lib-http: server: Restructured http-server-private.h. X-Git-Tag: 2.3.0.rc1~1319 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5560e4cd4f5eded857471042fb5485dfa16b7c46;p=thirdparty%2Fdovecot%2Fcore.git lib-http: server: Restructured http-server-private.h. --- diff --git a/src/lib-http/http-server-private.h b/src/lib-http/http-server-private.h index 31b54f820e..982cdd88b6 100644 --- a/src/lib-http/http-server-private.h +++ b/src/lib-http/http-server-private.h @@ -6,11 +6,19 @@ #include "http-server.h" #include "llist.h" -#define HTTP_SERVER_REQUEST_MAX_TARGET_LENGTH 4096 - struct http_server_request; struct http_server_connection; +/* + * Defaults + */ + +#define HTTP_SERVER_REQUEST_MAX_TARGET_LENGTH 4096 + +/* + * Types + */ + enum http_server_request_state { /* New request; request header is still being parsed. */ HTTP_SERVER_REQUEST_STATE_NEW = 0, @@ -39,6 +47,10 @@ enum http_server_request_state { HTTP_SERVER_REQUEST_STATE_ABORTED }; +/* + * Objects + */ + struct http_server_response { struct http_server_request *request; @@ -143,6 +155,27 @@ struct http_server { bool shutting_down:1; /* shutting down server */ }; +/* + * Forward declarations + */ + +bool http_server_connection_pending_payload( + struct http_server_connection *conn); + +/* + * Response + */ + +void http_server_response_free(struct http_server_response *resp); +int http_server_response_send(struct http_server_response *resp, + const char **error_r); +int http_server_response_send_more(struct http_server_response *resp, + const char **error_r); + +/* + * Request + */ + static inline const char * http_server_request_label(struct http_server_request *req) { @@ -156,24 +189,25 @@ http_server_request_label(struct http_server_request *req) req->req.method, req->req.target_raw); } -static inline const char * -http_server_connection_label(struct http_server_connection *conn) +static inline bool +http_server_request_is_new(struct http_server_request *req) { - return conn->conn.name; + return (req->state == HTTP_SERVER_REQUEST_STATE_NEW); } -bool http_server_connection_pending_payload(struct http_server_connection *conn); - - -/* response */ - -void http_server_response_free(struct http_server_response *resp); -int http_server_response_send(struct http_server_response *resp, - const char **error_r); -int http_server_response_send_more(struct http_server_response *resp, - const char **error_r); +static inline bool +http_server_request_is_complete(struct http_server_request *req) +{ + return (req->failed || req->conn->input_broken || + (req->next != NULL && !http_server_request_is_new(req->next)) || + !http_server_connection_pending_payload(req->conn)); +} -/* request */ +static inline bool +http_server_request_version_equals(struct http_server_request *req, + unsigned int major, unsigned int minor) { + return (req->req.version_major == major && req->req.version_minor == minor); +} struct http_server_request * http_server_request_new(struct http_server_connection *conn); @@ -189,28 +223,31 @@ void http_server_request_submit_response(struct http_server_request *req); void http_server_request_ready_to_respond(struct http_server_request *req); void http_server_request_finished(struct http_server_request *req); -static inline bool -http_server_request_is_new(struct http_server_request *req) +/* + * connection + */ + +static inline const char * +http_server_connection_label(struct http_server_connection *conn) { - return (req->state == HTTP_SERVER_REQUEST_STATE_NEW); + return conn->conn.name; } -static inline bool -http_server_request_is_complete(struct http_server_request *req) +static inline void +http_server_connection_add_request(struct http_server_connection *conn, + struct http_server_request *sreq) { - return (req->failed || req->conn->input_broken || - (req->next != NULL && !http_server_request_is_new(req->next)) || - !http_server_connection_pending_payload(req->conn)); + DLLIST2_APPEND(&conn->request_queue_head, &conn->request_queue_tail, sreq); + conn->request_queue_count++; } - -static inline bool -http_server_request_version_equals(struct http_server_request *req, - unsigned int major, unsigned int minor) { - return (req->req.version_major == major && req->req.version_minor == minor); +static inline void +http_server_connection_remove_request(struct http_server_connection *conn, + struct http_server_request *sreq) +{ + DLLIST2_REMOVE(&conn->request_queue_head, &conn->request_queue_tail, sreq); + conn->request_queue_count--; } -/* connection */ - struct connection_list *http_server_connection_list_init(void); bool http_server_connection_shut_down(struct http_server_connection *conn); @@ -230,19 +267,7 @@ void http_server_connection_tunnel(struct http_server_connection **_conn, int http_server_connection_discard_payload( struct http_server_connection *conn); -bool http_server_connection_pending_payload(struct http_server_connection *conn); - -static inline void http_server_connection_add_request(struct http_server_connection *conn, - struct http_server_request *sreq) -{ - DLLIST2_APPEND(&conn->request_queue_head, &conn->request_queue_tail, sreq); - conn->request_queue_count++; -} -static inline void http_server_connection_remove_request(struct http_server_connection *conn, - struct http_server_request *sreq) -{ - DLLIST2_REMOVE(&conn->request_queue_head, &conn->request_queue_tail, sreq); - conn->request_queue_count--; -} +bool http_server_connection_pending_payload( + struct http_server_connection *conn); #endif