1 2 /* 3 * Copyright (C) NGINX, Inc. 4 */ 5 6 #ifndef _NXT_H1PROTO_H_INCLUDED_ 7 #define _NXT_H1PROTO_H_INCLUDED_ 8 9 10 #include <nxt_main.h> 11 #include <nxt_http_parse.h> 12 #include <nxt_http.h> 13 #include <nxt_router.h> 14 15 16 typedef struct nxt_h1p_websocket_timer_s nxt_h1p_websocket_timer_t; 17 18 19 struct nxt_h1proto_s { 20 nxt_http_request_parse_t parser; 21 22 uint8_t nbuffers; 23 uint8_t header_buffer_slot; 24 uint8_t large_buffer_slot; 25 uint8_t keepalive; /* 1 bit */ 26 uint8_t chunked; /* 1 bit */ 27 uint8_t websocket; /* 1 bit */ 28 uint8_t connection_upgrade; /* 1 bit */ 29 uint8_t upgrade_websocket; /* 1 bit */ 30 uint8_t websocket_version_ok; /* 1 bit */ 31 nxt_http_te_t transfer_encoding:8; /* 2 bits */ 32 33 uint8_t websocket_cont_expected; /* 1 bit */ 34 uint8_t websocket_closed; /* 1 bit */ 35 36 uint32_t header_size; 37 38 nxt_http_field_t *websocket_key; 39 nxt_h1p_websocket_timer_t *websocket_timer; 40 41 nxt_http_request_t *request; 42 nxt_buf_t *buffers; 43 44 nxt_buf_t **conn_write_tail; 45 /* 46 * All fields before the conn field will 47 * be zeroed in a keep-alive connection. 48 */ 49 nxt_conn_t *conn; 50 }; 51 52 #endif /* _NXT_H1PROTO_H_INCLUDED_ */ 53