Implemented "return" action.
The "return" action can be used to immediately generate a simple HTTP response
with an arbitrary status:
{
"action": {
"return": 404
}
}
This is especially useful for denying access to specific resources.
This commit is contained in:
42
src/nxt_http_return.c
Normal file
42
src/nxt_http_return.c
Normal file
@@ -0,0 +1,42 @@
|
||||
|
||||
/*
|
||||
* Copyright (C) NGINX, Inc.
|
||||
*/
|
||||
|
||||
#include <nxt_router.h>
|
||||
#include <nxt_http.h>
|
||||
|
||||
|
||||
static const nxt_http_request_state_t nxt_http_return_send_state;
|
||||
|
||||
|
||||
nxt_http_action_t *
|
||||
nxt_http_return_handler(nxt_task_t *task, nxt_http_request_t *r,
|
||||
nxt_http_action_t *action)
|
||||
{
|
||||
nxt_http_status_t status;
|
||||
|
||||
status = action->u.return_code;
|
||||
|
||||
if (status >= NXT_HTTP_BAD_REQUEST
|
||||
&& status <= NXT_HTTP_SERVER_ERROR_MAX)
|
||||
{
|
||||
nxt_http_request_error(task, r, status);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
r->status = status;
|
||||
r->resp.content_length_n = 0;
|
||||
r->state = &nxt_http_return_send_state;
|
||||
|
||||
nxt_http_request_header_send(task, r, NULL, NULL);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
static const nxt_http_request_state_t nxt_http_return_send_state
|
||||
nxt_aligned(64) =
|
||||
{
|
||||
.error_handler = nxt_http_request_error_handler,
|
||||
};
|
||||
Reference in New Issue
Block a user