Move most of it to http-server-request.
}
}
-static void http_server_connection_request_callback(
- struct http_server_connection *conn, struct http_server_request *req)
-{
- /* CONNECT method */
- if (strcmp(req->req.method, "CONNECT") == 0) {
- if (conn->callbacks->handle_connect_request == NULL) {
- http_server_request_fail(req, 505, "Not Implemented");
- return;
- }
- if (req->req.target.format !=
- HTTP_REQUEST_TARGET_FORMAT_AUTHORITY) {
- http_server_request_fail(req, 400, "Bad Request");
- return;
- }
- conn->callbacks->handle_connect_request(conn->context, req,
- req->req.target.url);
- /* Other methods */
- } else {
- if (conn->callbacks->handle_request == NULL) {
- http_server_request_fail(req, 505, "Not Implemented");
- return;
- }
- conn->callbacks->handle_request(conn->context, req);
- }
-}
-
static bool
http_server_connection_handle_request(struct http_server_connection *conn,
struct http_server_request *req)
old_refcount = req->refcount;
conn->in_req_callback = TRUE;
- http_server_connection_request_callback(conn, req);
+ http_server_request_callback(req);
if (conn->closed) {
/* The callback managed to get this connection destroyed/closed
*/
bool http_server_request_is_complete(struct http_server_request *req);
+void http_server_request_callback(struct http_server_request *req);
+
void http_server_request_halt_payload(struct http_server_request *req);
void http_server_request_continue_payload(struct http_server_request *req);
http_server_connection_trigger_responses(req->conn);
}
+static void
+http_server_request_connect_callback(struct http_server_request *req)
+{
+ struct http_server_connection *conn = req->conn;
+
+ if (conn->callbacks->handle_connect_request == NULL) {
+ http_server_request_fail(req, 505, "Not Implemented");
+ return;
+ }
+
+ if (req->req.target.format !=
+ HTTP_REQUEST_TARGET_FORMAT_AUTHORITY) {
+ http_server_request_fail(req, 400, "Bad Request");
+ return;
+ }
+
+ conn->callbacks->handle_connect_request(conn->context, req,
+ req->req.target.url);
+}
+
+void http_server_request_callback(struct http_server_request *req)
+{
+ struct http_server_connection *conn = req->conn;
+
+ if (strcmp(req->req.method, "CONNECT") == 0) {
+ /* CONNECT method */
+ http_server_request_connect_callback(req);
+ return;
+ }
+
+ if (conn->callbacks->handle_request == NULL) {
+ http_server_request_fail(req, 404, "Not Found");
+ return;
+ }
+ conn->callbacks->handle_request(conn->context, req);
+}
+
void http_server_request_ready_to_respond(struct http_server_request *req)
{
e_debug(req->event, "Ready to respond");