Deleted
Added
nxt_http.h (1113:15480b895603) | nxt_http.h (1131:ec7d924d8dfb) |
---|---|
1 2/* 3 * Copyright (C) Igor Sysoev 4 * Copyright (C) NGINX, Inc. 5 */ 6 7#ifndef _NXT_HTTP_H_INCLUDED_ 8#define _NXT_HTTP_H_INCLUDED_ 9 10 11typedef enum { 12 NXT_HTTP_INVALID = 0, 13 | 1 2/* 3 * Copyright (C) Igor Sysoev 4 * Copyright (C) NGINX, Inc. 5 */ 6 7#ifndef _NXT_HTTP_H_INCLUDED_ 8#define _NXT_HTTP_H_INCLUDED_ 9 10 11typedef enum { 12 NXT_HTTP_INVALID = 0, 13 |
14 NXT_HTTP_CONTINUE = 100, 15 NXT_HTTP_SWITCHING_PROTOCOLS = 101, 16 |
|
14 NXT_HTTP_OK = 200, 15 NXT_HTTP_NO_CONTENT = 204, 16 17 NXT_HTTP_MULTIPLE_CHOICES = 300, 18 NXT_HTTP_MOVED_PERMANENTLY = 301, 19 NXT_HTTP_FOUND = 302, 20 NXT_HTTP_SEE_OTHER = 303, 21 NXT_HTTP_NOT_MODIFIED = 304, 22 23 NXT_HTTP_BAD_REQUEST = 400, 24 NXT_HTTP_NOT_FOUND = 404, 25 NXT_HTTP_REQUEST_TIMEOUT = 408, 26 NXT_HTTP_LENGTH_REQUIRED = 411, 27 NXT_HTTP_PAYLOAD_TOO_LARGE = 413, 28 NXT_HTTP_URI_TOO_LONG = 414, | 17 NXT_HTTP_OK = 200, 18 NXT_HTTP_NO_CONTENT = 204, 19 20 NXT_HTTP_MULTIPLE_CHOICES = 300, 21 NXT_HTTP_MOVED_PERMANENTLY = 301, 22 NXT_HTTP_FOUND = 302, 23 NXT_HTTP_SEE_OTHER = 303, 24 NXT_HTTP_NOT_MODIFIED = 304, 25 26 NXT_HTTP_BAD_REQUEST = 400, 27 NXT_HTTP_NOT_FOUND = 404, 28 NXT_HTTP_REQUEST_TIMEOUT = 408, 29 NXT_HTTP_LENGTH_REQUIRED = 411, 30 NXT_HTTP_PAYLOAD_TOO_LARGE = 413, 31 NXT_HTTP_URI_TOO_LONG = 414, |
32 NXT_HTTP_UPGRADE_REQUIRED = 426, |
|
29 NXT_HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE = 431, 30 31 NXT_HTTP_TO_HTTPS = 497, 32 33 NXT_HTTP_INTERNAL_SERVER_ERROR = 500, 34 NXT_HTTP_NOT_IMPLEMENTED = 501, 35 NXT_HTTP_BAD_GATEWAY = 502, 36 NXT_HTTP_SERVICE_UNAVAILABLE = 503, --- 19 unchanged lines hidden (view full) --- 56typedef struct { 57 nxt_work_handler_t ready_handler; 58 nxt_work_handler_t error_handler; 59} nxt_http_request_state_t; 60 61 62typedef struct nxt_h1proto_s nxt_h1proto_t; 63 | 33 NXT_HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE = 431, 34 35 NXT_HTTP_TO_HTTPS = 497, 36 37 NXT_HTTP_INTERNAL_SERVER_ERROR = 500, 38 NXT_HTTP_NOT_IMPLEMENTED = 501, 39 NXT_HTTP_BAD_GATEWAY = 502, 40 NXT_HTTP_SERVICE_UNAVAILABLE = 503, --- 19 unchanged lines hidden (view full) --- 60typedef struct { 61 nxt_work_handler_t ready_handler; 62 nxt_work_handler_t error_handler; 63} nxt_http_request_state_t; 64 65 66typedef struct nxt_h1proto_s nxt_h1proto_t; 67 |
68struct nxt_h1p_websocket_timer_s { 69 nxt_timer_t timer; 70 nxt_h1proto_t *h1p; 71 nxt_msec_t keepalive_interval; 72}; 73 74 |
|
64typedef union { 65 void *any; 66 nxt_h1proto_t *h1; 67} nxt_http_proto_t; 68 69 70#define nxt_http_field_name_set(_field, _name) \ 71 do { \ --- 22 unchanged lines hidden (view full) --- 94 95struct nxt_http_request_s { 96 nxt_http_proto_t proto; 97 nxt_socket_conf_joint_t *conf; 98 99 nxt_mp_t *mem_pool; 100 101 nxt_buf_t *body; | 75typedef union { 76 void *any; 77 nxt_h1proto_t *h1; 78} nxt_http_proto_t; 79 80 81#define nxt_http_field_name_set(_field, _name) \ 82 do { \ --- 22 unchanged lines hidden (view full) --- 105 106struct nxt_http_request_s { 107 nxt_http_proto_t proto; 108 nxt_socket_conf_joint_t *conf; 109 110 nxt_mp_t *mem_pool; 111 112 nxt_buf_t *body; |
113 nxt_buf_t *ws_frame; |
|
102 nxt_buf_t *out; 103 const nxt_http_request_state_t *state; 104 105 nxt_str_t host; 106 nxt_str_t server_name; 107 nxt_str_t target; 108 nxt_str_t version; 109 nxt_str_t *method; --- 12 unchanged lines hidden (view full) --- 122 123 nxt_sockaddr_t *remote; 124 nxt_sockaddr_t *local; 125 void *tls; 126 127 nxt_timer_t timer; 128 void *timer_data; 129 | 114 nxt_buf_t *out; 115 const nxt_http_request_state_t *state; 116 117 nxt_str_t host; 118 nxt_str_t server_name; 119 nxt_str_t target; 120 nxt_str_t version; 121 nxt_str_t *method; --- 12 unchanged lines hidden (view full) --- 134 135 nxt_sockaddr_t *remote; 136 nxt_sockaddr_t *local; 137 void *tls; 138 139 nxt_timer_t timer; 140 void *timer_data; 141 |
142 void *req_rpc_data; 143 |
|
130 nxt_buf_t *last; 131 132 nxt_http_response_t resp; 133 134 nxt_http_status_t status:16; 135 136 uint8_t pass_count; /* 8 bits */ 137 nxt_http_protocol_t protocol:8; /* 2 bits */ 138 uint8_t logged; /* 1 bit */ 139 uint8_t header_sent; /* 1 bit */ 140 uint8_t error; /* 1 bit */ | 144 nxt_buf_t *last; 145 146 nxt_http_response_t resp; 147 148 nxt_http_status_t status:16; 149 150 uint8_t pass_count; /* 8 bits */ 151 nxt_http_protocol_t protocol:8; /* 2 bits */ 152 uint8_t logged; /* 1 bit */ 153 uint8_t header_sent; /* 1 bit */ 154 uint8_t error; /* 1 bit */ |
155 uint8_t websocket_handshake; /* 1 bit */ |
|
141}; 142 143 144typedef struct nxt_http_route_s nxt_http_route_t; 145 146 147struct nxt_http_pass_s { 148 nxt_http_pass_t *(*handler)(nxt_task_t *task, --- 12 unchanged lines hidden (view full) --- 161 void (*body_read)(nxt_task_t *task, nxt_http_request_t *r); 162 void (*local_addr)(nxt_task_t *task, nxt_http_request_t *r); 163 void (*header_send)(nxt_task_t *task, nxt_http_request_t *r); 164 void (*send)(nxt_task_t *task, nxt_http_request_t *r, nxt_buf_t *out); 165 nxt_off_t (*body_bytes_sent)(nxt_task_t *task, nxt_http_proto_t proto); 166 void (*discard)(nxt_task_t *task, nxt_http_request_t *r, nxt_buf_t *last); 167 void (*close)(nxt_task_t *task, nxt_http_proto_t proto, 168 nxt_socket_conf_joint_t *joint); | 156}; 157 158 159typedef struct nxt_http_route_s nxt_http_route_t; 160 161 162struct nxt_http_pass_s { 163 nxt_http_pass_t *(*handler)(nxt_task_t *task, --- 12 unchanged lines hidden (view full) --- 176 void (*body_read)(nxt_task_t *task, nxt_http_request_t *r); 177 void (*local_addr)(nxt_task_t *task, nxt_http_request_t *r); 178 void (*header_send)(nxt_task_t *task, nxt_http_request_t *r); 179 void (*send)(nxt_task_t *task, nxt_http_request_t *r, nxt_buf_t *out); 180 nxt_off_t (*body_bytes_sent)(nxt_task_t *task, nxt_http_proto_t proto); 181 void (*discard)(nxt_task_t *task, nxt_http_request_t *r, nxt_buf_t *last); 182 void (*close)(nxt_task_t *task, nxt_http_proto_t proto, 183 nxt_socket_conf_joint_t *joint); |
184 void (*ws_frame_start)(nxt_task_t *task, nxt_http_request_t *r, 185 nxt_buf_t *ws_frame); |
|
169} nxt_http_proto_table_t; 170 171 172nxt_int_t nxt_http_init(nxt_task_t *task, nxt_runtime_t *rt); 173nxt_int_t nxt_h1p_init(nxt_task_t *task, nxt_runtime_t *rt); 174nxt_int_t nxt_http_response_hash_init(nxt_task_t *task, nxt_runtime_t *rt); 175 176void nxt_http_conn_init(nxt_task_t *task, void *obj, void *data); 177nxt_http_request_t *nxt_http_request_create(nxt_task_t *task); 178void nxt_http_request_error(nxt_task_t *task, nxt_http_request_t *r, 179 nxt_http_status_t status); 180void nxt_http_request_read_body(nxt_task_t *task, nxt_http_request_t *r); 181void nxt_http_request_header_send(nxt_task_t *task, nxt_http_request_t *r); | 186} nxt_http_proto_table_t; 187 188 189nxt_int_t nxt_http_init(nxt_task_t *task, nxt_runtime_t *rt); 190nxt_int_t nxt_h1p_init(nxt_task_t *task, nxt_runtime_t *rt); 191nxt_int_t nxt_http_response_hash_init(nxt_task_t *task, nxt_runtime_t *rt); 192 193void nxt_http_conn_init(nxt_task_t *task, void *obj, void *data); 194nxt_http_request_t *nxt_http_request_create(nxt_task_t *task); 195void nxt_http_request_error(nxt_task_t *task, nxt_http_request_t *r, 196 nxt_http_status_t status); 197void nxt_http_request_read_body(nxt_task_t *task, nxt_http_request_t *r); 198void nxt_http_request_header_send(nxt_task_t *task, nxt_http_request_t *r); |
199void nxt_http_request_ws_frame_start(nxt_task_t *task, nxt_http_request_t *r, 200 nxt_buf_t *ws_frame); |
|
182void nxt_http_request_send(nxt_task_t *task, nxt_http_request_t *r, 183 nxt_buf_t *out); 184nxt_buf_t *nxt_http_buf_mem(nxt_task_t *task, nxt_http_request_t *r, 185 size_t size); 186nxt_buf_t *nxt_http_buf_last(nxt_http_request_t *r); 187void nxt_http_request_error_handler(nxt_task_t *task, void *obj, void *data); | 201void nxt_http_request_send(nxt_task_t *task, nxt_http_request_t *r, 202 nxt_buf_t *out); 203nxt_buf_t *nxt_http_buf_mem(nxt_task_t *task, nxt_http_request_t *r, 204 size_t size); 205nxt_buf_t *nxt_http_buf_last(nxt_http_request_t *r); 206void nxt_http_request_error_handler(nxt_task_t *task, void *obj, void *data); |
207void nxt_http_request_close_handler(nxt_task_t *task, void *obj, void *data); |
|
188 189nxt_int_t nxt_http_request_host(void *ctx, nxt_http_field_t *field, 190 uintptr_t data); 191nxt_int_t nxt_http_request_field(void *ctx, nxt_http_field_t *field, 192 uintptr_t offset); 193nxt_int_t nxt_http_request_content_length(void *ctx, nxt_http_field_t *field, 194 uintptr_t data); 195 --- 11 unchanged lines hidden (view full) --- 207 nxt_http_request_t *r, nxt_http_pass_t *pass); 208 209extern nxt_time_string_t nxt_http_date_cache; 210 211extern nxt_lvlhsh_t nxt_response_fields_hash; 212 213extern const nxt_http_proto_table_t nxt_http_proto[]; 214 | 208 209nxt_int_t nxt_http_request_host(void *ctx, nxt_http_field_t *field, 210 uintptr_t data); 211nxt_int_t nxt_http_request_field(void *ctx, nxt_http_field_t *field, 212 uintptr_t offset); 213nxt_int_t nxt_http_request_content_length(void *ctx, nxt_http_field_t *field, 214 uintptr_t data); 215 --- 11 unchanged lines hidden (view full) --- 227 nxt_http_request_t *r, nxt_http_pass_t *pass); 228 229extern nxt_time_string_t nxt_http_date_cache; 230 231extern nxt_lvlhsh_t nxt_response_fields_hash; 232 233extern const nxt_http_proto_table_t nxt_http_proto[]; 234 |
235void nxt_h1p_websocket_first_frame_start(nxt_task_t *task, 236 nxt_http_request_t *r, nxt_buf_t *ws_frame); 237void nxt_h1p_websocket_frame_start(nxt_task_t *task, nxt_http_request_t *r, 238 nxt_buf_t *ws_frame); 239void nxt_h1p_complete_buffers(nxt_task_t *task, nxt_h1proto_t *h1p); 240nxt_msec_t nxt_h1p_conn_request_timer_value(nxt_conn_t *c, uintptr_t data); |
|
215 | 241 |
242extern const nxt_conn_state_t nxt_h1p_idle_close_state; 243 |
|
216#endif /* _NXT_HTTP_H_INCLUDED_ */ | 244#endif /* _NXT_HTTP_H_INCLUDED_ */ |