lsquic_headers.h revision 229fce07
1/* Copyright (c) 2017 - 2019 LiteSpeed Technologies Inc. See LICENSE. */ 2#ifndef LSQUIC_HEADERS_H 3#define LSQUIC_HEADERS_H 1 4 5#include <stdint.h> 6 7/* When ea_hsi_if is not specified, the headers are converted to a C string 8 * that contains HTTP/1.x-like header structure. 9 */ 10struct http1x_headers 11{ 12 unsigned h1h_size; /* Number of characters in h1h_buf, not 13 * counting the NUL byte. 14 */ 15 unsigned h1h_off; /* Reading offset */ 16 char *h1h_buf; 17}; 18 19 20/* This struct is used to return decoded HEADERS and PUSH_PROMISE frames. 21 * Some of the fields are only used for HEADERS frames. They are marked 22 * with "H" comment below. 23 */ 24struct uncompressed_headers 25{ 26 uint32_t uh_stream_id; 27 uint32_t uh_oth_stream_id; /* For HEADERS frame, the ID of the 28 * stream that this stream depends 29 * on. (Zero means unset.) For 30 * PUSH_PROMISE, the promised stream 31 * ID. 32 */ 33 unsigned short /* H */ uh_weight; /* 1 - 256; 0 means not set */ 34 signed char /* H */ uh_exclusive; /* 0 or 1 when set; -1 means not set */ 35 enum { 36 /* H */ UH_FIN = (1 << 0), 37 UH_PP = (1 << 1), /* Push promise */ 38 UH_H1H = (1 << 2), /* uh_hset points to http1x_headers */ 39 } uh_flags:8; 40 void *uh_hset; 41}; 42 43#endif 44