xref: /unit/src/nxt_h1proto.h (revision 1318)
11131Smax.romanov@nginx.com 
21131Smax.romanov@nginx.com /*
31131Smax.romanov@nginx.com  * Copyright (C) NGINX, Inc.
41131Smax.romanov@nginx.com  */
51131Smax.romanov@nginx.com 
61131Smax.romanov@nginx.com #ifndef _NXT_H1PROTO_H_INCLUDED_
71131Smax.romanov@nginx.com #define _NXT_H1PROTO_H_INCLUDED_
81131Smax.romanov@nginx.com 
91131Smax.romanov@nginx.com 
101131Smax.romanov@nginx.com #include <nxt_main.h>
111131Smax.romanov@nginx.com #include <nxt_http_parse.h>
121131Smax.romanov@nginx.com #include <nxt_http.h>
131131Smax.romanov@nginx.com #include <nxt_router.h>
141131Smax.romanov@nginx.com 
151131Smax.romanov@nginx.com 
161131Smax.romanov@nginx.com typedef struct nxt_h1p_websocket_timer_s nxt_h1p_websocket_timer_t;
171131Smax.romanov@nginx.com 
181131Smax.romanov@nginx.com 
191131Smax.romanov@nginx.com struct nxt_h1proto_s {
201131Smax.romanov@nginx.com     nxt_http_request_parse_t  parser;
211131Smax.romanov@nginx.com 
221131Smax.romanov@nginx.com     uint8_t                   nbuffers;
231270Sigor@sysoev.ru     uint8_t                   header_buffer_slot;
241270Sigor@sysoev.ru     uint8_t                   large_buffer_slot;
251131Smax.romanov@nginx.com     uint8_t                   keepalive;            /* 1 bit  */
261131Smax.romanov@nginx.com     uint8_t                   chunked;              /* 1 bit  */
271131Smax.romanov@nginx.com     uint8_t                   websocket;            /* 1 bit  */
281131Smax.romanov@nginx.com     uint8_t                   connection_upgrade;   /* 1 bit  */
291131Smax.romanov@nginx.com     uint8_t                   upgrade_websocket;    /* 1 bit  */
301131Smax.romanov@nginx.com     uint8_t                   websocket_version_ok; /* 1 bit  */
311131Smax.romanov@nginx.com     nxt_http_te_t             transfer_encoding:8;  /* 2 bits */
321131Smax.romanov@nginx.com 
331131Smax.romanov@nginx.com     uint8_t                   websocket_cont_expected;  /* 1 bit */
341131Smax.romanov@nginx.com     uint8_t                   websocket_closed;         /* 1 bit */
351131Smax.romanov@nginx.com 
361131Smax.romanov@nginx.com     uint32_t                  header_size;
371131Smax.romanov@nginx.com 
381131Smax.romanov@nginx.com     nxt_http_field_t          *websocket_key;
391131Smax.romanov@nginx.com     nxt_h1p_websocket_timer_t *websocket_timer;
401131Smax.romanov@nginx.com 
411131Smax.romanov@nginx.com     nxt_http_request_t        *request;
421131Smax.romanov@nginx.com     nxt_buf_t                 *buffers;
43*1318Smax.romanov@nginx.com 
44*1318Smax.romanov@nginx.com     nxt_buf_t                 **conn_write_tail;
451131Smax.romanov@nginx.com     /*
461131Smax.romanov@nginx.com      * All fields before the conn field will
471131Smax.romanov@nginx.com      * be zeroed in a keep-alive connection.
481131Smax.romanov@nginx.com      */
491131Smax.romanov@nginx.com     nxt_conn_t                *conn;
501131Smax.romanov@nginx.com };
511131Smax.romanov@nginx.com 
521131Smax.romanov@nginx.com #endif  /* _NXT_H1PROTO_H_INCLUDED_ */
53