Deleted
Added
1 2/* 3 * Copyright (C) Igor Sysoev 4 * Copyright (C) NGINX, Inc. 5 */ 6 7#include <nxt_router.h> 8#include <nxt_http.h> --- 176 unchanged lines hidden (view full) --- 185static void 186nxt_h1p_header_parse(nxt_task_t *task, void *obj, void *data) 187{ 188 size_t size; 189 nxt_int_t ret; 190 nxt_buf_t *in, *b; 191 nxt_conn_t *c; 192 nxt_h1proto_t *h1p; |
193 nxt_http_status_t status; |
194 nxt_http_request_t *r; 195 nxt_socket_conf_joint_t *joint; 196 197 c = obj; 198 h1p = data; 199 200 nxt_debug(task, "h1p header parse"); 201 --- 58 unchanged lines hidden (view full) --- 260 261 ret = nxt_http_fields_process(r->fields, &nxt_h1p_fields_hash, r); 262 263 if (nxt_fast_path(ret == NXT_OK)) { 264 r->state->ready_handler(task, r, NULL); 265 return; 266 } 267 |
268 /* ret == NXT_ERROR */ 269 270 nxt_http_request_error(task, r, NXT_HTTP_BAD_REQUEST); 271 return; 272 } 273 274 if (ret == NXT_AGAIN) { |
275 in = c->read; 276 277 if (nxt_buf_mem_free_size(&in->mem) == 0) { 278 size = r->socket_conf->large_header_buffer_size; 279 280 if (size <= (size_t) nxt_buf_mem_used_size(&in->mem) 281 || h1p->nbuffers >= r->socket_conf->large_header_buffers) 282 { --- 17 unchanged lines hidden (view full) --- 300 h1p->buffers = in; 301 c->read = b; 302 } 303 304 nxt_conn_read(task->thread->engine, c); 305 return; 306 } 307 |
308 switch (ret) { |
309 |
310 case NXT_HTTP_PARSE_INVALID: 311 status = NXT_HTTP_BAD_REQUEST; 312 break; 313 314 case NXT_HTTP_PARSE_TOO_LARGE_FIELD: 315 status = NXT_HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE; 316 break; 317 318 default: 319 case NXT_ERROR: 320 status = NXT_HTTP_INTERNAL_SERVER_ERROR; 321 break; 322 } 323 324 nxt_http_request_error(task, r, status); |
325 return; 326 327fail: 328 329 nxt_h1p_conn_close(task, c, h1p); 330} 331 332 --- 687 unchanged lines hidden --- |