1 2 /* 3 * Copyright (C) NGINX, Inc. 4 */ 5 6 #include <nxt_router.h> 7 #include <nxt_http.h> 8 9 10 static const nxt_http_request_state_t nxt_http_return_send_state; 11 12 13 nxt_http_action_t * 14 nxt_http_return_handler(nxt_task_t *task, nxt_http_request_t *r, 15 nxt_http_action_t *action) 16 { 17 nxt_http_status_t status; 18 19 status = action->u.return_code; 20 21 if (status >= NXT_HTTP_BAD_REQUEST 22 && status <= NXT_HTTP_SERVER_ERROR_MAX) 23 { 24 nxt_http_request_error(task, r, status); 25 return NULL; 26 } 27 28 r->status = status; 29 r->resp.content_length_n = 0; 30 r->state = &nxt_http_return_send_state; 31 32 nxt_http_request_header_send(task, r, NULL, NULL); 33 34 return NULL; 35 } 36 37 38 static const nxt_http_request_state_t nxt_http_return_send_state 39 nxt_aligned(64) = 40 { 41 .error_handler = nxt_http_request_error_handler, 42 }; 43