From 89f4dd81faff4aee6a5dd362545dabef5ba45be6 Mon Sep 17 00:00:00 2001
From: Tatsuhiro Tsujikawa
Error codes used in this library. The code range is [-999, -500], +
Error codes used in this library. The code range is [-999, -500], inclusive. The following values are defined:
(-508) Used as a return value from nghttp2_data_source_read_callback() to indicate that data -transfer is postponed. See +transfer is postponed. See nghttp2_data_source_read_callback() for details.
(-509) -Stream ID has reached the maximum value. Therefore no stream ID +Stream ID has reached the maximum value. Therefore no stream ID is available.
(-511) -RST_STREAM has been added to the outbound queue. The stream is in -closing state.
+RST_STREAM has been added to the outbound queue. The stream is +in closing state.(-516) -Starting new stream is not allowed. (e.g., GOAWAY has been sent -and/or received.
+Starting new stream is not allowed (e.g., GOAWAY has been sent +and/or received).(-518) -The received frame contains the invalid header block. (e.g., -There are duplicate header names; or the header names are not -encoded in US-ASCII character set and not lower cased; or the -header name is zero-length string; or the header value contains -multiple in-sequence NUL bytes).
+The received frame contains the invalid header block (e.g., There +are duplicate header names; or the header names are not encoded +in US-ASCII character set and not lower cased; or the header name +is zero-length string; or the header value contains multiple +in-sequence NUL bytes).(-900) The errors < NGHTTP2_ERR_FATAL mean that the library is -under unexpected condition and cannot process any further data -reliably (e.g., out of memory).
+under unexpected condition and processing was terminated (e.g., +out of memory). If application receives this error code, it must +stop using that nghttp2_session object and only allowed +operation for that object is deallocate it using +nghttp2_session_del().(-901) -Out of memory. This is a fatal error.
+Out of memory. This is a fatal error.(-902) -The user callback function failed. This is a fatal error.
+The user callback function failed. This is a fatal error.The flags for HTTP/2 frames. This enum defines all flags for -frames, assuming that the same flag name has the same mask.
+The flags for HTTP/2 frames. This enum defines all flags for all +frames.
The category of HEADERS, which indicates the role of the frame. In +
The category of HEADERS, which indicates the role of the frame. In HTTP/2 spec, request, response, push response and other arbitrary -headers (e.g., trailers) are all called just HEADERS. To give the +headers (e.g., trailers) are all called just HEADERS. To give the application the role of incoming HEADERS frame, we define several categories.
The primary structure to hold the resources needed for a HTTP/2 -session. The details of this structure are intentionally hidden +session. The details of this structure are intentionally hidden from the public API.
This struct is what nghttp2_version() returns. It holds +
This struct is what nghttp2_version() returns. It holds information about the particular nghttp2 version.
Age of this struct. This instance of nghttp2 sets it to +
Age of this struct. This instance of nghttp2 sets it to NGHTTP2_VERSION_AGE but a future version may bump it and add more struct fields at the bottom
The type of this frame. See nghttp2_frame().
+The type of this frame. See nghttp2_frame().
Callback function invoked when the library wants to read data from -the source. The read data is sent in the stream stream_id. The -implementation of this function must read at most length bytes of -data from source (or possibly other places) and store them in -buf and return number of data stored in buf. If EOF is reached, -set NGHTTP2_DATA_FLAG_EOF flag in *data_falgs. If the -application wants to postpone DATA frames, (e.g., asynchronous I/O, -or reading data blocks for long time), it is achieved by returning -NGHTTP2_ERR_DEFERRED without reading any data in this -invocation. The library removes DATA frame from the outgoing queue -temporarily. To move back deferred DATA frame to outgoing queue, -call nghttp2_session_resume_data(). In case of error, there are -2 choices. Returning NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE -will close the stream by issuing RST_STREAM with -NGHTTP2_INTERNAL_ERROR. Returning -NGHTTP2_ERR_CALLBACK_FAILURE will signal the entire session -failure.
+the source. The read data is sent in the stream stream_id. +The implementation of this function must read at most length +bytes of data from source (or possibly other places) and store +them in buf and return number of data stored in buf. If EOF is +reached, set NGHTTP2_DATA_FLAG_EOF flag in *data_falgs. +If the application wants to postpone DATA frames (e.g., +asynchronous I/O, or reading data blocks for long time), it is +achieved by returning NGHTTP2_ERR_DEFERRED without reading +any data in this invocation. The library removes DATA frame from +the outgoing queue temporarily. To move back deferred DATA frame +to outgoing queue, call nghttp2_session_resume_data(). In case +of error, there are 2 choices. Returning +NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE will close the stream +by issuing RST_STREAM with NGHTTP2_INTERNAL_ERROR. +Returning NGHTTP2_ERR_CALLBACK_FAILURE will signal the +entire session failure.The DATA frame. The received data is delivered via +
The DATA frame. The received data is delivered via nghttp2_on_data_chunk_recv_callback.
The length of the padding in this frame. This includes PAD_HIGH +
The length of the padding in this frame. This includes PAD_HIGH and PAD_LOW.
The HEADERS frame. It has the following members:
+The HEADERS frame. It has the following members:
The length of the padding in this frame. This includes PAD_HIGH +
The length of the padding in this frame. This includes PAD_HIGH and PAD_LOW.
The PRIORITY frame. It has the following members:
+The PRIORITY frame. It has the following members:
The RST_STREAM frame. It has the following members:
+The RST_STREAM frame. It has the following members:
The error code. See nghttp2_error_code.
+The error code. See nghttp2_error_code.
The SETTINGS ID/Value pair. It has the following members:
+The SETTINGS ID/Value pair. It has the following members:
The SETTINGS ID. See nghttp2_settings_id.
+The SETTINGS ID. See nghttp2_settings_id.
The SETTINGS frame. It has the following members:
+The SETTINGS frame. It has the following members:
The PUSH_PROMISE frame. It has the following members:
+The PUSH_PROMISE frame. It has the following members:
The length of the padding in this frame. This includes PAD_HIGH +
The length of the padding in this frame. This includes PAD_HIGH and PAD_LOW.
The PING frame. It has the following members:
+The PING frame. It has the following members:
The GOAWAY frame. It has the following members:
+The GOAWAY frame. It has the following members:
The error code. See nghttp2_error_code.
+The error code. See nghttp2_error_code.
The WINDOW_UPDATE frame. It has the following members:
+The WINDOW_UPDATE frame. It has the following members:
This union includes all frames to pass them to various function -calls as nghttp2_frame type. The CONTINUATION frame is omitted from -here because the library deals with it internally.
+calls as nghttp2_frame type. The CONTINUATION frame is omitted +from here because the library deals with it internally.Callback function invoked when session wants to send data to the -remote peer. The implementation of this function must send at most -length bytes of data stored in data. The flags is currently +remote peer. The implementation of this function must send at most +length bytes of data stored in data. The flags is currently not used and always 0. It must return the number of bytes sent if it succeeds. If it cannot send any single byte without blocking, -it must return NGHTTP2_ERR_WOULDBLOCK. For other errors, it -must return NGHTTP2_ERR_CALLBACK_FAILURE. The user_data -pointer is the third argument passed in to the call to +it must return NGHTTP2_ERR_WOULDBLOCK. For other errors, +it must return NGHTTP2_ERR_CALLBACK_FAILURE. The +user_data pointer is the third argument passed in to the call to nghttp2_session_client_new() or nghttp2_session_server_new().
This callback is required if the application uses -nghttp2_session_send() to send data to the remote endpoint. If -the application uses nghttp2_session_mem_send() instead, this -callback function is unnecessary.
+nghttp2_session_send() to send data to the remote endpoint. If +the application uses solely nghttp2_session_mem_send() instead, +this callback function is unnecessary.Callback function invoked when session wants to receive data from -the remote peer. The implementation of this function must read at -most length bytes of data and store it in buf. The flags is -currently not used and always 0. It must return the number of bytes -written in buf if it succeeds. If it cannot read any single byte -without blocking, it must return NGHTTP2_ERR_WOULDBLOCK. If -it gets EOF before it reads any single byte, it must return -NGHTTP2_ERR_EOF. For other errors, it must return -NGHTTP2_ERR_CALLBACK_FAILURE. Returning 0 is treated as -NGHTTP2_ERR_WOULDBLOCK. The user_data pointer is the -third argument passed in to the call to +the remote peer. The implementation of this function must read at +most length bytes of data and store it in buf. The flags is +currently not used and always 0. It must return the number of +bytes written in buf if it succeeds. If it cannot read any +single byte without blocking, it must return +NGHTTP2_ERR_WOULDBLOCK. If it gets EOF before it reads any +single byte, it must return NGHTTP2_ERR_EOF. For other +errors, it must return NGHTTP2_ERR_CALLBACK_FAILURE. +Returning 0 is treated as NGHTTP2_ERR_WOULDBLOCK. The +user_data pointer is the third argument passed in to the call to nghttp2_session_client_new() or nghttp2_session_server_new().
This callback is required if the application uses -nghttp2_session_recv() to receive data from the remote -endpoint. If the application uses nghttp2_session_mem_recv() +nghttp2_session_recv() to receive data from the remote endpoint. +If the application uses solely nghttp2_session_mem_recv() instead, this callback function is unnecessary.
Callback function invoked by nghttp2_session_recv() when a aframe -is received. The user_data pointer is the third argument passed +
Callback function invoked by nghttp2_session_recv() when a frame +is received. The user_data pointer is the third argument passed in to the call to nghttp2_session_client_new() or nghttp2_session_server_new().
If frame is HEADERS or PUSH_PROMISE, the nva and nvlen member of their data structure are always NULL and 0 -respectively. The header name/value pairs are emitted via +respectively. The header name/value pairs are emitted via nghttp2_on_header_callback.
For HEADERS, PUSH_PROMISE and DATA frames, this callback may be called after stream is closed (see -nghttp2_on_stream_close_callback). The application should +nghttp2_on_stream_close_callback). The application should check that stream is still alive using its own stream management or nghttp2_session_get_stream_user_data().
-Only HEADERS and DATA frame can signal the end of incoming data. If -frame->hd.flags & NGHTTP2_FLAG_END_STREAM is nonzero, the +
Only HEADERS and DATA frame can signal the end of incoming data. +If frame->hd.flags & NGHTTP2_FLAG_END_STREAM is nonzero, the frame is the last frame from the remote peer in this stream.
-The implementation of this function must return 0 if it -succeeds. If nonzero value is returned, it is treated as fatal -error and nghttp2_session_recv() and nghttp2_session_mem_recv() -functions immediately return NGHTTP2_ERR_CALLBACK_FAILURE.
+The implementation of this function must return 0 if it succeeds. +If nonzero value is returned, it is treated as fatal error and +nghttp2_session_recv() and nghttp2_session_mem_recv() functions +immediately return NGHTTP2_ERR_CALLBACK_FAILURE.
Callback function invoked by nghttp2_session_recv() when an -invalid non-DATA frame is received. The error_code is one of the -nghttp2_error_code and indicates the error. When this +invalid non-DATA frame is received. The error_code is one of the +nghttp2_error_code and indicates the error. When this callback function is invoked, the library automatically submits -either RST_STREAM or GOAWAY frame. The user_data pointer is the +either RST_STREAM or GOAWAY frame. The user_data pointer is the third argument passed in to the call to nghttp2_session_client_new() or nghttp2_session_server_new().
If frame is HEADERS or PUSH_PROMISE, the nva and nvlen member of their data structure are always NULL and 0 respectively.
-The implementation of this function must return 0 if it -succeeds. If nonzero is returned, it is treated as fatal error and +
The implementation of this function must return 0 if it succeeds. +If nonzero is returned, it is treated as fatal error and nghttp2_session_recv() and nghttp2_session_send() functions immediately return NGHTTP2_ERR_CALLBACK_FAILURE.
Callback function invoked when a chunk of data in DATA frame is -received. The stream_id is the stream ID this DATA frame belongs -to. The flags is the flags of DATA frame which this data chunk is -contained. (flags & NGHTTP2_FLAG_END_STREAM) != 0 does not -necessarily mean this chunk of data is the last one in the -stream. You should use nghttp2_on_frame_recv_callback to -know all data frames are received. The user_data pointer is the -third argument passed in to the call to -nghttp2_session_client_new() or nghttp2_session_server_new().
+received. The stream_id is the stream ID this DATA frame belongs +to. The flags is the flags of DATA frame which this data chunk +is contained. (flags & NGHTTP2_FLAG_END_STREAM) != 0 does not +necessarily mean this chunk of data is the last one in the stream. +You should use nghttp2_on_frame_recv_callback to know all +data frames are received. The user_data pointer is the third +argument passed in to the call to nghttp2_session_client_new() or +nghttp2_session_server_new().If the application uses nghttp2_session_mem_recv(), it can return NGHTTP2_ERR_PAUSE to make nghttp2_session_mem_recv() return without processing further input bytes. The memory by pointed by the data is retained until -nghttp2_session_mem_recv() or nghttp2_session_recv() is -called. The application must retain the input bytes which was used -to produce the data parameter, because it may refer to the memory +nghttp2_session_mem_recv() or nghttp2_session_recv() is called. +The application must retain the input bytes which was used to +produce the data parameter, because it may refer to the memory region included in the input bytes.
-The implementation of this function must return 0 if it -succeeds. If nonzero is returned, it is treated as fatal error and +
The implementation of this function must return 0 if it succeeds. +If nonzero is returned, it is treated as fatal error and nghttp2_session_recv() and nghttp2_session_mem_recv() functions immediately return NGHTTP2_ERR_CALLBACK_FAILURE.
Callback function invoked before the non-DATA frame frame is -sent. This may be useful, for example, to know the stream ID of +sent. This may be useful, for example, to know the stream ID of HEADERS and PUSH_PROMISE frame (see also nghttp2_session_get_stream_user_data()), which is not assigned -when it was queued. The user_data pointer is the third argument +when it was queued. The user_data pointer is the third argument passed in to the call to nghttp2_session_client_new() or nghttp2_session_server_new().
-The implementation of this function must return 0 if it -succeeds. If nonzero is returned, it is treated as fatal error and +
The implementation of this function must return 0 if it succeeds. +If nonzero is returned, it is treated as fatal error and nghttp2_session_recv() and nghttp2_session_send() functions immediately return NGHTTP2_ERR_CALLBACK_FAILURE.
Callback function invoked after the frame frame is sent. The user_data pointer is the third argument passed in to the call to nghttp2_session_client_new() or nghttp2_session_server_new().
-The implementation of this function must return 0 if it -succeeds. If nonzero is returned, it is treated as fatal error and +
The implementation of this function must return 0 if it succeeds. +If nonzero is returned, it is treated as fatal error and nghttp2_session_recv() and nghttp2_session_send() functions immediately return NGHTTP2_ERR_CALLBACK_FAILURE.
Callback function invoked after the non-DATA frame frame is not -sent because of the error. The error is indicated by the +sent because of the error. The error is indicated by the lib_error_code, which is one of the values defined in -nghttp2_error. The user_data pointer is the third +nghttp2_error. The user_data pointer is the third argument passed in to the call to nghttp2_session_client_new() or nghttp2_session_server_new().
-The implementation of this function must return 0 if it -succeeds. If nonzero is returned, it is treated as fatal error and +
The implementation of this function must return 0 if it succeeds. +If nonzero is returned, it is treated as fatal error and nghttp2_session_recv() and nghttp2_session_send() functions immediately return NGHTTP2_ERR_CALLBACK_FAILURE.
Callback function invoked when the stream stream_id is -closed. The reason of closure is indicated by the error_code. The +
Callback function invoked when the stream stream_id is closed. +The reason of closure is indicated by the error_code. The stream_user_data, which was specified in nghttp2_submit_request() -or nghttp2_submit_headers(), is still available in this -function. The user_data pointer is the third argument passed in -to the call to nghttp2_session_client_new() or +or nghttp2_submit_headers(), is still available in this function. +The user_data pointer is the third argument passed in to the call +to nghttp2_session_client_new() or nghttp2_session_server_new().
-The implementation of this function must return 0 if it -succeeds. If nonzero is returned, it is treated as fatal error and +
This function is also called for a stream in reserved state.
+The implementation of this function must return 0 if it succeeds. +If nonzero is returned, it is treated as fatal error and nghttp2_session_recv() and nghttp2_session_send() functions immediately return NGHTTP2_ERR_CALLBACK_FAILURE.
Callback function invoked when the received frame type is -unknown. The head is the pointer to the header of the received -frame. The headlen is the length of the head. According to the -spec, the headlen is always 8. In other words, the head is the -first 8 bytes of the received frame. The payload is the pointer -to the data portion of the received frame. The payloadlen is the -length of the payload. This is the data after the length -field. The user_data pointer is the third argument passed in to -the call to nghttp2_session_client_new() or -nghttp2_session_server_new().
-The implementation of this function must return 0 if it -succeeds. If nonzero is returned, it is treated as fatal error and +
Callback function invoked when the received frame type is unknown. +The head is the pointer to the header of the received frame. The +headlen is the length of the head. According to the spec, the +headlen is always 8. In other words, the head is the first 8 +bytes of the received frame. The payload is the pointer to the +data portion of the received frame. The payloadlen is the length +of the payload. This is the data after the length field. The +user_data pointer is the third argument passed in to the call to +nghttp2_session_client_new() or nghttp2_session_server_new().
+The implementation of this function must return 0 if it succeeds. +If nonzero is returned, it is treated as fatal error and nghttp2_session_recv() and nghttp2_session_send() functions immediately return NGHTTP2_ERR_CALLBACK_FAILURE.
Callback function invoked when the reception of header block in -HEADERS or PUSH_PROMISE is started. Each header name/value pair +HEADERS or PUSH_PROMISE is started. Each header name/value pair will be emitted by nghttp2_on_header_callback.
The frame->hd.flags may not have NGHTTP2_FLAG_END_HEADERS flag set, which indicates that one -or more CONTINUATION frames are involved. But the application does +or more CONTINUATION frames are involved. But the application does not need to care about that because the header name/value pairs are emitted transparently regardless of CONTINUATION frames.
The implementation of this function must return 0 if it succeeds or -NGHTTP2_ERR_CALLBACK_FAILURE. If nonzero value other than +NGHTTP2_ERR_CALLBACK_FAILURE. If nonzero value other than NGHTTP2_ERR_CALLBACK_FAILURE is returned, it is treated as -if NGHTTP2_ERR_CALLBACK_FAILURE is returned. If +if NGHTTP2_ERR_CALLBACK_FAILURE is returned. If NGHTTP2_ERR_CALLBACK_FAILURE is returned, nghttp2_session_mem_recv() function will immediately return NGHTTP2_ERR_CALLBACK_FAILURE.
@@ -1783,38 +1786,38 @@ error has been detected, nghttp2_on_frame_recv_callback for the frame will not be invoked. -The name may be NULL if the namelen is 0. The same thing +
The name may be NULL if the namelen is 0. The same thing can be said about the value.
Please note that nghttp2 library does not perform any validity -check against the name and the value. For example, the +check against the name and the value. For example, the namelen could be 0, and/or the value contains 0x0a or -0x0d. The application must check them if it matters. The +0x0d. The application must check them if it matters. The helper function nghttp2_check_header_name() and nghttp2_check_header_value() provide simple validation against HTTP2 header field construction rule.
One more thing to note is that the value may contain NULL -(0x00) characters. It is used to concatenate header values -which share the same header field name. The application should -split these values if it wants to get individual value. This +(0x00) characters. It is used to concatenate header values +which share the same header field name. The application should +split these values if it wants to get individual value. This concatenation is used in order to keep the ordering of headers.
If the application uses nghttp2_session_mem_recv(), it can return NGHTTP2_ERR_PAUSE to make nghttp2_session_mem_recv() return without processing further input bytes. The memory pointed by frame, name and value parameters are retained until -nghttp2_session_mem_recv() or nghttp2_session_recv() is -called. The application must retain the input bytes which was used -to produce these parameters, because it may refer to the memory -region included in the input bytes.
+nghttp2_session_mem_recv() or nghttp2_session_recv() is called. +The application must retain the input bytes which was used to +produce these parameters, because it may refer to the memory region +included in the input bytes.Returning NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE will close the stream by issuing RST_STREAM with -NGHTTP2_INTERNAL_ERROR. In this case, +NGHTTP2_INTERNAL_ERROR. In this case, nghttp2_on_frame_recv_callback will not be invoked.
-The implementation of this function must return 0 if it -succeeds. It may return NGHTTP2_ERR_PAUSE or -NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE. For other critical -failures, it must return NGHTTP2_ERR_CALLBACK_FAILURE. If +
The implementation of this function must return 0 if it succeeds. +It may return NGHTTP2_ERR_PAUSE or +NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE. For other critical +failures, it must return NGHTTP2_ERR_CALLBACK_FAILURE. If the other nonzero value is returned, it is treated as -NGHTTP2_ERR_CALLBACK_FAILURE. If +NGHTTP2_ERR_CALLBACK_FAILURE. If NGHTTP2_ERR_CALLBACK_FAILURE is returned, nghttp2_session_recv() and nghttp2_session_mem_recv() functions immediately return NGHTTP2_ERR_CALLBACK_FAILURE.
@@ -1824,11 +1827,11 @@ immediately return typedef ssize_t (*nghttp2_select_padding_callback)(nghttp2_session *session, const nghttp2_frame *frame, size_t max_payloadlen, void *user_data)¶Callback function invoked when the library asks application how -much padding is required for the transmission of the frame. The -application must choose the total length of payload including -padded bytes in range [frame->hd.length, max_payloadlen], -inclusive. Choosing number not in this range will be treated as -NGHTTP2_ERR_CALLBACK_FAILURE. Returning +many padding bytes are required for the transmission of the +frame. The application must choose the total length of payload +including padded bytes in range [frame->hd.length, max_payloadlen], +inclusive. Choosing number not in this range will be treated as +NGHTTP2_ERR_CALLBACK_FAILURE. Returning frame->hd.length means no padding is added. Returning NGHTTP2_ERR_CALLBACK_FAILURE will make nghttp2_session_send() function immediately return @@ -1843,18 +1846,18 @@ inclusive. Choosing number not in this range will be treated as
Callback function invoked when the session wants to send data -to the remote peer. This callback is not necessary if the -application uses nghttp2_session_mem_send() to serialize data -to transmit.
+to the remote peer. This callback is not necessary if the +application uses solely nghttp2_session_mem_send() to serialize +data to transmit.Callback function invoked when the session wants to receive -data from the remote peer. This callback is not necessary if the -application uses nghttp2_session_mem_recv() to process received -data.
+data from the remote peer. This callback is not necessary if the +application uses solely nghttp2_session_mem_recv() to process +received data.Callback function invoked when the library asks application how -much padding is required for the transmission of the given frame.
+many padding bytes are required for the transmission of the given +frame.The gzip stream to inflate data. The details of this structure are +
The gzip stream to inflate data. The details of this structure are intentionally hidden from the public API.
This option prevents the library from sending WINDOW_UPDATE for a -stream automatically. If this option is set to nonzero, the +stream automatically. If this option is set to nonzero, the library won’t send WINDOW_UPDATE for a stream and the application is responsible for sending WINDOW_UPDATE using -nghttp2_submit_window_update(). By default, this option is set to +nghttp2_submit_window_update(). By default, this option is set to zero.
This option prevents the library from sending WINDOW_UPDATE for a -connection automatically. If this option is set to nonzero, the +connection automatically. If this option is set to nonzero, the library won’t send WINDOW_UPDATE for a connection and the -application is responsible for sending WINDOW_UPDATE with stream -ID 0 using nghttp2_submit_window_update(). By default, this -option is set to zero.
+application is responsible for sending WINDOW_UPDATE with stream ID +0 using nghttp2_submit_window_update(). By default, this option is +set to zero.This option sets the SETTINGS_MAX_CONCURRENT_STREAMS value of -remote endpoint as if it is received in SETTINGS frame. Without +remote endpoint as if it is received in SETTINGS frame. Without specifying this option, before the local endpoint receives SETTINGS_MAX_CONCURRENT_STREAMS in SETTINGS frame from remote -endpoint, SETTINGS_MAX_CONCURRENT_STREAMS is unlimited. This may -cause problem if local endpoint submits lots of requests -initially and sending them at once to the remote peer may lead to -the rejection of some requests. Specifying this option to the -sensible value, say 100, may avoid this kind of issue. This value -will be overwritten if the local endpoint receives +endpoint, SETTINGS_MAX_CONCURRENT_STREAMS is unlimited. This may +cause problem if local endpoint submits lots of requests initially +and sending them at once to the remote peer may lead to the +rejection of some requests. Specifying this option to the sensible +value, say 100, may avoid this kind of issue. This value will be +overwritten if the local endpoint receives SETTINGS_MAX_CONCURRENT_STREAMS from the remote endpoint.
Initializes *session_ptr for client use. The all members of -callbacks are copied to *session_ptr. Therefore *session_ptr -does not store callbacks. user_data is an arbitrary user +
Initializes *session_ptr for client use. The all members of +callbacks are copied to *session_ptr. Therefore *session_ptr +does not store callbacks. The user_data is an arbitrary user supplied data, which will be passed to the callback functions.
The nghttp2_session_callbacks.send_callback must be specified. If the application code uses nghttp2_session_recv(), the nghttp2_session_callbacks.recv_callback must be -specified. The other members of callbacks can be NULL.
+specified. The other members of callbacks can be NULL.This function returns 0 if it succeeds, or one of the following negative error codes:
Initializes *session_ptr for server use. The all members of +
Initializes *session_ptr for server use. The all members of callbacks are copied to *session_ptr. Therefore *session_ptr -does not store callbacks. user_data is an arbitrary user +does not store callbacks. The user_data is an arbitrary user supplied data, which will be passed to the callback functions.
The nghttp2_session_callbacks.send_callback must be specified. If the application code uses nghttp2_session_recv(), the nghttp2_session_callbacks.recv_callback must be -specified. The other members of callbacks can be NULL.
+specified. The other members of callbacks can be NULL.This function returns 0 if it succeeds, or one of the following negative error codes:
Frees any resources allocated for session. If session is +
Frees any resources allocated for session. If session is NULL, this function does nothing.
Sends pending frames to the remote peer.
This function retrieves the highest prioritized frame from the -outbound queue and sends it to the remote peer. It does this as +outbound queue and sends it to the remote peer. It does this as many as possible until the user callback nghttp2_session_callbacks.send_callback returns NGHTTP2_ERR_WOULDBLOCK or the outbound queue becomes empty. This function calls several callback functions which are passed -when initializing the session. Here is the simple time chart +when initializing the session. Here is the simple time chart which tells when each callback is invoked:
Returns the serialized data to send.
-This function behaves like nghttp2_session_send() except that -it does not use nghttp2_session_callbacks.send_callback -to transmit data. Instead, it assigns the pointer to the serialized -data to the *data_ptr and returns its length. The other callbacks -are called in the same way as they are in nghttp2_session_send().
+This function behaves like nghttp2_session_send() except that it +does not use nghttp2_session_callbacks.send_callback to +transmit data. Instead, it assigns the pointer to the serialized +data to the *data_ptr and returns its length. The other +callbacks are called in the same way as they are in +nghttp2_session_send().
If no data is available to send, this function returns 0.
-This function may not return all serialized data in one -invocation. To get all data, call this function repeatedly until it -returns 0 or one of negative error codes.
+This function may not return all serialized data in one invocation. +To get all data, call this function repeatedly until it returns 0 +or one of negative error codes.
The assigned *data_ptr is valid until the next call of nghttp2_session_mem_send() or nghttp2_session_send().
The caller must send all data before sending the next chunk of @@ -2167,9 +2173,9 @@ int nghttp2_session_recv(nghttp2_session_callbacks.recv_callback returns -NGHTTP2_ERR_WOULDBLOCK. This function calls several +NGHTTP2_ERR_WOULDBLOCK. This function calls several callback functions which are passed when initializing the -session. Here is the simple time chart which tells when each +session. Here is the simple time chart which tells when each callback is invoked:
Processes data in as an input from the remote endpoint. The +
Processes data in as an input from the remote endpoint. The inlen indicates the number of bytes in the in.
This function behaves like nghttp2_session_recv() except that it does not use nghttp2_session_callbacks.recv_callback to receive data; the in is the only data for the invocation of this -function. If all bytes are processed, this function returns. The +function. If all bytes are processed, this function returns. The other callbacks are called in the same way as they are in nghttp2_session_recv().
In the current implementation, this function always tries to @@ -2295,13 +2301,13 @@ drop the connection.
Returns stream_user_data for the stream stream_id. The +
Returns stream_user_data for the stream stream_id. The stream_user_data is provided by nghttp2_submit_request(), nghttp2_submit_headers() or -nghttp2_session_set_stream_user_data(). Unless it is set using +nghttp2_session_set_stream_user_data(). Unless it is set using nghttp2_session_set_stream_user_data(), if the stream is initiated by the remote endpoint, stream_user_data is always -NULL. If the stream does not exist, this function returns +NULL. If the stream does not exist, this function returns NULL.
Sets the stream_user_data to the stream denoted by the -stream_id. If a stream user data is already set to the stream, it -is replaced with the stream_user_data. It is valid to specify +stream_id. If a stream user data is already set to the stream, +it is replaced with the stream_user_data. It is valid to specify NULL in the stream_user_data, which nullifies the associated data pointer.
It is valid to set the stream_user_data to the stream reserved by @@ -2326,7 +2332,7 @@ negative error codes:
Returns the number of frames in the outbound queue. This does not +
Returns the number of frames in the outbound queue. This does not include the deferred DATA frames.
Returns the number of DATA payload in bytes received without -WINDOW_UPDATE transmission for the stream stream_id. The local +WINDOW_UPDATE transmission for the stream stream_id. The local (receive) window size can be adjusted by -nghttp2_submit_window_update(). This function takes into account -that and returns effective data length. In particular, if the +nghttp2_submit_window_update(). This function takes into account +that and returns effective data length. In particular, if the local window size is reduced by submitting negative window_size_increment with nghttp2_submit_window_update(), this function returns the number of bytes less than actually received.
@@ -2347,9 +2353,9 @@ function returns the number of bytes less than actually received.Returns the local (receive) window size for the stream -stream_id. The local window size can be adjusted by -nghttp2_submit_window_update(). This function takes into account +
Returns the local (receive) window size for the stream stream_id. +The local window size can be adjusted by +nghttp2_submit_window_update(). This function takes into account that and returns effective window size.
This function returns -1 if it fails.
Returns the number of DATA payload in bytes received without -WINDOW_UPDATE transmission for a connection. The local (receive) -window size can be adjusted by -nghttp2_submit_window_update(). This function takes into account -that and returns effective data length. In particular, if the local -window size is reduced by submitting negative window_size_increment -with nghttp2_submit_window_update(), this function returns the -number of bytes less than actually received.
+WINDOW_UPDATE transmission for a connection. The local (receive) +window size can be adjusted by nghttp2_submit_window_update(). +This function takes into account that and returns effective data +length. In particular, if the local window size is reduced by +submitting negative window_size_increment with +nghttp2_submit_window_update(), this function returns the number +of bytes less than actually received.This function returns -1 if it fails.
Returns the local (receive) window size for a connection. The local -window size can be adjusted by -nghttp2_submit_window_update(). This function takes into account +
Returns the local (receive) window size for a connection. The +local window size can be adjusted by +nghttp2_submit_window_update(). This function takes into account that and returns effective window size.
This function returns -1 if it fails.
Signals the session so that the connection should be terminated.
GOAWAY frame with the given error_code will be submitted if it -has not been transmitted. After the transmission, both +has not been transmitted. After the transmission, both nghttp2_session_want_read() and nghttp2_session_want_write() -return 0. If GOAWAY frame has already transmitted at the time when +return 0. If GOAWAY frame has already transmitted at the time when this function is invoked, nghttp2_session_want_read() and nghttp2_session_want_write() returns 0 immediately after this function succeeds.
This function should be called when the connection should be -terminated after sending GOAWAY. If the remaining streams should be -processed after GOAWAY, use nghttp2_submit_goaway() instead.
+terminated after sending GOAWAY. If the remaining streams should +be processed after GOAWAY, use nghttp2_submit_goaway() instead.This function returns 0 if it succeeds, or one of the following negative error codes:
Performs post-process of HTTP Upgrade request. This function can be -called from both client and server, but the behavior is very +
Performs post-process of HTTP Upgrade request. This function can +be called from both client and server, but the behavior is very different in each other.
If called from client side, the settings_payload must be the value sent in HTTP2-Settings header field and must be decoded -by base64url decoder. The settings_payloadlen is the length of -settings_payload. The settings_payload is unpacked and its -setting values will be submitted using -nghttp2_submit_settings(). This means that the client application -code does not need to submit SETTINGS by itself. The stream with -stream ID=1 is opened and the stream_user_data is used for its -stream_user_data. The opened stream becomes half-closed (local) -state.
+by base64url decoder. The settings_payloadlen is the length of +settings_payload. The settings_payload is unpacked and its +setting values will be submitted using nghttp2_submit_settings(). +This means that the client application code does not need to submit +SETTINGS by itself. The stream with stream ID=1 is opened and the +stream_user_data is used for its stream_user_data. The opened +stream becomes half-closed (local) state.If called from server side, the settings_payload must be the value received in HTTP2-Settings header field and must be -decoded by base64url decoder. The settings_payloadlen is the -length of settings_payload. It is treated as if the SETTINGS -frame with that payload is received. Thus, callback functions for -the reception of SETTINGS frame will be invoked. The stream with -stream ID=1 is opened. The stream_user_data is ignored. The +decoded by base64url decoder. The settings_payloadlen is the +length of settings_payload. It is treated as if the SETTINGS +frame with that payload is received. Thus, callback functions for +the reception of SETTINGS frame will be invoked. The stream with +stream ID=1 is opened. The stream_user_data is ignored. The opened stream becomes half-closed (remote).
This function returns 0 if it succeeds, or one of the following negative error codes:
@@ -2448,13 +2453,13 @@ negative error codes:Serializes the SETTINGS values iv in the buf. The size of the -buf is specified by buflen. The number of entries in the iv -array is given by niv. The required space in buf for the niv +
Serializes the SETTINGS values iv in the buf. The size of the +buf is specified by buflen. The number of entries in the iv +array is given by niv. The required space in buf for the niv entries is 8*niv bytes and if the given buffer is too small, an -error is returned. This function is used mainly for creating a +error is returned. This function is used mainly for creating a SETTINGS payload to be sent with the HTTP2-Settings header -field in an HTTP Upgrade request. The data written in buf is NOT +field in an HTTP Upgrade request. The data written in buf is NOT base64url encoded and the application is responsible for encoding.
This function returns the number of bytes written in buf, or one of the following negative error codes:
@@ -2469,7 +2474,7 @@ of the following negative error codes:Returns string describing the lib_error_code. The +
Returns string describing the lib_error_code. The lib_error_code must be one of the nghttp2_error.
Initializes pri_spec with the stream_id of the stream to depend -on and its exclusive flag. If exclusive is nonzero, exclusive +on and its exclusive flag. If exclusive is nonzero, exclusive flag is set.
The nva is an array of name/value pair nghttp2_nv with -nvlen elements. The value is opaque sequence of bytes and -therefore can contain NULL byte (0x0). If the application requires +nvlen elements. The value is opaque sequence of bytes and +therefore can contain NULL byte (0x0). If the application requires that the ordering of values for a single header field name appearing in different header fields, it has to concatenate them using NULL byte (0x0) before passing them to this function.
HTTP/2 specification has requirement about header fields in the -request HEADERS. See the specification for more details.
+request HEADERS. See the specification for more details.This function creates copies of all name/value pairs in nva. It also lower-cases all names in nva.
If data_prd is not NULL, it provides data which will be sent -in subsequent DATA frames. In this case, a method that allows +in subsequent DATA frames. In this case, a method that allows request message bodies (http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9) must -be specified with :method key in nva (e.g. POST). This -function does not take ownership of the data_prd. The function -copies the members of the data_prd. If data_prd is NULL, -HEADERS have END_STREAM set. The stream_user_data is data +be specified with :method key in nva (e.g. POST). This +function does not take ownership of the data_prd. The function +copies the members of the data_prd. If data_prd is NULL, +HEADERS have END_STREAM set. The stream_user_data is data associated to the stream opened by this request and can be an arbitrary pointer, which can be retrieved later by nghttp2_session_get_stream_user_data().
@@ -2533,9 +2538,9 @@ prioritized one first and the HTTP/2 specification requires the stream ID must be strictly increasing, the stream ID of this request cannot be known until it is about to sent. To know the stream ID of the request, the application can use -nghttp2_session_callbacks.before_frame_send_callback. This -callback is called just before the frame is sent. For HEADERS -frame, the argument frame has the stream ID assigned. Also since +nghttp2_session_callbacks.before_frame_send_callback. +This callback is called just before the frame is sent. For HEADERS +frame, the argument frame has the stream ID assigned. Also since the stream is already opened, nghttp2_session_get_stream_user_data() can be used to get stream_user_data to identify which HEADERS we are processing. @@ -2544,6 +2549,8 @@ negative error codes:HTTP/2 specification has requirement about header fields in the -response HEADERS. See the specification for more details.
+response HEADERS. See the specification for more details.This function creates copies of all name/value pairs in nva. It also lower-cases all names in nva.
If data_prd is not NULL, it provides data which will be sent in subsequent DATA frames. This function does not take ownership -of the data_prd. The function copies the members of the +of the data_prd. The function copies the members of the data_prd. If data_prd is NULL, HEADERS will have END_STREAM flag set.
-This method can be used as normal HTTP response and push -response. When pushing a resource using this function, the -session must be configured using nghttp2_session_server_new() -or its variants and the target stream denoted by the stream_id -must be reserved using nghttp2_submit_push_promise().
+This method can be used as normal HTTP response and push response. +When pushing a resource using this function, the session must be +configured using nghttp2_session_server_new() or its variants and +the target stream denoted by the stream_id must be reserved using +nghttp2_submit_push_promise().
This function returns 0 if it succeeds, or one of the following negative error codes:
If the stream_id is -1, this frame is assumed as request (i.e., -request HEADERS frame which opens new stream). In this case, the -actual stream ID is assigned just before the frame is sent. For +request HEADERS frame which opens new stream). In this case, the +actual stream ID is assigned just before the frame is sent. For response, specify stream ID in stream_id.
The pri_spec is priority specification of this request. NULL means the default priority (priority group ID becomes its stream ID @@ -2604,25 +2611,27 @@ priority, use either nghttp2_priority_spec_dep_init(). If pri_spec is not NULL, this function will copy its data members.
The nva is an array of name/value pair nghttp2_nv with -nvlen elements. The value is opaque sequence of bytes and -therefore can contain NULL byte (0x0). If the application requires +nvlen elements. The value is opaque sequence of bytes and +therefore can contain NULL byte (0x0). If the application requires that the ordering of values for a single header field name appearing in different header fields, it has to concatenate them using NULL byte (0x0) before passing them to this function.
This function creates copies of all name/value pairs in nva. It also lower-cases all names in nva.
The stream_user_data is a pointer to an arbitrary data which is -associated to the stream this frame will open. Therefore it is only -used if this frame opens streams, in other words, it changes stream -state from idle or reserved to open.
+associated to the stream this frame will open. Therefore it is +only used if this frame opens streams, in other words, it changes +stream state from idle or reserved to open.This function is low-level in a sense that the application code can -specify flags directly. For usual HTTP request, +specify flags directly. For usual HTTP request, nghttp2_submit_request() is useful.
This function returns 0 if it succeeds, or one of the following negative error codes:
Submits one or more DATA frames to the stream stream_id. The -data to be sent are provided by data_prd. If flags contains +data to be sent are provided by data_prd. If flags contains NGHTTP2_FLAG_END_STREAM, the last DATA frame has END_STREAM -flag set. If flags contains NGHTTP2_FLAG_END_SEGMENT, the -last DATA frame has END_SEGMENT flag set.
-This function does not take ownership of the data_prd. The +flag set. If flags contains NGHTTP2_FLAG_END_SEGMENT, +the last DATA frame has END_SEGMENT flag set.
+This function does not take ownership of the data_prd. The function copies the members of the data_prd.
This function returns 0 if it succeeds, or one of the following negative error codes:
@@ -2664,7 +2673,8 @@ negative error codes:Stores local settings and submits SETTINGS frame. The iv is the -pointer to the array of nghttp2_settings_entry. The niv +
Stores local settings and submits SETTINGS frame. The iv is the +pointer to the array of nghttp2_settings_entry. The niv indicates the number of nghttp2_settings_entry.
The flags is currently ignored and should be NGHTTP2_FLAG_NONE.
-This function does not take ownership of the iv. This function +
This function does not take ownership of the iv. This function copies all the elements in the iv.
While updating individual stream’s local window size, if the window size becomes strictly larger than NGHTTP2_MAX_WINDOW_SIZE, @@ -2717,13 +2727,13 @@ without ACK flag set.
Submits PUSH_PROMISE frame.
-The flags is currently ignored. The library handles the +
The flags is currently ignored. The library handles the CONTINUATION frame internally and it correctly sets END_HEADERS to the last sequence of the PUSH_PROMISE or CONTINUATION frame.
The stream_id must be client initiated stream ID.
The nva is an array of name/value pair nghttp2_nv with -nvlen elements. The value is opaque sequence of bytes and -therefore can contain NULL byte (0x0). If the application requires +nvlen elements. The value is opaque sequence of bytes and +therefore can contain NULL byte (0x0). If the application requires that the ordering of values for a single header field name appearing in different header fields, it has to concatenate them using NULL byte (0x0) before passing them to this function.
@@ -2731,8 +2741,8 @@ using NULL byte (0x0) before passing them to this function. also lower-cases all names in nva.The promised_stream_user_data is a pointer to an arbitrary data which is associated to the promised stream this frame will open and -make it in reserved state. It is available using -nghttp2_session_get_stream_user_data(). The application can +make it in reserved state. It is available using +nghttp2_session_get_stream_user_data(). The application can access it in nghttp2_before_frame_send_callback and nghttp2_on_frame_send_callback of this frame.
Since the library reorders the frames and tries to send the highest @@ -2740,30 +2750,33 @@ prioritized one first and the HTTP/2 specification requires the stream ID must be strictly increasing, the promised stream ID cannot be known until it is about to sent. To know the promised stream ID, the application can use -nghttp2_session_callbacks.before_frame_send_callback. This -callback is called just before the frame is sent. For PUSH_PROMISE -frame, the argument frame has the promised stream ID assigned.
-The client side can use this function to send PUSH_PROMISE to the -server. But in normal HTTP usage, the server may treat it error.
+nghttp2_session_callbacks.before_frame_send_callback. +This callback is called just before the frame is sent. For +PUSH_PROMISE frame, the argument frame has the promised stream ID +assigned. +The client side is not allowed to use this function.
This function returns 0 if it succeeds, or one of the following negative error codes:
Submits PING frame. You don’t have to send PING back when you -received PING frame. The library automatically submits PING frame +
Submits PING frame. You don’t have to send PING back when you +received PING frame. The library automatically submits PING frame in this case.
The flags is currently ignored and should be NGHTTP2_FLAG_NONE.
If the opaque_data is non NULL, then it should point to the 8 bytes array of memory to specify opaque data to send with PING -frame. If the opaque_data is NULL, zero-cleared 8 bytes will +frame. If the opaque_data is NULL, zero-cleared 8 bytes will be sent as opaque data.
This function returns 0 if it succeeds, or one of the following negative error codes:
@@ -2783,7 +2796,7 @@ int nghttp2_submit_goaway(NULL.This function returns 0 if it succeeds, or one of the following negative error codes:
@@ -2802,7 +2815,7 @@ int nghttp2_submit_window_update(NGHTTP2_FLAG_NONE.If the window_size_increment is positive, the WINDOW_UPDATE with -that value as window_size_increment is queued. If the +that value as window_size_increment is queued. If the window_size_increment is larger than the received bytes from the remote endpoint, the local window size is increased by that difference.
@@ -2842,7 +2855,7 @@ negative error codes:Compares lhs->name with lhs->namelen bytes and rhs->name with -rhs->namelen bytes. Returns negative integer if lhs->name is found -to be less than rhs->name; or returns positive integer if lhs->name -is found to be greater than rhs->name; or returns 0 otherwise.
+Compares lhs->name of length lhs->namelen bytes and +rhs->name of length rhs->namelen bytes. Returns negative +integer if lhs->name is found to be less than rhs->name; or +returns positive integer if lhs->name is found to be greater +than rhs->name; or returns 0 otherwise.
A helper function for dealing with NPN in client side or ALPN in -server side. The in contains peer’s protocol list in preferable +server side. The in contains peer’s protocol list in preferable order. The format of in is length-prefixed and not null-terminated. For example, HTTP-draft-04/2.0 and http/1.1 stored in in like this:
@@ -2880,16 +2894,16 @@ null-terminated. For example, HTSelecting HTTP-draft-04/2.0 means that HTTP-draft-04/2.0 is -written into *out and its length (which is 17) is -assigned to *outlen.
+written into *out and its length (which is 17) is assigned to +*outlen.For ALPN, refer to -http://tools.ietf.org/html/draft-ietf-tls-applayerprotoneg-04
+https://tools.ietf.org/html/draft-ietf-tls-applayerprotoneg-05See http://technotes.googlecode.com/git/nextprotoneg.html for more details about NPN.
For NPN, to use this method you should do something like:
@@ -2916,7 +2930,8 @@ details about NPN.A helper function to set up a per request gzip stream to inflate data.
+A helper function to set up a per request gzip stream to inflate +data.
This function returns 0 if it succeeds, or one of the following negative error codes:
Inflates data in in with the length *inlen_ptr and stores the inflated data to out which has allocated size at least -*outlen_ptr. On return, *outlen_ptr is updated to represent +*outlen_ptr. On return, *outlen_ptr is updated to represent the number of data written in out. Similarly, *inlen_ptr is updated to represent the number of input bytes processed.
This function returns 0 if it succeeds, or one of the following @@ -2981,11 +2996,11 @@ negative error codes:
Returns a pointer to a nghttp2_info struct with version information about -the run-time library in use. The least_version argument can be set to a -24 bit numerical value for the least accepted version number and if the -condition is not met, this function will return a NULL. Pass in 0 to skip -the version checking.
+Returns a pointer to a nghttp2_info struct with version information +about the run-time library in use. The least_version argument +can be set to a 24 bit numerical value for the least accepted +version number and if the condition is not met, this function will +return a NULL. Pass in 0 to skip the version checking.
_Vf?lgS+z(XQt1Eb@$TSbQ!1##KdGn#$%@=3UoK zBTO5!O>HRjntz_O4)clPUha14fTu2un)n_nC8P+wNEHfs%ql4^Is&td1FthB+upVN zvEBY=RCK!feeEz5JZ#1VRTmd~+FoDjYsxIjReK-dRez(-D`i4n%kuEwdT7?sR5<9_ zX7cM%H!U@pf}_y8KTJRr*BUHANU(SP07A|5&dfK$S%@sx-30d62SX&O{ya$1jp;G^ zI0Uvzj~whA)gI8lSU7i#@kRLyUe6^^vHFPw5PMV?g-X-fYb%N0M(F6?rrRWg8=pgw zb6e6mIDgkUAIrnHB*Vi}Ga=75j_s zT<$Hsj)RWT7zp84fOp4-Cj-4LSE1`|>wiq#pzy}z6iUAMDb|73+31FLQO-ZB@7QN* zQAjUVc@Kdvo?MFi7P8E The src directory contains HTTP/2 client, server and proxy programs. nghttp - client¶
-nghttp is a HTTP/2 client. It can connect to the HTTP/2 server +
nghttp is a HTTP/2 client. It can connect to the HTTP/2 server with prior knowledge, HTTP Upgrade and NPN/ALPN TLS extension.
-It has verbose output mode for framing information. Here is sample +
It has verbose output mode for framing information. Here is sample output from nghttp client:
$ src/nghttp -nv https://localhost:8443 [ 0.004][NPN] server offers: @@ -417,13 +417,13 @@ Upgrade: h2c-11nghttpd - server¶
nghttpd is a multi-threaded static web server.
-By default, it uses SSL/TLS connection. Use --no-tls option to +
By default, it uses SSL/TLS connection. Use --no-tls option to disable it.
nghttpd only accepts the HTTP/2 connection via NPN/ALPN or direct -HTTP/2 connection. No HTTP Upgrade is supported.
+HTTP/2 connection. No HTTP Upgrade is supported.-p option allows users to configure server push.
Just like nghttp, it has verbose output mode for framing -information. Here is sample output from nghttpd server:
+information. Here is sample output from nghttpd server:$ src/nghttpd --no-tls -v 8080 IPv4: listen on port 8080 IPv6: listen on port 8080 @@ -517,18 +517,18 @@ IPv6: listen on port 8080 -The interesting mode at the moment is the default mode. It works like +
The interesting mode at the moment is the default mode. It works like a reverse proxy and listens for h2-11, SPDY and HTTP/1.1 and can be deployed SSL/TLS terminator for existing web server.
The default mode, --http2-proxy and --http2-bridge modes use -SSL/TLS in the frontend connection by default. To disable SSL/TLS, use ---frontend-no-tls option. If that option is used, SPDY is disabled -in the frontend and incoming HTTP/1.1 connection can be upgraded to -HTTP/2 through HTTP Upgrade.
+SSL/TLS in the frontend connection by default. To disable SSL/TLS, +use --frontend-no-tls option. If that option is used, SPDY is +disabled in the frontend and incoming HTTP/1.1 connection can be +upgraded to HTTP/2 through HTTP Upgrade.The --http2-bridge, --client and --client-proxy modes use -SSL/TLS in the backend connection by deafult. To disable SSL/TLS, use +SSL/TLS in the backend connection by deafult. To disable SSL/TLS, use --backend-no-tls option.
-nghttpx supports configuration file. See --conf option and +
nghttpx supports configuration file. See --conf option and sample configuration file nghttpx.conf.sample.
nghttpx does not support server push.
In the default mode, (without any of --http2-proxy, @@ -547,7 +547,7 @@ SPDY proxy):
The Client in the above is needs to be configured to use nghttpx as secure proxy.
At the time of this writing, Chrome is the only browser which supports -secure proxy. The one way to configure Chrome to use secure proxy is +secure proxy. The one way to configure Chrome to use secure proxy is create proxy.pac script like this:
function FindProxyForURL(url, host) { return "HTTPS SERVERADDR:PORT"; @@ -586,11 +586,11 @@ the backend is HTTP/2 Web server:The frontend HTTP/1.1 connection can be upgraded to HTTP/2 through HTTP Upgrade.
For the operation modes which talk to the backend in HTTP/2 over -SSL/TLS, the backend connections can be tunneled through HTTP -proxy. The proxy is specified using --backend-http-proxy-uri -option. The following figure illustrates the example of ---http2-bridge and --backend-http-proxy-uri options to talk to -the outside HTTP/2 proxy through HTTP proxy:
+SSL/TLS, the backend connections can be tunneled through HTTP proxy. +The proxy is specified using --backend-http-proxy-uri option. The +following figure illustrates the example of --http2-bridge and +--backend-http-proxy-uri options to talk to the outside HTTP/2 +proxy through HTTP proxy:Client <-- (HTTP/2, SPDY, HTTP/1.1) --> nghttpx <-- (HTTP/2) -- --===================---> HTTP/2 Proxy @@ -603,9 +603,9 @@ the outside HTTP/2 proxy through HTTP proxy:Benchmarking tool¶
The h2load program is a benchmarking tool for HTTP/2 and SPDY. The SPDY support is enabled if the program was built with spdylay -library. The UI of h2load is heavily inspired by -weighttp (https://github.com/lighttpd/weighttp). The typical usage -is as follows:
+library. The UI of h2load is heavily inspired by weighttp +(https://github.com/lighttpd/weighttp). The typical usage is as +follows:$ src/h2load -n1000 -c10 -m10 https://127.0.0.1:8443/ starting benchmark... progress: 10% done @@ -631,28 +631,28 @@ With -t option,Warning
-Don’t use this tool against publicly available servers. That -is considered a DOS attack. Please only use against your private +
Don’t use this tool against publicly available servers. That is +considered a DOS attack. Please only use against your private servers.
HPACK tools¶
-The src directory contains HPACK tools. The deflatehd is a -command-line header compression tool. The inflatehd is +
The src directory contains HPACK tools. The deflatehd is a +command-line header compression tool. The inflatehd is command-line header decompression tool. Both tools read input from -stdin and write output to stdout. The errors are written to -stderr. They take JSON as input and output. We use the same JSON data -format used in https://github.com/Jxck/hpack-test-case
+stdin and write output to stdout. The errors are written to stderr. +They take JSON as input and output. We use (mostly) same JSON data +format described at https://github.com/http2jp/hpack-test-casedeflatehd - header compressor¶
The deflatehd reads JSON data or HTTP/1-style header fields from stdin and outputs compressed header block in JSON.
-For the JSON input, the root JSON object must include cases -key. Its value has to include the sequence of input header set. They -share the same compression context and are processed in the order they +
For the JSON input, the root JSON object must include cases key. +Its value has to include the sequence of input header set. They share +the same compression context and are processed in the order they appear. Each item in the sequence is a JSON object and it must -include headers key. Its value is an array of a JSON object , +include headers key. Its value is an array of a JSON object, which includes exactly one name/value pair.
Example:
{ @@ -675,7 +675,7 @@ which includes exactly one name/value pair.
With -t option, the program can accept more familiar HTTP/1 style -header field block. Each header set is delimited by empty line:
+header field block. Each header set is delimited by empty line:Example:
-:method: GET :scheme: https @@ -685,7 +685,7 @@ header field block. Each header set is delimited by empty line: user-agent: nghttp2The output is JSON object. It should include cases key and its +
The output is JSON object. It should include cases key and its value is an array of JSON object, which has at least following keys:
- seq
@@ -766,18 +766,15 @@ value is an array of JSON object, which has at least following keys: deflatehd.With -d option, the extra header_table key is added and its associated value includes the state of dynamic header table after the -corresponding header set was processed. The value includes at least the -following keys:
+corresponding header set was processed. The value includes at least +the following keys:
- entries
-- The entry in the header table. If referenced is true, it -is in the reference set. The size includes the overhead (32 -bytes). The index corresponds to the index of header table. +
- The entry in the header table. If referenced is true, it +is in the reference set. The size includes the overhead (32 +bytes). The index corresponds to the index of header table. The name is the header field name and the value is the -header field value. They may be displayed as **DEALLOCATED**, -which means that the memory for that string is freed and not -available. This will happen when the specifying smaller value in --S than -s.
+header field value.- size
- The sum of the spaces entries occupied, this includes the entry overhead.
@@ -787,9 +784,9 @@ entry overhead.- The sum of the spaces entries occupied within max_deflate_size.
- max_deflate_size
-- The maximum header table size encoder uses. This can be smaller -than max_size. In this case, encoder only uses up to first -max_deflate_size buffer. Since the header table size is still +
- The maximum header table size encoder uses. This can be smaller +than max_size. In this case, encoder only uses up to first +max_deflate_size buffer. Since the header table size is still max_size, the encoder has to keep track of entries ouside the max_deflate_size but inside the max_size and make sure that they are no longer referenced.
@@ -951,11 +948,11 @@ that they are no longer referenced.inflatehd - header decompressor¶
The inflatehd reads JSON data from stdin and outputs decompressed name/value pairs in JSON.
-The root JSON object must include cases key. Its value has to -include the sequence of compressed header block. They share the same -compression context and are processed in the order they appear. Each +
The root JSON object must include cases key. Its value has to +include the sequence of compressed header block. They share the same +compression context and are processed in the order they appear. Each item in the sequence is a JSON object and it must have at least -wire key. Its value is a compressed header block in hex string.
+wire key. Its value is a compressed header block in hex string.Example:
-{ "cases": @@ -966,7 +963,7 @@ item in the sequence is a JSON object and it must have at least }The output is JSON object. It should include cases key and its +
The output is JSON object. It should include cases key and its value is an array of JSON object, which has at least following keys:
- seq
@@ -1036,18 +1033,18 @@ block. inflatehd.With -d option, the extra header_table key is added and its associated value includes the state of dynamic header table after the -corresponding header set was processed. The format is the same as +corresponding header set was processed. The format is the same as deflatehd.
Python bindings¶
-This python directory contains nghttp2 Python bindings. The -bindings currently provide HPACK compressor and decompressor -classes and HTTP/2 server.
+This python directory contains nghttp2 Python bindings. The +bindings currently provide HPACK compressor and decompressor classes +and HTTP/2 server.
The extension module is called nghttp2.
make will build the bindings and target Python version is -determined by configure script. If the detected Python version is not +determined by configure script. If the detected Python version is not what you expect, specify a path to Python executable in PYTHON variable as an argument to configure script (e.g., ./configure PYTHON=/usr/bin/python3.3).
@@ -1068,21 +1065,21 @@ and decompressor in Python:The nghttp2.HTTP2Server class builds on top of the asyncio event -loop. On construction, RequestHandlerClass must be given, which must -be a subclass of nghttp2.BaseRequestHandler class.
-The BaseRequestHandler class is used to handle the HTTP/2 -stream. By default, it does nothing. It must be subclassed to -handle each event callback method.
-The first callback method invoked is on_headers(). It is called +loop. On construction, RequestHandlerClass must be given, which +must be a subclass of nghttp2.BaseRequestHandler class.
+The BaseRequestHandler class is used to handle the HTTP/2 stream. +By default, it does nothing. It must be subclassed to handle each +event callback method.
+The first callback method invoked is on_headers(). It is called when HEADERS frame, which includes request header fields, has arrived.
If request has request body, on_data(data) is invoked for each chunk of received data.
When whole request is received, on_request_done() is invoked.
When stream is closed, on_close(error_code) is called.
-The application can send response using send_response() method. It -can be used in on_headers(), on_data() or +
The application can send response using send_response() method. +It can be used in on_headers(), on_data() or on_request_done().
-The application can push resource using push() method. It must be +
The application can push resource using push() method. It must be used before send_response() call.
The following instance variables are available:
@@ -1092,9 +1089,10 @@ client’s address.
- stream_id
- Stream ID of this stream.
- scheme
-- Scheme of the request URI. This is a value of :scheme header field.
+- Scheme of the request URI. This is a value of :scheme header +field.
- method
-- Method of this stream. This is a value of :method header field.
+- Method of this stream. This is a value of :method header field.
- host
- This is a value of :authority or host header field.
- path
diff --git a/searchindex.js b/searchindex.js index dc5036db..ed8d79ac 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({envversion:42,terms:{my_obj:[3,6],nghttp2_io_flag:6,nghttp2_cancel:[3,6],prefix:[2,6,3],nghttp2_session_get_stream_effective_local_window_s:[3,6],op_al:4,"const":[2,6,5,3],nghttp2_submit_:[2,5],"0x20":[3,6],under:[3,6,4],nghttp2_priority_typ:[3,6],bufferevent_getfd:5,spec:[3,6],merchant:[2,6,5,1],digit:5,"void":[2,6,5,3],bufferevent_ssl:[2,5],initialize_nghttp2_setup:[2,5],verif:5,servic:[2,4],warnx:[2,5],on_stream_close_callback:[2,6,5,3],direct:4,ssl_op_no_session_resumption_on_renegoti:[2,5],neg:[3,6],nghttp2_err_insuff_bufs:[3,6],"new":[2,6,4,5,3],tatsuhiro:[0,1,2,4,5,6],nghttp2_session_resume_data:[3,6],ipproto_tcp:[2,5],abov:[2,1,3,4,5,6],initialize_app_context:2,here:[2,6,4,5,3],met:[2,6,5,3],"4xx":4,path:[2,4,5],settings_timeout:[3,6],interpret:[3,6],nextprotoneg:[3,6],sslv23_server_method:2,permit:[2,6,5,1],nghttp2_submit_prior:[3,6],aka:[3,6,4],nghttp2_err_gzip:[3,6],nghttp2_frame:[2,6,5,3],bufferevent_ssl_connect:5,substr:2,bev_event_error:[2,5],printabl:5,total:[3,6,4],unit:4,describ:[2,6,5,3],would:[3,6],call:[2,6,4,5,3],asset:4,recommend:4,nghttp2_on_invalid_frame_recv_callback:[3,6],nghttp2_version:[3,6,1],until:[3,6],relat:[2,5],nghttp2_cleartext_proto_version_id_len:[3,6],warn:2,nghttp2_option_set_peer_max_concurrent_stream:[3,6],ssl_shutdown:[2,5],herebi:[2,6,5,1],unpack:[3,6],must:[2,6,4,5,3],word:[3,6],err:[2,5],exit_failur:[2,5],setup:[2,5],work:[2,4],lev_opt_close_on_fre:2,nghttp2_flag_ack:[3,6],root:[2,4],syn_repli:[3,6],defer:[2,6,5,3],give:[3,6,4],indic:[2,6,5,3],want:[2,6,5,3],select_padding_callback:[3,6],unsign:[2,6,5,3],end:[2,6,5,3],datalen:[2,5],how:[3,6,5],nghttp2_err_fat:[3,6],hop:[3,6],negoti:4,nghttp2_frame_typ:[3,6],updat:[3,6],nghttp2_msg_more:6,after:[2,6,4,5,3],nghttp2_option:[3,6],badli:[3,6],demonstr:5,request_path:2,third:[2,6,5,3],opaqu:[3,6],bootstrap:4,exclud:[3,6],perform:[2,6,4,3],exclus:[3,6],first:[2,6,4,5,3],order:[2,6,4,3],oper:[3,6,4],frontend:4,over:[2,6,4,5,3],becaus:[2,6,5,3],eagain:[2,5],vari:4,fit:[2,6,5,1],nghttp2_session_get_stream_remote_window_s:[3,6],fwrite:5,deflate_s:4,hidden:[3,6],them:[2,6,5,3],thei:[2,6,4,5,3],fragment:4,safe:2,"break":[2,6,5,3],promis:[3,6],choic:[3,6],ai_addr:2,timeout:[2,5],each:[2,6,4,5,3],debug:[3,6,5],side:[2,6,4,3],mean:[3,6,4,5],slen:2,protocol_error:[3,6],nghttp2_select_padding_callback:[3,6],http2_stream_data:[2,5],nghttp2_session_server_new2:[3,6],network:[2,5],content:[0,4,2],end_stream:[3,6,4],situat:[2,5],free:[2,6,5,1,3],nghttp2_priority_type_group:[3,6],spdy:[3,6,4],openssl:[2,4,5],nghttp2_version_num:[3,6,1],sigact:[2,5],rang:[3,6,4],restrict:[2,6,5,1],nghttp2_protocol_error:[3,6],alreadi:[2,6,5,3],payload:[3,6],top:4,nghttp2_max_header_table_s:[3,6],too:[2,6,3],similarli:[3,6],sigpip:[2,5],listen:[2,4],tool:[3,6],lighttpd:4,travers:2,awaaagqeaad__w:4,target:[3,6,4],provid:[2,1,3,4,5,6],project:[0,4],matter:[3,6],nghttp2_continu:[3,6],increment:[3,6],nghttp2_option_set_no_auto_stream_window_upd:[3,6],nghttp2_session_recv:[3,6],nghttp2_session_get_stream_effective_recv_data_length:[3,6],transmit:[3,6,5],sig_ign:[2,5],shall:[2,6,5,1],object:[2,6,4,5,3],writecb:[2,5],nghttp2_settings_timeout:[3,6],bytesio:4,simplic:5,don:[2,6,4,3],hex_to_uint:2,doc:4,flow:[3,6],doe:[2,6,4,5,3],opaque_data:[3,6,4],sum:4,on_invalid_frame_recv_callback:[3,6],bev_event_eof:[2,5],pkg:4,identifi:[2,6,5,3],bufferevent_setcb:[2,5],involv:[3,6],explain:5,configur:[3,6,4],apach:4,nghttp2_err_invalid_stream_id:[3,6],busi:[2,5],nghttp2_flag_pad_high:[3,6],nghttp2_cleartext_proto_version_id:[3,6],nghttp2_err_proto:[3,6],authoritylen:5,stop:[2,5],end_head:[3,6,4],evbuffer_drain:[2,5],nghttp2_no_error:[3,6,5],bar:4,ai_pass:2,ietf:[0,6,4,3],baz:4,push_promis:[2,6,3],method:[2,6,4,5,3],nghttp2_strerror:[2,6,5,3],nghttp2_gzip_inflate_del:[3,6],bufferevent_ssl_accept:2,serve_forev:4,"0x40":[3,6],nul:[3,6],result:[2,5],respons:[2,6,4,5,3],fail:[3,6,4],key_fil:2,subject:[2,6,5,1],said:[3,6],figur:4,bev_opt_close_on_fre:[2,5],accord:[3,6],extens:[4,5],advertis:[2,5],setsockopt:[2,5],bev:[2,5],against:[3,6,4],ssl_ctx_use_certificate_chain_fil:2,header_t:4,logic:2,browser:4,com:[0,6,4,3],int32_t:[2,6,5,3],assum:[3,6],option_ptr:[3,6],duplic:[3,6],reciev:5,liabil:[2,6,5,1],evbuffer_get_length:[2,5],chrome:4,max_deflate_s:4,been:[2,6,5,3],much:[2,6,3],interest:[2,4,5],basic:4,tini:5,life:2,regul:[2,5],ani:[2,1,3,4,5,6],ewouldblock:[2,5],load_cert_chain:4,ssl_op_no_compress:[2,5],nghttp2_settings_initial_window_s:[3,6],properti:[2,5],publicli:4,nghttp2_on_begin_headers_callback:[3,6,5],bev_event_timeout:[2,5],bufferevent_socket_connect_hostnam:5,nghttp2_inadequate_secur:[3,6],nghttp2_set:[3,6],promised_stream_id:[3,6],conf:4,sever:[2,6,4,5,3],on_data:4,receiv:[2,6,4,5,3],make:[2,6,4,3],transpar:[3,6],headlen:[3,6],split:[3,6],version_str:[3,6],nghttp2_on_stream_close_callback:[3,6,5],complet:[2,6,5,3],start_listen:2,bufferevent_openssl_get_ssl:[2,5],nghttp2_err_deferred_data_exist:[3,6],ssl_ctx_new:[2,5],zlib1g:4,ownership:[3,6],niv:[3,6,4],thu:[2,6,4,3],nghttp2_session_get_effective_local_window_s:[3,6],origin_len:[3,6],client:[3,6],thi:[0,1,2,3,4,5,6],endif:[2,6,1],gzip:[3,6,4],left:[3,6],protocol:[0,2,3,4,5,6],just:[2,6,4,5,3],"0x01":[3,6,4],initiate_connect:5,ifdef:[2,6],yet:[3,6],previous:[3,6],easi:4,els:[2,5],applic:[2,6,4,5,3],nghttp2_nv_flag:[3,6],initialize_nghttp2_sess:[2,5],specif:[2,6,5,3],arbitrari:[3,6],http2_session_data:[2,5],client_addr:2,manual:4,html:[0,6,4,3,2],tcp_nodelai:[2,5],unnecessari:[3,6,5],underli:[2,5],www:[3,6],right:[2,6,5,1],deal:[2,6,5,1,3],intern:[3,6],successfulli:[2,6,5,3],transmiss:[2,6,5,3],requesthandlerclass:4,ni_numerichost:2,bottom:[3,6],nghttp2_data_source_read_callback:[3,6],subclass:4,track:[2,4,5],condit:[2,6,5,1,3],foo:4,localhost:4,core:4,sensibl:[3,6],repositori:[2,5],peer:[2,6,5,3],post:[3,6,4],inlen_ptr:[3,6],nghttp2_submit_data:[3,6],nghttp2_settings_max_concurrent_stream:[2,6,5,3],produc:[3,6],evbuff:[2,5],encod:[2,6,4,3],down:[2,5],pair:[2,6,4,5,3],errx:[2,5],git:[3,6],session_send:[2,5],wai:[3,6,4],support:[2,6,4,5,3],verbos:4,overhead:4,fork:4,head:[2,6,3],form:[3,6,4],offer:4,taken:[3,6],heap:4,"true":4,reset:5,ssl_ctx_free:[2,5],maximum:[3,6,4],tell:[2,6,5,3],deafult:4,autoconf:4,emit:[2,6,5,3],nghttp2_initial_window_s:[3,6],featur:4,httpbi:[0,6,4,3],"abstract":[2,5],unreleas:4,exist:[3,6,4],protocol_id_len:[3,6],ai_flag:2,ends_with:2,check:[2,6,5,3],delete_http2_session_data:[2,5],when:[2,6,4,5,3],role:[2,6,5,3],test:[],send_client_connection_head:5,unlimit:[3,6],intend:2,af_unspec:[2,5],nghttp2_option_new:[3,6],nghttp2_max_window_s:[3,6],technot:[3,6],notic:[2,6,5,1],max_siz:4,evconnlistener_new_bind:2,longer:[2,4],nghttp2_check_header_nam:[3,6],print_head:5,time:[2,6,4,3],push:[3,6,4],skip:[3,6],evbuffer_remov:2,nghttp2_on_frame_recv_callback:[3,6,5],nghttp2ver_h:1,decid:[3,6],create_ssl_ctx:[2,5],depend:[2,6,4,5,3],readabl:5,sourc:[0,6,5,3,2],string:[2,6,4,5,3],nghttp2_settings_enable_push:[3,6],host_len:[3,6],level:[2,6,3],did:[3,6,5],item:4,settings_id:[3,6],conhead:2,upper:[3,6],sign:4,port:[2,6,4,5,3],data_flag:[2,6,3],appear:[3,6,4],event_base_fre:[2,5],current:[2,6,4,3],nghttp2_err_data_exist:[3,6],gener:[3,6,4],pad_high:[3,6],address:4,nghttp2_submit_rst_stream:[2,6,3],connect_error:[3,6],queue:[2,6,5,3],behav:[3,6],ourselv:[2,5],nghttp2_err_goaway_already_s:[3,6],regardless:[3,6],extra:[4,5],modul:4,prefer:[3,6],instal:4,hdinflat:4,memori:[2,6,4,5,3],handler:4,nghttp2_altsvc:[3,6],strdup:2,prev:2,reorder:[3,6,5],rst_stream:[2,6,5,3],ctype:2,nghttp2_submit_window_upd:[3,6],prepar:[3,6],stream_user_data:[3,6,5],cat:[2,6,5,3],descriptor:[2,6,3],can:[2,6,4,5,3],http2:[0,6,4,3],purpos:[2,6,5,1],uf_path:5,claim:[2,6,5,1],stream:[2,6,4,5,3],agent:4,critic:[3,6],abort:[3,6],nghttp2_header:[2,6,5,3],occur:[3,6],alwai:[2,6,3],multipl:[2,6,4,5,3],charset:4,ping:[3,6],write:[2,4,5],sslcontext:4,max:[3,6,5],intrus:2,mai:[2,6,4,5,3],acceptcb:2,data:[2,6,4,5,3],autotool:4,stdin:4,inform:[2,6,4,5,3],"switch":[2,4,5],combin:[3,6],talk:[2,4],nghttp2_err_stream_shut_wr:[3,6],size_t:[2,6,5,3],nghttp2_err_unsupported_vers:[3,6],still:[2,6,4,3],nghttp2_settings_entri:[2,6,5,3],dynam:4,entiti:2,group:[3,6],precondit:[3,6],nghttp2_priority_spec:[3,6],tort:[2,6,5,1],window:[3,6],main:[2,5],non:[2,6,4,5,3],recal:5,env:4,"5xx":4,nghttp2_submit_head:[3,6],nghttp2_on_header_callback:[2,6,5,3],"0x000400":1,name:[2,6,4,5,3],version_num:[3,6],config:4,no_error:4,drop:[2,6,5,3],millisec:4,replac:[3,6],individu:[3,6],continu:[2,6,5,3],event_base_loop:[2,5],turoti:5,happen:[2,4,5],ai_addrlen:2,libjemalloc:4,space:[3,6,4],output_length:4,earlier:[2,5],event_base_new:[2,5],ssl_filetype_pem:2,argv:[2,5],org:[0,6,4,3],"byte":[2,6,4,5,3],argc:[2,5],care:[3,6],nghttp2_opt_no_auto_connection_window_upd:[3,6],nghttp2ver:[3,6],"88448504252dd5918485":4,befor:[2,6,4,5,3],thing:[2,6,5,3],nghttp2_flag_non:[2,6,5,3],place:[3,6],evdns_base_new:5,origin:[3,6],directli:[2,6,5,3],onc:[3,6],arrai:[3,6,4,5],yourself:4,nghttp2_is_fat:[3,6],nghttp2_flow_control_error:[3,6],submit:[3,6,5],on_frame_recv_callback:[2,6,5,3],open:[2,6,4,3],size:[2,6,4,3],avail:[2,6,4,5,3],given:[3,6,4],necessarili:[3,6],draft:[0,6,4,3],internal_error:[3,6],conveni:[3,6],ssl_ctx:[2,6,5,3],copi:[2,6,5,1,3],specifi:[2,6,4,5,3],on_head:4,holder:[2,6,5,1],than:[2,6,4,3],serv:2,wide:2,nghttp2_session_get_outbound_queue_s:[3,6],were:[2,5],posit:[3,6],read_callback:[2,6,3],nghttp2_min_weight:[3,6],enhance_your_calm:[3,6],sai:[3,6],pri:6,argument:[2,6,4,5,3],deliv:[3,6],sat:4,bitwis:[3,6],event_bas:[2,5],destroi:[2,5],payloadlen:[3,6],note:[2,6,4,5,3],take:[2,6,4,5,3],noth:[3,6,4],begin:5,sure:[2,4,5],normal:[3,6],buffer:[2,6,4,5,3],compress:[0,4],nghttp2_hcat_request:[2,6,5,3],pathlen:5,sublicens:[2,6,5,1],nghttp2_before_frame_send_callback:[3,6,5],http2_select:[3,6],later:[2,6,5,3],gracefulli:5,show:[4,5],unprocess:[2,5],concurr:[2,6,4,3],permiss:[2,6,5,1],threshold:2,onli:[2,6,4,5,3],end_seg:[3,6],state:[2,6,4,3],"short":[2,5],"4e5535a027780":4,priority_group:[3,6],overwritten:[3,6],hddeflat:4,variou:[3,6],get:[2,6,4,5,3],outlen:[3,6,5],ssl:[2,6,4,5,3],cannot:[2,6,3],requir:[3,6],nghttp2_set_stream_user_data:2,nghttp2_frame_size_error:[3,6],aris:[2,6,5,1],reserv:[3,6],op_no_sslv2:4,nghttp2_priority_group:[3,6],detect:[3,6,4],weighttp:4,"import":4,fcntl:2,pipefd:2,evdns_bas:5,submit_request:5,region:[3,6],contract:[2,6,5,1],tutori:[],mani:[3,6],nghttp2_data_provid:[2,6,3],inspir:4,nghttp2_err_too_many_inflight_set:[3,6],cancel:[3,6],damag:[2,6,5,1],http2server:4,header_table_s:4,nghttp2_settings_max:[3,6],netdb:2,nghttp2_on_unknown_frame_recv_callback:[3,6],those:[2,6,5,3],"case":[2,6,4,5,3],hdr:[2,4,5],invok:[2,6,4,5,3],invoc:[2,6,3],valuelen:[2,6,5,3],on_data_chunk_recv_callback:[3,6,5],stdout:[4,5],ascii:[3,6],develop:[],author:[2,6,4,5,1],bev_opt_defer_callback:[2,5],alphabet:[3,6],same:[2,6,4,5,3],ssl_library_init:[2,5],binari:5,pac:4,pad:[3,6],document:[6,1],finish:[2,6,4,5,3],decompress:[3,6,4],handshake_leftlen:2,extern:6,postpon:[3,6],ai_next:2,without:[2,1,3,4,5,6],nghttp2_push_promis:[3,6],on_request_don:4,event2:[2,5],nghttp2_err_def:[3,6],nghttp2_submit_set:[2,6,5,3],execut:4,multiplex:2,hint:2,except:[3,6],nghttp2_flag_priority_depend:[3,6],identif:[3,6],nghttp2_select_next_protocol:[3,6,5],real:5,unistd:[2,5],create_http2_session_data:[2,5],nghttp2_version_ag:[3,6],arriv:4,nghttp2_check_header_valu:[3,6],traffic:4,next_proto_cb:2,integ:[3,6],server:[3,6],either:[2,6,3],output:[2,6,4,5,3],manag:[2,6,3],stream_clos:[3,6],protocol_sslv23:4,ssl_ctx_set_next_protos_advertised_cb:2,handshak:[2,5],nonzero:[2,6,3],easili:5,"2xx":4,exit:[2,5],data_ptr:[3,6],freed:4,base64url:[3,6],nghttp2_session_server_new:[2,6,3],found:[2,6,3],getnameinfo:2,src:4,deflat:[3,6,4],ack:[3,6,4],dnsbase:5,settings_payload:[3,6],act:[2,5],routin:[2,5],consid:4,least_vers:[3,6],error_repli:2,your:4,b2a_hex:4,nghttp2_hcat_respons:[3,6,5],hex:[2,4],start:[2,6,4,5,3],nghttp2_err_stream_clos:[3,6],ipv4:4,lot:[3,6],ipv6:4,strictli:[3,6],next_proto_list:2,nghttp2_proto_version_id_len:[2,6,3],tupl:4,nghttp2_err_invalid_st:[3,6],satur:4,nghttp2_flag_end_seg:[3,6],possibl:[2,6,5,3],"default":[2,6,4,3],applayerprotoneg:[3,6],hpack:[],err_get_error:[2,5],expect:4,creat:[2,6,4,5,3],mainli:[3,6],decreas:[3,6],file:[2,1,3,4,5,6],nghttp2_err_invalid_header_block:[3,6],fill:[2,6,3],denot:[3,6,5],functypedef:6,googl:4,kbyte:4,field:[2,6,4,5,3],valid:[3,6,4],nghttp2_prioriti:[3,6],ignor:[2,6,3],you:[2,6,4,5,3],sequenc:[2,6,4,5,3],promised_stream_user_data:[3,6],reduc:[3,6],cunit:4,directori:[2,4,5],mask:[3,6],represent:[3,1],all:[2,6,5,1,3],on_unknown_frame_recv_callback:[3,6],illustr:4,nghttp2_err_start_stream_not_allow:[3,6],follow:[2,1,3,4,5,6],alt:4,ptr:[2,6,5,3],app_cont:2,uint8_t:[2,6,5,3],readcb:[2,5],program:[],bufferevent_writ:[2,5],uf_queri:5,fals:4,pad_low:[3,6],settings_header_table_s:[3,6],nghttp2_client_connection_header_len:[3,6],failur:[3,6],veri:[3,6,5],"__cplusplu":6,list:[2,6,3],nghttp2_headers_categori:[3,6],adjust:[3,6,4],stderr:[2,4,5],small:[3,6],session_recv:2,zero:[3,6],pass:[3,6,5],further:[2,6,5,3],what:[3,6,4],sub:2,sun:4,section:[3,6],delet:5,version:3,"public":[3,6],libjansson:4,padlen:[3,6,4],percentage_of_original_s:4,excess:2,modifi:[2,6,4,5,1],valu:[2,6,4,5,3],search:2,ai_addrconfig:2,nghttp2_err_push_dis:[3,6],on_clos:4,prior:4,amount:[2,6,5,3],action:[2,6,5,1,3],via:[2,6,4,5,3],primit:5,put:[3,6],famili:[2,5],establish:[2,5],select:[3,6,5],regist:2,libev:[],bev_event_connect:[2,5],minor:[3,1],more:[2,6,4,5,3],tsujikawa:[2,6,5,1],nghttp2_settings_header_table_s:[3,6],flag:[2,6,4,5,3],particular:[2,6,5,1,3],known:[3,6],nghttp2_err_wouldblock:[2,6,5,3],none:4,endpoint:[3,6,4],dep:[3,6],dev:[4,1],remain:[2,6,5,3],def:4,share:[3,6,4],accept:[2,6,4,3],minimum:[2,6,3],ssl_op_al:[2,5],nghttp2_submit_altsvc:[3,6],create_ssl:[2,5],strlen:[2,5],huge:[2,5],netinet:[2,5],secur:4,anoth:[3,6],serveraddr:4,reject:[3,6],sec9:[3,6],simpl:[2,6,5,3],css:4,resourc:3,referenc:4,variant:[3,6],spdylai:4,nghttp2_client_connection_preface_len:[2,6,5,3],associ:[2,1,3,4,5,6],github:[0,4],caus:[3,6],callback:[2,6,4,5,3],nghttp2_nv_flag_non:[2,6,5,3],alpn:[3,6,4],authroiti:5,max_ag:[3,6],hypertext:[0,4],libcunit1:4,through:[2,4],paramet:[3,6,5],style:4,nghttp2_hcat_push_respons:[3,6],pend:[2,6,5,3],nghttp2_err_eof:[3,6],progoram:5,nghttp2_nv_flag_no_index:[3,6],tri:[3,6],"return":[2,6,4,5,3],check_path:2,synopsi:[2,5],nghttp2_initial_max_concurrent_stream:[3,6],readlen:2,nghttp2_err_callback_failur:[2,6,5,3],tear:[2,5],achiev:[2,6,3],fulli:[2,6,3],trailer:[3,6],nghttp2_on_frame_send_callback:[3,6],weight:[3,6],monoton:5,realli:5,connect:[2,1,3,4,5,6],field_set:5,event:[2,6,4,5,1],app_ctx:2,ftw:4,publish:[2,6,5,1],primari:[3,6],etag:4,print:[4,5],on_frame_not_send_callback:[3,6],proxi:[],advanc:[3,6],nghttp2_internal_error:[2,6,3],effect:[3,6],reason:[2,6,3],base:[2,4,5],ask:[3,6],nghttp2_session_mem_recv:[2,6,5,3],nghttp2_flag:[3,6],recv:4,prefac:[2,6,5,3],thread:[2,4],omit:[3,6,5],nghttp2_err_invalid_stream_st:[3,6],assign:[2,6,5,3],feed:[2,5],major:[3,1],notifi:2,prevent:[3,6],number:[2,6,1,3],done:[2,4,5],construct:[3,6,4],stdlib:6,differ:[3,6],script:4,data_prd:[2,6,3],nghttp2_session_get_stream_user_data:[2,6,5,3],least:[3,6,4],scheme:[4,5],store:[2,6,5,3],input_length:4,memset:[2,5],option:[2,6,4,5,3],memcmp:2,nghttp2_client_connection_head:[3,6],pars:5,window_upd:[3,6],doubli:2,remot:[2,6,5,3],remov:[2,6,3],bridg:4,consumpt:[2,5],nghttp2_error:[3,6],window_size_incr:[3,6],lib_error_cod:[3,6],arrlen:[2,5],packag:4,"null":[2,6,5,3],syn_stream:[3,6],sell:[2,6,5,1],outbound:[3,6],built:4,equival:[3,6],afram:[3,6],also:[2,6,5,3],build:[],nghttp2_err_frame_size_error:[3,6],make_nv:[2,5],distribut:[2,6,5,1],reacb:5,reach:[3,6],chart:[3,6],most:[3,6],nghttp2_priority_dep:[3,6],charg:[2,6,5,1],addr:2,"01881f3468e5891afcbf83868a3d856659c62e3f":4,o_rdonli:2,frame_size_error:[3,6],h2c:[6,4],pri_spec:[3,6],microsec:4,nghttp2_submit_push_promis:[3,6],copyright:[2,6,5,1],refused_stream:[3,6],pri_typ:[3,6],nghttp2_opt_no_auto_stream_window_upd:[3,6],queu:[2,6,5,3],express:[2,6,5,1],kind:[2,6,5,1,3],nativ:4,"3xx":4,liabl:[2,6,5,1],before_frame_send_callback:[3,6,5],retreiv:5,crt:[2,4],h2load:4,certif:[2,4,5],set:[2,6,4,5,3],seq:4,sep:4,ousid:4,remove_stream:2,nghttp2_submit_goawai:[3,6],sec:4,arg:[2,6,5,3],close:[2,6,4,5,3],jemalloc:4,analog:[3,6],strchr:2,someth:[3,6],won:[2,6,3],hold:[3,6],nghttp2_on_data_chunk_recv_callback:[3,6,5],altern:4,numer:[3,6,1],succeed:4,percent_decod:2,bodi:[2,6,4,5,3],last:[3,6,4],delimit:4,nghttp2_data_flag_non:[3,6],nghttp2_session_want_writ:[2,6,5,3],tempor:[3,6],context:[2,6,4,5,3],compression_error:[3,6],whole:[3,6,4],simpli:[2,5],point:[2,6,5,3],header:[3,6],shutdown:[2,6,5,3],nghttp2_session_client_new:[3,6,5],nghttp2_session:[2,6,5,3],backend:4,due:[3,6],empti:[2,6,4,5,3],send_respons:[2,4],whom:[2,6,5,1],stdint:6,add_stream:2,flight:[3,6],nghttp2_err_nomem:[3,6],settings_enable_push:[3,6,4],nghttp2_session_terminate_sess:[3,6,5],buflen:[3,6],func:6,next_proto_list_len:2,look:[2,5],"while":[2,6,5,3],behavior:[3,6],error:[2,6,4,5,3],loop:[2,4,5],malloc:[2,5],nghttp2_session_callback:[2,6,5,3],readi:2,user_data:[2,6,5,3],itself:[2,6,5,3],flow_control_error:[3,6],grant:[2,6,5,1],belong:[3,6],read:[2,6,4,5,3],decod:[2,6,3],uf_schema:5,mytyp:[3,6],inflat:[3,6,4],alert:4,moment:4,user:[3,6,4,5],implement:[0,2,3,4,5,6],nghttp2_h:6,noninfring:[2,6,5,1],entri:[3,6,4],person:[2,6,5,1],uint32_t:[2,6,3],self:4,nghttp2_gzip_infl:[3,6],on_frame_send_callback:[3,6],nghttp2_ping:[3,6],input:[2,6,4,5,3],subsequ:[3,6],bin:4,on_begin_headers_callback:[2,6,5,3],obsolet:[3,6],format:[2,6,4,5,3],http_parser:5,bit:[3,6,1],strstr:2,success:4,signal:[2,6,5,3],lib_error:[3,6],some:[2,6,5,3],back:[3,6],sampl:4,sizeof:[2,5],libssl:4,lev_opt_reus:2,per:[3,6,4],larg:[3,6],make_nv2:5,machin:4,run:[2,6,4,5,3],step:[3,6],feb:4,handshake_readcb:2,idl:[3,6],block:[2,6,4,5,3],nghttp2_err_paus:[3,6],nsm:6,within:4,nghttp2_send_callback:[3,6,5],chang:[2,6,3],announc:4,occupi:4,inclus:[3,6],errno:2,"long":[3,6,4],nghttp2:3,forward:[3,6,4],session_ptr:[3,6],repeatedli:[3,6],nghttp2_priority_type_dep:[3,6],link:[2,4],ni_maxhost:2,nghttp2_session_set_stream_user_data:[2,6,3],line:4,mitig:4,concaten:[3,6],utf:4,caller:[2,6,3],clear:[3,6],parser:5,repres:[3,6],"char":[2,6,5,3],incomplet:4,sublen:2,titl:2,invalid:[3,6],librari:3,libtool:4,create_http2_stream_data:[2,5],nghttp2_flag_pad_low:[3,6],nghttp2_gzip_inflate_new:[3,6],algorithm:[3,6],svc:4,nghttp2_submit_request:[3,6,5],namelen:[2,6,5,3],far:[2,5],priority_depend:[3,6],asyncio:4,getaddrinfo:2,code:[2,6,4,5,3],queri:5,nghttp2_frame_hd:[3,6],cython:4,privat:[2,4],send:[2,6,4,5,3],http_parser_url:5,lower:[3,6],sens:[3,6],fatal:[2,6,5,3],nghttp2_data_flag:[3,6],sent:[2,6,5,3],nghttp2_submit_p:[3,6],untouch:[3,6],relev:[2,5],"0x010203":[3,1],magic:[2,5],http_parser_parse_url:5,"try":[3,6,4],session:[2,6,4,5,3],pleas:[2,6,4,5,3],impli:[2,6,5,1],smaller:4,snprintf:5,"0x1":[3,6],"0x0":[3,6],download:[0,4],client_address:4,index:[3,6,4],compar:[3,6,5],access:[3,6,4],experiment:[0,4],inspect:[3,6],ssl_ctx_set_opt:[2,5],nghttp2_enhance_your_calm:[3,6],len:[2,6,5,3],closur:[3,6,5],nghttp2_rst_stream:[3,6],ubuntu:4,becom:[2,6,1,3],sinc:[2,6,4,5,3],pri_group_id:[3,6],larger:[3,6],ctx:4,host:[0,2,3,4,5,6],autoreconf:4,jansson:4,greac:[2,5],typic:4,output_wouldblock_threshold:2,appli:[3,6],bufferev:[2,5],from:[3,6,1],commun:[2,4,5],binascii:4,upgrad:[3,6,4],next:[2,6,5,3],findproxyforurl:4,usr:4,nghttp2_nv:[2,6,5,3],nghttp2_option_del:[3,6],jxck:4,goawai:[2,6,4,5,3],benchmark:[],inflater_ptr:[3,6],account:[3,6,4,5],retriev:[2,6,5,3],tunnel:4,nghttp2_settings_id:[3,6],data_falg:[3,6],aliv:[2,6,3],sslv23_client_method:5,control:[3,6],process:[2,6,4,5,3],fprintf:[2,5],onlin:[3,4],serial:[2,6,5,3],evdns_base_fre:5,nghttp2_session_want_read:[2,6,5,3],ssl_ctx_use_privatekey_fil:2,evbas:[2,5],instead:[3,6],nullifi:[3,6],npn:[2,6,4,5,3],nghttp2_flag_priority_group:[3,6],max_payloadlen:[3,6],eventcb:[2,5],nghttp2_compression_error:[3,6],alloc:[2,6,3],bind:[],nvlen:[2,6,5,3],correspond:[2,4],element:[2,6,3],issu:[0,6,4,3],stream_id:[2,6,4,5,3],nghttp2_connect_error:[3,6],ssize_t:[2,6,5,3],furnish:[2,6,5,1],move:[3,6],max_outlen:[3,6],therefor:[3,6,5],nghttp2_session_send:[2,6,5,3],inlen:[3,6,5],recept:[2,6,5,3],crash:3,greater:[3,6],handl:[2,6,4,5,3],nghttp2_goawai:[3,6],handi:5,automat:[3,6],nghttp2_session_mem_send:[3,6],anyth:5,uf_port:5,mode:4,bump:[3,6],chunk:[3,6,4,5],nghttp2_err_temporal_callback_failur:[2,6,3],"static":[2,6,4,5,3],our:5,patch:[3,1],out:[2,1,3,4,5,6],variabl:4,req:[3,6,4],n1000:4,categori:[3,6,5],suitabl:[3,6],rel:2,field_data:5,recv_callback:[3,6],insid:4,cleartext:[3,6],releas:3,nghttp2_option_set_no_auto_connection_window_upd:[3,6],could:[2,6,5,3],keep:[2,6,4,5,3],length:[2,6,4,5,3],outsid:[3,4],retain:[3,6],softwar:[2,6,5,1],addrinfo:2,date:4,prioriti:[3,6,4,5],unknown:[2,6,3],system:[2,5],messag:[3,6,5],attach:[2,5],attack:4,termin:[2,6,4,5,3],low:[3,6],request_head:4,sa_handl:[2,5],enqueu:5,exactli:[2,4],nghttp2_err_header_comp:[3,6],see:[2,6,4,5,3],structur:[2,6,5,3],charact:[2,6,5,3],nghttp2_session_del:[2,6,5,3],nghttp2_default_weight:[3,6],ssl_new:[2,5],bufferevent_get_input:[2,5],corrupt:5,have:[2,6,4,5,3],tabl:[3,6,4],need:[3,6,4,5],ai_socktyp:2,"0x08":[3,6],"0x09":[3,6],"0x04":[3,6,4],"0x05":[3,6,4],"0x06":[3,6],"0x07":[3,6],"0x00":[3,6,4],nghttp2_err_flow_control:[3,6],"0x02":[3,6],"0x03":[3,6],nghttp2_refused_stream:[3,6],evbuffer_pullup:[2,5],which:[2,6,4,5,3],zlib:4,singl:[2,6,4,5,3],opaque_data_len:[3,6],unless:[3,6],bufferevent_openssl_socket_new:[2,5],settings_max_concurrent_stream:[2,6,4,5,3],stream_data:[2,5],deploi:4,"class":4,nghttp2_error_cod:[2,6,5,3],nghttp2_err_stream_id_not_avail:[3,6],url:[2,4],request:[2,6,4,5,3],uri:[4,5],pipe:2,determin:4,nghttp2_pack_settings_payload:[3,6],"0x0d":[3,6],"0x0a":[3,6],ssl_load_error_str:[2,5],text:4,bufferevent_get_output:[2,5],redirect:5,locat:5,should:[2,6,4,5,3],local:[3,6],meant:5,nghttp2_priority_type_non:[3,6],nghttp2_priority_spec_group_init:[3,6],familiar:4,memcpi:[2,5],nghttp2_session_client_new2:[3,6],settings_initial_window_s:[3,6,4],nghttp2_data:[2,6,3],increas:[3,6,5],nghttp2_submit_respons:[2,6,3],enabl:4,nghttp2_info:[3,6],stuff:[3,6],contain:[2,6,4,5,3],nghttp2_window_upd:[3,6],frame:[2,6,4,5,3],knowledg:4,temporarili:[3,6],statu:[3,6],wire:[2,4,5],correctli:[3,6],pointer:[2,6,3],written:[2,6,4,5,3],https_uri:5,progress:4,nghttp2_initial_connection_window_s:[3,6],kei:[2,6,4,3],entir:[2,6,3],last_stream_id:[3,6,4],disconnect:[2,5],addit:[2,6,3],file_read_callback:2,nghttp2_proto_version_id:[2,6,5,3],equal:2,etc:[2,4,5],instanc:[3,6,4],uint16_t:[3,6,5],nghttp2_data_flag_eof:[2,6,3],rfc2616:[3,6],m10:4,commenc:5,respect:[3,6,5],nghttp2_recv_callback:[3,6],ssl_ctx_set_next_proto_select_cb:[3,6,5],insuffici:[3,6],compon:5,json:4,treat:[2,6,3],nghttp2_err_invalid_argu:[3,6],immedi:[3,6],nghttp2_hcat_head:[3,6],altsvc:[3,6,4],both:[2,6,4,5,3],sock_stream:2,evconnlisten:2,on_header_callback:[2,6,5,3],multi:4,plain:4,defin:[2,6,5,1,3],eintr:2,inadequate_secur:[3,6],helper:[3,6],on_request_recv:2,libxml2:4,squid:4,select_next_proto_cb:[3,6,5],archiv:[2,5],substanti:[2,6,5,1],incom:[2,6,4,3],let:[2,5],member:[2,6,3],python:[],ifndef:[6,1],http:3,hostnam:4,uf_host:5,initi:[2,6,5,3],dealloc:4,off:5,well:[2,5],app_context:2,"0x10":[3,6],exampl:[2,6,4,5,3],command:4,choos:[3,6],error_cod:[2,6,4,5,3],nghttp2_data_sourc:[2,6,3],usual:[3,6],paus:[3,6],less:[3,6],send_callback:[2,6,5,3],half:[3,6],obtain:[2,6,5,1],tcp:[2,6,5,3],heavili:4,web:[2,4],cert_fil:2,send_server_connection_head:2,priorit:[3,6],addrlen:2,add:[2,6,3],c10:4,match:[2,5],gmt:4,nvu:4,know:[3,6],nva:[2,6,5,3],python3:4,resid:[2,5],like:[2,6,4,5,3],foobarbuzz:4,protocol_id:[3,6],nghttp2_flag_end_head:[3,6],necessari:[2,6,3],tlen:[3,6],page:[2,5],revers:4,nghttp2_priority_spec_dep_init:[3,6],suppli:[3,6],"export":2,nghttp2_session_get_effective_recv_data_length:[3,6],error_html:2,transport:5,lead:[3,6],avoid:[2,6,4,5,3],octet:[2,5],overlap:[3,6],isxdigit:2,outgo:[2,6,3],nghttp2_session_upgrad:[3,6],delete_http2_stream_data:[2,5],usag:[2,6,4,5,3],settings_payloadlen:[3,6],nghttp2_nv_compare_nam:[3,6],about:[2,6,5,3],actual:[2,6,5,3],socket:[2,5],nghttp2_gzip:[3,6],ssl_tlsext_err_ok:[2,6,5,3],disabl:[3,6,4],nghttp2_client_connection_prefac:[2,6,5,3],own:[3,6],nghttp2_err_invalid_fram:[3,6],ssl_op_no_sslv2:[2,5],warranti:[2,6,5,1],automak:4,merg:[2,6,5,1],val:[2,6,5,3],ai_famili:2,transfer:[0,6,4,3],intention:[3,6],trigger:[3,6],buz:4,unexpect:[3,6],bufferevent_fre:[2,5],overflow:[3,6],highest:[3,6],buf:[2,6,3],count:[3,6],succe:[3,6],nghttp2_stream_clos:[3,6],whether:[2,6,5,1],googlecod:[3,6],displai:4,asynchron:[3,6],limit:[2,6,5,1],otherwis:[2,6,5,1,3],problem:[3,6],sockaddr:2,nghttp2_on_frame_not_send_callback:[3,6],strndup:5,"int":[2,6,5,3],baserequesthandl:4,nghttp2_flag_end_stream:[2,6,3],allow:[3,6,4],percent:2,detail:[3,6],other:[2,6,5,1,3],futur:[3,6],rememb:[2,5],outlen_ptr:[3,6],stat:2,nghttp2_max_weight:[3,6],err_error_str:[2,5],rel_path:2,proto_str:[3,6],debian:4,session_data:[2,5],sphinx:4,eof:[2,6,3],reliabl:[3,6],indirectli:3,rule:[3,6],portion:[2,6,5,1,3]},objtypes:{"0":"c:member","1":"c:macro","2":"c:type","3":"c:function"},objnames:{"0":["c","member","C member"],"1":["c","macro","C macro"],"2":["c","type","C type"],"3":["c","function","C function"]},filenames:["index","nghttp2ver.h","tutorial-server","apiref","package_README","tutorial-client","nghttp2.h"],titles:["nghttp2 - HTTP/2 C Library","nghttp2ver.h","Tutorial: HTTP/2 server","API Reference","nghttp2 - HTTP/2 C Library","Tutorial: HTTP/2 client","nghttp2.h"],objects:{"":{NGHTTP2_ERR_INVALID_STATE:[3,1,1,"c.NGHTTP2_ERR_INVALID_STATE"],nghttp2_nv_flag:[3,2,1,"c.nghttp2_nv_flag"],NGHTTP2_ERR_HEADER_COMP:[3,1,1,"c.NGHTTP2_ERR_HEADER_COMP"],NGHTTP2_SETTINGS_HEADER_TABLE_SIZE:[3,1,1,"c.NGHTTP2_SETTINGS_HEADER_TABLE_SIZE"],NGHTTP2_FLAG_PRIORITY_DEPENDENCY:[3,1,1,"c.NGHTTP2_FLAG_PRIORITY_DEPENDENCY"],nghttp2_settings_entry:[3,2,1,"c.nghttp2_settings_entry"],NGHTTP2_INTERNAL_ERROR:[3,1,1,"c.NGHTTP2_INTERNAL_ERROR"],nghttp2_frame_hd:[3,2,1,"c.nghttp2_frame_hd"],nghttp2_on_frame_recv_callback:[3,2,1,"c.nghttp2_on_frame_recv_callback"],NGHTTP2_CLIENT_CONNECTION_HEADER_LEN:[3,1,1,"c.NGHTTP2_CLIENT_CONNECTION_HEADER_LEN"],nghttp2_goaway:[3,2,1,"c.nghttp2_goaway"],nghttp2_ping:[3,2,1,"c.nghttp2_ping"],NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE:[3,1,1,"c.NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE"],nghttp2_session_del:[3,3,1,"c.nghttp2_session_del"],NGHTTP2_ERR_INVALID_FRAME:[3,1,1,"c.NGHTTP2_ERR_INVALID_FRAME"],nghttp2_priority_spec:[3,2,1,"c.nghttp2_priority_spec"],nghttp2_frame_type:[3,2,1,"c.nghttp2_frame_type"],NGHTTP2_ERR_INVALID_STREAM_ID:[3,1,1,"c.NGHTTP2_ERR_INVALID_STREAM_ID"],NGHTTP2_ALTSVC:[3,1,1,"c.NGHTTP2_ALTSVC"],nghttp2_select_next_protocol:[3,3,1,"c.nghttp2_select_next_protocol"],nghttp2_data_flag:[3,2,1,"c.nghttp2_data_flag"],NGHTTP2_ERR_INVALID_HEADER_BLOCK:[3,1,1,"c.NGHTTP2_ERR_INVALID_HEADER_BLOCK"],nghttp2_option_set_no_auto_stream_window_update:[3,3,1,"c.nghttp2_option_set_no_auto_stream_window_update"],nghttp2_session_callbacks:[3,2,1,"c.nghttp2_session_callbacks"],NGHTTP2_MAX_WINDOW_SIZE:[3,1,1,"c.NGHTTP2_MAX_WINDOW_SIZE"],NGHTTP2_ERR_TOO_MANY_INFLIGHT_SETTINGS:[3,1,1,"c.NGHTTP2_ERR_TOO_MANY_INFLIGHT_SETTINGS"],NGHTTP2_ERR_PROTO:[3,1,1,"c.NGHTTP2_ERR_PROTO"],NGHTTP2_MAX_HEADER_TABLE_SIZE:[3,1,1,"c.NGHTTP2_MAX_HEADER_TABLE_SIZE"],nghttp2_submit_window_update:[3,3,1,"c.nghttp2_submit_window_update"],NGHTTP2_ERR_UNSUPPORTED_VERSION:[3,1,1,"c.NGHTTP2_ERR_UNSUPPORTED_VERSION"],nghttp2_option:[3,2,1,"c.nghttp2_option"],NGHTTP2_SETTINGS_ENABLE_PUSH:[3,1,1,"c.NGHTTP2_SETTINGS_ENABLE_PUSH"],nghttp2_window_update:[3,2,1,"c.nghttp2_window_update"],NGHTTP2_DATA:[3,1,1,"c.NGHTTP2_DATA"],NGHTTP2_ERR_INVALID_STREAM_STATE:[3,1,1,"c.NGHTTP2_ERR_INVALID_STREAM_STATE"],nghttp2_on_header_callback:[3,2,1,"c.nghttp2_on_header_callback"],NGHTTP2_FLAG_ACK:[3,1,1,"c.NGHTTP2_FLAG_ACK"],NGHTTP2_STREAM_CLOSED:[3,1,1,"c.NGHTTP2_STREAM_CLOSED"],NGHTTP2_SETTINGS_MAX:[3,1,1,"c.NGHTTP2_SETTINGS_MAX"],NGHTTP2_NV_FLAG_NO_INDEX:[3,1,1,"c.NGHTTP2_NV_FLAG_NO_INDEX"],nghttp2_headers_category:[3,2,1,"c.nghttp2_headers_category"],nghttp2_session_mem_send:[3,3,1,"c.nghttp2_session_mem_send"],nghttp2_error_code:[3,2,1,"c.nghttp2_error_code"],nghttp2_send_callback:[3,2,1,"c.nghttp2_send_callback"],nghttp2_on_data_chunk_recv_callback:[3,2,1,"c.nghttp2_on_data_chunk_recv_callback"],NGHTTP2_FLAG_PRIORITY_GROUP:[3,1,1,"c.NGHTTP2_FLAG_PRIORITY_GROUP"],NGHTTP2_ERR_START_STREAM_NOT_ALLOWED:[3,1,1,"c.NGHTTP2_ERR_START_STREAM_NOT_ALLOWED"],NGHTTP2_ERR_FLOW_CONTROL:[3,1,1,"c.NGHTTP2_ERR_FLOW_CONTROL"],nghttp2_strerror:[3,3,1,"c.nghttp2_strerror"],nghttp2_priority_type:[3,2,1,"c.nghttp2_priority_type"],nghttp2_gzip_inflate_del:[3,3,1,"c.nghttp2_gzip_inflate_del"],NGHTTP2_ERR_FATAL:[3,1,1,"c.NGHTTP2_ERR_FATAL"],nghttp2_submit_goaway:[3,3,1,"c.nghttp2_submit_goaway"],NGHTTP2_INITIAL_CONNECTION_WINDOW_SIZE:[3,1,1,"c.NGHTTP2_INITIAL_CONNECTION_WINDOW_SIZE"],NGHTTP2_ERR_NOMEM:[3,1,1,"c.NGHTTP2_ERR_NOMEM"],NGHTTP2_ERR_PAUSE:[3,1,1,"c.NGHTTP2_ERR_PAUSE"],nghttp2_session_client_new:[3,3,1,"c.nghttp2_session_client_new"],NGHTTP2_ERR_DATA_EXIST:[3,1,1,"c.NGHTTP2_ERR_DATA_EXIST"],NGHTTP2_GOAWAY:[3,1,1,"c.NGHTTP2_GOAWAY"],NGHTTP2_NO_ERROR:[3,1,1,"c.NGHTTP2_NO_ERROR"],nghttp2_select_padding_callback:[3,2,1,"c.nghttp2_select_padding_callback"],nghttp2_session_get_effective_recv_data_length:[3,3,1,"c.nghttp2_session_get_effective_recv_data_length"],NGHTTP2_PRIORITY_TYPE_GROUP:[3,1,1,"c.NGHTTP2_PRIORITY_TYPE_GROUP"],nghttp2_session_server_new2:[3,3,1,"c.nghttp2_session_server_new2"],NGHTTP2_ERR_DEFERRED:[3,1,1,"c.NGHTTP2_ERR_DEFERRED"],nghttp2_push_promise:[3,2,1,"c.nghttp2_push_promise"],nghttp2_priority_group:[3,2,1,"c.nghttp2_priority_group"],nghttp2_session_get_outbound_queue_size:[3,3,1,"c.nghttp2_session_get_outbound_queue_size"],NGHTTP2_PROTO_VERSION_ID_LEN:[3,1,1,"c.NGHTTP2_PROTO_VERSION_ID_LEN"],NGHTTP2_INITIAL_MAX_CONCURRENT_STREAMS:[3,1,1,"c.NGHTTP2_INITIAL_MAX_CONCURRENT_STREAMS"],nghttp2_data_source_read_callback:[3,2,1,"c.nghttp2_data_source_read_callback"],nghttp2_option_del:[3,3,1,"c.nghttp2_option_del"],NGHTTP2_SETTINGS_TIMEOUT:[3,1,1,"c.NGHTTP2_SETTINGS_TIMEOUT"],nghttp2_before_frame_send_callback:[3,2,1,"c.nghttp2_before_frame_send_callback"],NGHTTP2_ERR_WOULDBLOCK:[3,1,1,"c.NGHTTP2_ERR_WOULDBLOCK"],nghttp2_submit_push_promise:[3,3,1,"c.nghttp2_submit_push_promise"],nghttp2_session_resume_data:[3,3,1,"c.nghttp2_session_resume_data"],NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE:[3,1,1,"c.NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE"],nghttp2_session_server_new:[3,3,1,"c.nghttp2_session_server_new"],NGHTTP2_CONTINUATION:[3,1,1,"c.NGHTTP2_CONTINUATION"],nghttp2_rst_stream:[3,2,1,"c.nghttp2_rst_stream"],NGHTTP2_ERR_INVALID_ARGUMENT:[3,1,1,"c.NGHTTP2_ERR_INVALID_ARGUMENT"],NGHTTP2_ERR_FRAME_SIZE_ERROR:[3,1,1,"c.NGHTTP2_ERR_FRAME_SIZE_ERROR"],NGHTTP2_ERR_GOAWAY_ALREADY_SENT:[3,1,1,"c.NGHTTP2_ERR_GOAWAY_ALREADY_SENT"],NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN:[3,1,1,"c.NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN"],NGHTTP2_HEADERS:[3,1,1,"c.NGHTTP2_HEADERS"],nghttp2_flag:[3,2,1,"c.nghttp2_flag"],NGHTTP2_DEFAULT_WEIGHT:[3,1,1,"c.NGHTTP2_DEFAULT_WEIGHT"],NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS:[3,1,1,"c.NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS"],NGHTTP2_HCAT_REQUEST:[3,1,1,"c.NGHTTP2_HCAT_REQUEST"],NGHTTP2_FLAG_END_HEADERS:[3,1,1,"c.NGHTTP2_FLAG_END_HEADERS"],nghttp2_gzip:[3,2,1,"c.nghttp2_gzip"],NGHTTP2_RST_STREAM:[3,1,1,"c.NGHTTP2_RST_STREAM"],nghttp2_option_set_peer_max_concurrent_streams:[3,3,1,"c.nghttp2_option_set_peer_max_concurrent_streams"],nghttp2_headers:[3,2,1,"c.nghttp2_headers"],NGHTTP2_HCAT_HEADERS:[3,1,1,"c.NGHTTP2_HCAT_HEADERS"],NGHTTP2_VERSION_NUM:[3,1,1,"c.NGHTTP2_VERSION_NUM"],NGHTTP2_SETTINGS:[3,1,1,"c.NGHTTP2_SETTINGS"],nghttp2_frame:[3,2,1,"c.nghttp2_frame"],NGHTTP2_FLAG_END_SEGMENT:[3,1,1,"c.NGHTTP2_FLAG_END_SEGMENT"],nghttp2_session_mem_recv:[3,3,1,"c.nghttp2_session_mem_recv"],NGHTTP2_ERR_DEFERRED_DATA_EXIST:[3,1,1,"c.NGHTTP2_ERR_DEFERRED_DATA_EXIST"],NGHTTP2_CANCEL:[3,1,1,"c.NGHTTP2_CANCEL"],NGHTTP2_REFUSED_STREAM:[3,1,1,"c.NGHTTP2_REFUSED_STREAM"],nghttp2_on_frame_send_callback:[3,2,1,"c.nghttp2_on_frame_send_callback"],NGHTTP2_ENHANCE_YOUR_CALM:[3,1,1,"c.NGHTTP2_ENHANCE_YOUR_CALM"],NGHTTP2_FLAG_PAD_HIGH:[3,1,1,"c.NGHTTP2_FLAG_PAD_HIGH"],NGHTTP2_VERSION:[3,1,1,"c.NGHTTP2_VERSION"],NGHTTP2_COMPRESSION_ERROR:[3,1,1,"c.NGHTTP2_COMPRESSION_ERROR"],NGHTTP2_HCAT_PUSH_RESPONSE:[3,1,1,"c.NGHTTP2_HCAT_PUSH_RESPONSE"],NGHTTP2_CLEARTEXT_PROTO_VERSION_ID:[3,1,1,"c.NGHTTP2_CLEARTEXT_PROTO_VERSION_ID"],nghttp2_submit_rst_stream:[3,3,1,"c.nghttp2_submit_rst_stream"],nghttp2_submit_headers:[3,3,1,"c.nghttp2_submit_headers"],nghttp2_recv_callback:[3,2,1,"c.nghttp2_recv_callback"],nghttp2_priority_spec_dep_init:[3,3,1,"c.nghttp2_priority_spec_dep_init"],nghttp2_session_get_stream_user_data:[3,3,1,"c.nghttp2_session_get_stream_user_data"],NGHTTP2_PRIORITY_TYPE_DEP:[3,1,1,"c.NGHTTP2_PRIORITY_TYPE_DEP"],nghttp2_nv:[3,2,1,"c.nghttp2_nv"],nghttp2_altsvc:[3,2,1,"c.nghttp2_altsvc"],nghttp2_on_invalid_frame_recv_callback:[3,2,1,"c.nghttp2_on_invalid_frame_recv_callback"],nghttp2_version:[3,3,1,"c.nghttp2_version"],nghttp2_on_unknown_frame_recv_callback:[3,2,1,"c.nghttp2_on_unknown_frame_recv_callback"],nghttp2_settings:[3,2,1,"c.nghttp2_settings"],NGHTTP2_CLIENT_CONNECTION_PREFACE:[3,1,1,"c.NGHTTP2_CLIENT_CONNECTION_PREFACE"],NGHTTP2_ERR_STREAM_CLOSED:[3,1,1,"c.NGHTTP2_ERR_STREAM_CLOSED"],NGHTTP2_FLAG_END_STREAM:[3,1,1,"c.NGHTTP2_FLAG_END_STREAM"],NGHTTP2_HCAT_RESPONSE:[3,1,1,"c.NGHTTP2_HCAT_RESPONSE"],NGHTTP2_ERR_CALLBACK_FAILURE:[3,1,1,"c.NGHTTP2_ERR_CALLBACK_FAILURE"],NGHTTP2_FLOW_CONTROL_ERROR:[3,1,1,"c.NGHTTP2_FLOW_CONTROL_ERROR"],NGHTTP2_CLEARTEXT_PROTO_VERSION_ID_LEN:[3,1,1,"c.NGHTTP2_CLEARTEXT_PROTO_VERSION_ID_LEN"],nghttp2_session_set_stream_user_data:[3,3,1,"c.nghttp2_session_set_stream_user_data"],nghttp2_check_header_value:[3,3,1,"c.nghttp2_check_header_value"],NGHTTP2_ERR_STREAM_CLOSING:[3,1,1,"c.NGHTTP2_ERR_STREAM_CLOSING"],NGHTTP2_INADEQUATE_SECURITY:[3,1,1,"c.NGHTTP2_INADEQUATE_SECURITY"],nghttp2_check_header_name:[3,3,1,"c.nghttp2_check_header_name"],nghttp2_info:[3,2,1,"c.nghttp2_info"],NGHTTP2_PROTO_VERSION_ID:[3,1,1,"c.NGHTTP2_PROTO_VERSION_ID"],nghttp2_settings_id:[3,2,1,"c.nghttp2_settings_id"],NGHTTP2_DATA_FLAG_EOF:[3,1,1,"c.NGHTTP2_DATA_FLAG_EOF"],NGHTTP2_PRIORITY_TYPE_NONE:[3,1,1,"c.NGHTTP2_PRIORITY_TYPE_NONE"],nghttp2_session_send:[3,3,1,"c.nghttp2_session_send"],NGHTTP2_PROTOCOL_ERROR:[3,1,1,"c.NGHTTP2_PROTOCOL_ERROR"],nghttp2_gzip_inflate:[3,3,1,"c.nghttp2_gzip_inflate"],nghttp2_session_upgrade:[3,3,1,"c.nghttp2_session_upgrade"],nghttp2_on_begin_headers_callback:[3,2,1,"c.nghttp2_on_begin_headers_callback"],NGHTTP2_ERR_INSUFF_BUFSIZE:[3,1,1,"c.NGHTTP2_ERR_INSUFF_BUFSIZE"],nghttp2_error:[3,2,1,"c.nghttp2_error"],nghttp2_on_frame_not_send_callback:[3,2,1,"c.nghttp2_on_frame_not_send_callback"],nghttp2_option_set_no_auto_connection_window_update:[3,3,1,"c.nghttp2_option_set_no_auto_connection_window_update"],nghttp2_session_get_stream_remote_window_size:[3,3,1,"c.nghttp2_session_get_stream_remote_window_size"],NGHTTP2_CLIENT_CONNECTION_HEADER:[3,1,1,"c.NGHTTP2_CLIENT_CONNECTION_HEADER"],NGHTTP2_FLAG_NONE:[3,1,1,"c.NGHTTP2_FLAG_NONE"],nghttp2_priority_spec_group_init:[3,3,1,"c.nghttp2_priority_spec_group_init"],nghttp2_session_terminate_session:[3,3,1,"c.nghttp2_session_terminate_session"],nghttp2_submit_altsvc:[3,3,1,"c.nghttp2_submit_altsvc"],NGHTTP2_DATA_FLAG_NONE:[3,1,1,"c.NGHTTP2_DATA_FLAG_NONE"],NGHTTP2_NV_FLAG_NONE:[3,1,1,"c.NGHTTP2_NV_FLAG_NONE"],nghttp2_submit_settings:[3,3,1,"c.nghttp2_submit_settings"],nghttp2_session_want_write:[3,3,1,"c.nghttp2_session_want_write"],NGHTTP2_PING:[3,1,1,"c.NGHTTP2_PING"],NGHTTP2_MAX_WEIGHT:[3,1,1,"c.NGHTTP2_MAX_WEIGHT"],nghttp2_priority:[3,2,1,"c.nghttp2_priority"],nghttp2_session_want_read:[3,3,1,"c.nghttp2_session_want_read"],NGHTTP2_VERSION_AGE:[3,1,1,"c.NGHTTP2_VERSION_AGE"],NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE:[3,1,1,"c.NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE"],NGHTTP2_CONNECT_ERROR:[3,1,1,"c.NGHTTP2_CONNECT_ERROR"],nghttp2_submit_data:[3,3,1,"c.nghttp2_submit_data"],nghttp2_on_stream_close_callback:[3,2,1,"c.nghttp2_on_stream_close_callback"],NGHTTP2_PUSH_PROMISE:[3,1,1,"c.NGHTTP2_PUSH_PROMISE"],nghttp2_data_provider:[3,2,1,"c.nghttp2_data_provider"],NGHTTP2_ERR_PUSH_DISABLED:[3,1,1,"c.NGHTTP2_ERR_PUSH_DISABLED"],nghttp2_session_recv:[3,3,1,"c.nghttp2_session_recv"],nghttp2_option_new:[3,3,1,"c.nghttp2_option_new"],nghttp2_session_get_effective_local_window_size:[3,3,1,"c.nghttp2_session_get_effective_local_window_size"],NGHTTP2_INITIAL_WINDOW_SIZE:[3,1,1,"c.NGHTTP2_INITIAL_WINDOW_SIZE"],NGHTTP2_WINDOW_UPDATE:[3,1,1,"c.NGHTTP2_WINDOW_UPDATE"],nghttp2_is_fatal:[3,3,1,"c.nghttp2_is_fatal"],nghttp2_submit_priority:[3,3,1,"c.nghttp2_submit_priority"],nghttp2_session_client_new2:[3,3,1,"c.nghttp2_session_client_new2"],nghttp2_priority_dep:[3,2,1,"c.nghttp2_priority_dep"],NGHTTP2_ERR_EOF:[3,1,1,"c.NGHTTP2_ERR_EOF"],nghttp2_session:[3,2,1,"c.nghttp2_session"],nghttp2_session_get_stream_effective_local_window_size:[3,3,1,"c.nghttp2_session_get_stream_effective_local_window_size"],NGHTTP2_ERR_GZIP:[3,1,1,"c.NGHTTP2_ERR_GZIP"],NGHTTP2_MIN_WEIGHT:[3,1,1,"c.NGHTTP2_MIN_WEIGHT"],NGHTTP2_FLAG_PAD_LOW:[3,1,1,"c.NGHTTP2_FLAG_PAD_LOW"],nghttp2_submit_ping:[3,3,1,"c.nghttp2_submit_ping"],NGHTTP2_FRAME_SIZE_ERROR:[3,1,1,"c.NGHTTP2_FRAME_SIZE_ERROR"],nghttp2_gzip_inflate_new:[3,3,1,"c.nghttp2_gzip_inflate_new"],NGHTTP2_ERR_STREAM_SHUT_WR:[3,1,1,"c.NGHTTP2_ERR_STREAM_SHUT_WR"],nghttp2_submit_response:[3,3,1,"c.nghttp2_submit_response"],NGHTTP2_PRIORITY:[3,1,1,"c.NGHTTP2_PRIORITY"],nghttp2_submit_request:[3,3,1,"c.nghttp2_submit_request"],nghttp2_session_get_stream_effective_recv_data_length:[3,3,1,"c.nghttp2_session_get_stream_effective_recv_data_length"],nghttp2_pack_settings_payload:[3,3,1,"c.nghttp2_pack_settings_payload"],nghttp2_data:[3,2,1,"c.nghttp2_data"],nghttp2_data_source:[3,2,1,"c.nghttp2_data_source"],nghttp2_nv_compare_name:[3,3,1,"c.nghttp2_nv_compare_name"]},nghttp2_frame:{push_promise:[3,0,1,"c.nghttp2_frame.push_promise"],settings:[3,0,1,"c.nghttp2_frame.settings"],ping:[3,0,1,"c.nghttp2_frame.ping"],rst_stream:[3,0,1,"c.nghttp2_frame.rst_stream"],priority:[3,0,1,"c.nghttp2_frame.priority"],headers:[3,0,1,"c.nghttp2_frame.headers"],goaway:[3,0,1,"c.nghttp2_frame.goaway"],window_update:[3,0,1,"c.nghttp2_frame.window_update"],data:[3,0,1,"c.nghttp2_frame.data"],hd:[3,0,1,"c.nghttp2_frame.hd"],altsvc:[3,0,1,"c.nghttp2_frame.altsvc"]},nghttp2_settings_entry:{settings_id:[3,0,1,"c.nghttp2_settings_entry.settings_id"],value:[3,0,1,"c.nghttp2_settings_entry.value"]},nghttp2_window_update:{hd:[3,0,1,"c.nghttp2_window_update.hd"],window_size_increment:[3,0,1,"c.nghttp2_window_update.window_size_increment"]},nghttp2_frame_hd:{stream_id:[3,0,1,"c.nghttp2_frame_hd.stream_id"],length:[3,0,1,"c.nghttp2_frame_hd.length"],type:[3,0,1,"c.nghttp2_frame_hd.type"],flags:[3,0,1,"c.nghttp2_frame_hd.flags"]},nghttp2_push_promise:{padlen:[3,0,1,"c.nghttp2_push_promise.padlen"],nvlen:[3,0,1,"c.nghttp2_push_promise.nvlen"],promised_stream_id:[3,0,1,"c.nghttp2_push_promise.promised_stream_id"],hd:[3,0,1,"c.nghttp2_push_promise.hd"],nva:[3,0,1,"c.nghttp2_push_promise.nva"]},nghttp2_priority_group:{pri_group_id:[3,0,1,"c.nghttp2_priority_group.pri_group_id"],weight:[3,0,1,"c.nghttp2_priority_group.weight"]},nghttp2_ping:{hd:[3,0,1,"c.nghttp2_ping.hd"]},nghttp2_priority:{pri_spec:[3,0,1,"c.nghttp2_priority.pri_spec"],hd:[3,0,1,"c.nghttp2_priority.hd"]},nghttp2_priority_spec:{dep:[3,0,1,"c.nghttp2_priority_spec.dep"],pri_type:[3,0,1,"c.nghttp2_priority_spec.pri_type"],group:[3,0,1,"c.nghttp2_priority_spec.group"]},nghttp2_nv:{valuelen:[3,0,1,"c.nghttp2_nv.valuelen"],namelen:[3,0,1,"c.nghttp2_nv.namelen"],flags:[3,0,1,"c.nghttp2_nv.flags"],name:[3,0,1,"c.nghttp2_nv.name"],value:[3,0,1,"c.nghttp2_nv.value"]},nghttp2_altsvc:{origin:[3,0,1,"c.nghttp2_altsvc.origin"],max_age:[3,0,1,"c.nghttp2_altsvc.max_age"],protocol_id:[3,0,1,"c.nghttp2_altsvc.protocol_id"],origin_len:[3,0,1,"c.nghttp2_altsvc.origin_len"],host:[3,0,1,"c.nghttp2_altsvc.host"],protocol_id_len:[3,0,1,"c.nghttp2_altsvc.protocol_id_len"],host_len:[3,0,1,"c.nghttp2_altsvc.host_len"],port:[3,0,1,"c.nghttp2_altsvc.port"],hd:[3,0,1,"c.nghttp2_altsvc.hd"]},nghttp2_session_callbacks:{before_frame_send_callback:[3,0,1,"c.nghttp2_session_callbacks.before_frame_send_callback"],on_invalid_frame_recv_callback:[3,0,1,"c.nghttp2_session_callbacks.on_invalid_frame_recv_callback"],on_stream_close_callback:[3,0,1,"c.nghttp2_session_callbacks.on_stream_close_callback"],on_data_chunk_recv_callback:[3,0,1,"c.nghttp2_session_callbacks.on_data_chunk_recv_callback"],on_begin_headers_callback:[3,0,1,"c.nghttp2_session_callbacks.on_begin_headers_callback"],send_callback:[3,0,1,"c.nghttp2_session_callbacks.send_callback"],on_unknown_frame_recv_callback:[3,0,1,"c.nghttp2_session_callbacks.on_unknown_frame_recv_callback"],on_header_callback:[3,0,1,"c.nghttp2_session_callbacks.on_header_callback"],on_frame_recv_callback:[3,0,1,"c.nghttp2_session_callbacks.on_frame_recv_callback"],select_padding_callback:[3,0,1,"c.nghttp2_session_callbacks.select_padding_callback"],on_frame_not_send_callback:[3,0,1,"c.nghttp2_session_callbacks.on_frame_not_send_callback"],on_frame_send_callback:[3,0,1,"c.nghttp2_session_callbacks.on_frame_send_callback"],recv_callback:[3,0,1,"c.nghttp2_session_callbacks.recv_callback"]},nghttp2_data_provider:{source:[3,0,1,"c.nghttp2_data_provider.source"],read_callback:[3,0,1,"c.nghttp2_data_provider.read_callback"]},nghttp2_data:{padlen:[3,0,1,"c.nghttp2_data.padlen"]},nghttp2_priority_dep:{exclusive:[3,0,1,"c.nghttp2_priority_dep.exclusive"],stream_id:[3,0,1,"c.nghttp2_priority_dep.stream_id"]},nghttp2_headers:{pri_spec:[3,0,1,"c.nghttp2_headers.pri_spec"],nvlen:[3,0,1,"c.nghttp2_headers.nvlen"],cat:[3,0,1,"c.nghttp2_headers.cat"],padlen:[3,0,1,"c.nghttp2_headers.padlen"],nva:[3,0,1,"c.nghttp2_headers.nva"],hd:[3,0,1,"c.nghttp2_headers.hd"]},nghttp2_goaway:{opaque_data:[3,0,1,"c.nghttp2_goaway.opaque_data"],error_code:[3,0,1,"c.nghttp2_goaway.error_code"],opaque_data_len:[3,0,1,"c.nghttp2_goaway.opaque_data_len"],hd:[3,0,1,"c.nghttp2_goaway.hd"],last_stream_id:[3,0,1,"c.nghttp2_goaway.last_stream_id"]},nghttp2_info:{age:[3,0,1,"c.nghttp2_info.age"],version_str:[3,0,1,"c.nghttp2_info.version_str"],version_num:[3,0,1,"c.nghttp2_info.version_num"],proto_str:[3,0,1,"c.nghttp2_info.proto_str"]},nghttp2_rst_stream:{error_code:[3,0,1,"c.nghttp2_rst_stream.error_code"],hd:[3,0,1,"c.nghttp2_rst_stream.hd"]},nghttp2_data_source:{fd:[3,0,1,"c.nghttp2_data_source.fd"],ptr:[3,0,1,"c.nghttp2_data_source.ptr"]},nghttp2_settings:{niv:[3,0,1,"c.nghttp2_settings.niv"],hd:[3,0,1,"c.nghttp2_settings.hd"],iv:[3,0,1,"c.nghttp2_settings.iv"]}},titleterms:{version:0,header:4,api:3,nghttp2ver:1,resourc:0,librari:[0,4],statu:4,git:4,develop:4,struct:3,union:3,libev:[2,5],nghttp2:[0,6,4],program:4,build:4,test:4,document:4,type:3,"public":4,refer:3,"function":3,http:[0,4,5,2],proxi:4,python:4,tool:4,"enum":3,benchmark:4,typedef:3,compressor:4,releas:0,from:4,decompressor:4,remark:3,nghttpd:4,tutori:[2,5],macro:3,nghttp:4,requir:4,server:[2,4],inflatehd:4,client:[4,5],deflatehd:4,includ:3,hpack:4,bind:4,nghttpx:4}}) \ No newline at end of file +Search.setIndex({envversion:42,terms:{my_obj:[3,6],nghttp2_io_flag:6,nghttp2_cancel:[3,6],prefix:[2,6,3],nghttp2_session_get_stream_effective_local_window_s:[3,6],op_al:4,"const":[2,6,5,3],nghttp2_submit_:[2,5],"0x20":[3,6],under:[3,6,4],nghttp2_priority_typ:[3,6],bufferevent_getfd:5,spec:[3,6],merchant:[2,6,5,1],digit:5,"void":[2,6,5,3],bufferevent_ssl:[2,5],initialize_nghttp2_setup:[2,5],verif:5,servic:[2,4],warnx:[2,5],on_stream_close_callback:[2,6,5,3],direct:4,ssl_op_no_session_resumption_on_renegoti:[2,5],neg:[3,6],nghttp2_err_insuff_bufs:[3,6],"new":[2,6,4,5,3],tatsuhiro:[0,1,2,4,5,6],nghttp2_session_resume_data:[3,6],ipproto_tcp:[2,5],abov:[2,1,3,4,5,6],initialize_app_context:2,here:[2,6,4,5,3],met:[2,6,5,3],"4xx":4,path:[2,4,5],settings_timeout:[3,6],interpret:[3,6],nextprotoneg:[3,6],incom:[2,6,4,3],sslv23_server_method:2,permit:[2,6,5,1],nghttp2_submit_prior:[3,6],aka:[3,6,4],nghttp2_err_gzip:[3,6],nghttp2_frame:[2,6,5,3],bufferevent_ssl_connect:5,substr:2,bev_event_error:[2,5],bufferevent_socket_connect_hostnam:5,total:[3,6,4],unit:4,describ:[2,6,4,5,3],would:[3,6],call:[2,6,4,5,3],asset:4,recommend:4,nghttp2_on_invalid_frame_recv_callback:[3,6],nghttp2_version:[3,6,1],until:[3,6],relat:[2,5],nghttp2_cleartext_proto_version_id_len:[3,6],warn:2,nghttp2_option_set_peer_max_concurrent_stream:[3,6],ssl_shutdown:[2,5],herebi:[2,6,5,1],unpack:[3,6],must:[2,6,4,5,3],word:[3,6],err:[2,5],exit_failur:[2,5],setup:[2,5],work:[2,4],lev_opt_close_on_fre:2,nghttp2_flag_ack:[3,6],root:[2,4],syn_repli:[3,6],defer:[2,6,5,3],give:[3,6,4],indic:[2,6,5,3],want:[2,6,5,3],select_padding_callback:[3,6],unsign:[2,6,5,3],end:[2,6,5,3],datalen:[2,5],how:[3,6,5],nghttp2_err_fat:[3,6],sever:[2,6,4,5,3],hop:[3,6],negoti:4,nghttp2_frame_typ:[3,6],updat:[3,6],nghttp2_msg_more:6,after:[2,6,4,5,3],settings_header_table_s:[3,6],badli:[3,6],demonstr:5,request_path:2,third:[2,6,5,3],opaqu:[3,6],bootstrap:4,exclud:[3,6],perform:[2,6,4,3],exclus:[3,6],first:[2,6,4,5,3],order:[2,6,4,3],oper:[3,6,4],frontend:4,over:[2,6,4,5,3],becaus:[2,6,5,3],eagain:[2,5],vari:4,fit:[2,6,5,1],nghttp2_session_get_stream_remote_window_s:[3,6],fwrite:5,deflate_s:4,hidden:[3,6],them:[2,6,5,3],thei:[2,6,4,5,3],fragment:4,safe:2,"break":[2,6,5,3],promis:[3,6],choic:[3,6],ai_addr:2,timeout:[2,5],each:[2,6,4,5,3],debug:[3,6,5],side:[2,6,4,3],mean:[3,6,5],slen:2,protocol_error:[3,6],nghttp2_select_padding_callback:[3,6],http2_stream_data:[2,5],nghttp2_session_server_new2:[3,6],network:[2,5],content:[0,4,2],end_stream:[3,6,4],situat:[2,5],free:[2,6,5,1,3],small:[3,6],spdy:[3,6,4],openssl:[2,4,5],nghttp2_version_num:[3,6,1],sigact:[2,5],rang:[3,6,4],restrict:[2,6,5,1],nghttp2_protocol_error:[3,6],alreadi:[2,6,5,3],primari:[3,6],top:4,nghttp2_max_header_table_s:[3,6],too:[2,6,3],similarli:[3,6],draft:[0,6,4,3],listen:[2,4],tool:[0,6,3],lighttpd:4,travers:2,awaaagqeaad__w:4,target:[3,6,4],provid:[2,1,3,4,5,6],project:[0,4],matter:[3,6],nghttp2_continu:[3,6],increment:[3,6],nghttp2_option_set_no_auto_stream_window_upd:[3,6],nghttp2_session_recv:[3,6],nghttp2_session_get_stream_effective_recv_data_length:[3,6],transmit:[3,6,5],sig_ign:[2,5],shall:[2,6,5,1],object:[2,6,4,5,3],writecb:[2,5],nghttp2_settings_timeout:[3,6],bytesio:4,simplic:5,don:[2,6,4,3],hex_to_uint:2,doc:4,flow:[3,6],doe:[2,6,4,5,3],left:[3,6],section:[3,6],on_invalid_frame_recv_callback:[3,6],bev_event_eof:[2,5],pkg:4,identifi:[2,6,5,3],bufferevent_setcb:[2,5],involv:[3,6],explain:5,configur:[3,6,4],apach:4,nghttp2_err_invalid_stream_id:[3,6],busi:[2,5],nghttp2_flag_pad_high:[3,6],nghttp2_cleartext_proto_version_id:[3,6],nghttp2_err_proto:[3,6],authoritylen:5,stop:[2,6,5,3],end_head:[3,6,4],evbuffer_drain:[2,5],bar:4,ai_pass:2,ietf:[0,6,4,3],baz:4,push_promis:[2,6,3],"public":[0,6,3],nghttp2_strerror:[2,6,5,3],nghttp2_gzip_inflate_del:[3,6],bufferevent_ssl_accept:2,serve_forev:4,"0x40":[3,6],nul:[3,6],result:[2,5],respons:[2,6,4,5,3],fail:[3,6,4],key_fil:2,subject:[2,6,5,1],said:[3,6],figur:4,bev_opt_close_on_fre:[2,5],accord:[3,6],extens:[4,5],advertis:[2,5],setsockopt:[2,5],nghttp2_default_weight:[3,6],against:[3,6,4],ssl_ctx_use_certificate_chain_fil:2,header_t:4,logic:2,enhance_your_calm:[3,6],com:[0,6,4,3],int32_t:[2,6,5,3],assum:[3,6],option_ptr:[3,6],duplic:[3,6],reciev:5,liabil:[2,6,5,1],evbuffer_get_length:[2,5],chrome:4,max_deflate_s:4,been:[2,6,5,3],github:[0,4],trigger:[3,6],interest:[2,4,5],basic:4,futur:[3,6],tini:5,life:2,regul:[2,5],ani:[2,1,3,4,5,6],ewouldblock:[2,5],load_cert_chain:4,ssl_op_no_compress:[2,5],nghttp2_settings_initial_window_s:[3,6],zlib:4,publicli:4,nghttp2_on_begin_headers_callback:[3,6,5],bev_event_timeout:[2,5],printabl:5,nghttp2_inadequate_secur:[3,6],nghttp2_set:[3,6],promised_stream_id:[3,6],conf:4,pointer:[2,6,3],on_data:4,receiv:[2,6,4,5,3],make:[2,6,4,3],transpar:[3,6],headlen:[3,6],split:[3,6],version_str:[3,6],nghttp2_on_stream_close_callback:[3,6,5],complet:[2,6,5,3],start_listen:2,bufferevent_openssl_get_ssl:[2,5],nghttp2_err_deferred_data_exist:[3,6],ssl_ctx_new:[2,5],zlib1g:4,ownership:[3,6],niv:[3,6,4],thu:[2,6,4,3],nghttp2_session_get_effective_local_window_s:[3,6],origin_len:[3,6],client:[0,6,3],thi:[0,1,2,3,4,5,6],endif:[2,6,1],gzip:[3,6,4],opaque_data:[3,6,4],protocol:[0,2,3,4,5,6],just:[2,6,4,5,3],"0x01":[3,6,4],initiate_connect:5,ifdef:[2,6],yet:[3,6],previous:[3,6],easi:4,els:[2,5],applic:[2,6,4,5,3],nghttp2_nv_flag:[3,6],initialize_nghttp2_sess:[2,5],specif:[2,6,5,3],arbitrari:[3,6],http2_session_data:[2,5],client_addr:2,manual:4,html:[0,6,4,3,2],tcp_nodelai:[2,5],unnecessari:[3,6,5],underli:[2,5],www:[3,6],right:[2,6,5,1],deal:[2,6,5,1,3],intern:[3,6],successfulli:[2,6,5,3],transmiss:[2,6,5,3],requesthandlerclass:4,ni_numerichost:2,bottom:[3,6],nghttp2_data_source_read_callback:[3,6],subclass:4,buffer:[2,6,4,5,3],condit:[2,6,5,1,3],foo:4,localhost:4,core:4,particular:[2,6,5,1,3],sensibl:[3,6],repositori:[2,5],peer:[2,6,5,3],post:[3,6,4],inlen_ptr:[3,6],nghttp2_submit_data:[3,6],nghttp2_settings_max_concurrent_stream:[2,6,5,3],produc:[3,6],evbuff:[2,5],encod:[2,6,4,3],down:[2,5],nghttp2_before_frame_send_callback:[3,6,5],errx:[2,5],git:[0,6,3],session_send:[2,5],wai:[3,6,4],support:[2,6,4,5,3],verbos:4,overhead:4,fork:4,head:[2,6,3],event_bas:[2,5],offer:4,taken:[3,6],heap:4,"true":4,hddeflat:4,ssl_ctx_free:[2,5],maximum:[3,6,4],tell:[2,6,5,3],deafult:4,autoconf:4,emit:[2,6,5,3],nghttp2_initial_window_s:[3,6],featur:4,httpbi:[0,6,4,3],netdb:2,unreleas:4,exist:[3,6,4],protocol_id_len:[3,6],ai_flag:2,ends_with:2,check:[2,6,5,3],delete_http2_session_data:[2,5],when:[2,6,4,5,3],role:[2,6,5,3],nghttp2_check_header_valu:[3,6],send_client_connection_head:5,unlimit:[3,6],intend:2,af_unspec:[2,5],nghttp2_option_new:[3,6],nghttp2_max_window_s:[3,6],technot:[3,6],notic:[2,6,5,1],consid:4,evconnlistener_new_bind:2,longer:[2,4],nghttp2_check_header_nam:[3,6],ignor:[2,6,3],time:[2,6,4,3],push:[3,6,4],skip:[3,6],evbuffer_remov:2,nghttp2_on_frame_recv_callback:[3,6,5],nghttp2ver_h:1,decid:[3,6],create_ssl_ctx:[2,5],depend:[2,6,4,5,3],readabl:5,sourc:[0,6,5,3,2],string:[2,6,4,5,3],nghttp2_settings_enable_push:[3,6],host_len:[3,6],level:[2,6,3],did:[3,6,5],item:4,settings_id:[3,6],conhead:2,upper:[3,6],sign:4,port:[2,6,4,5,3],data_flag:[2,6,3],appear:[3,6,4],event_base_fre:[2,5],current:[2,6,4,3],nghttp2_err_data_exist:[3,6],gener:[3,6,4],onli:[2,6,4,5,3],address:4,nghttp2_submit_rst_stream:[2,6,3],connect_error:[3,6],queue:[2,6,5,3],behav:[3,6],ourselv:[2,5],nghttp2_err_goaway_already_s:[3,6],regardless:[3,6],extra:[4,5],modul:4,prefer:[3,6],instal:4,hdinflat:4,memori:[2,6,5,3],handler:4,nghttp2_altsvc:[3,6],strdup:2,prev:2,reorder:[3,6,5],rst_stream:[2,6,5,3],ctype:2,nghttp2_submit_window_upd:[3,6],prepar:[3,6],stream_user_data:[3,6,5],cat:[2,6,5,3],descriptor:[2,6,3],can:[2,6,4,5,3],http2:[0,6,4,3],purpos:[2,6,5,1],uf_path:5,claim:[2,6,5,1],stream:[2,6,4,5,3],agent:4,critic:[3,6],abort:[3,6],nghttp2_header:[2,6,5,3],occur:[3,6],alwai:[2,6,3],multipl:[2,6,4,5,3],charset:4,ping:[3,6],write:[2,4,5],sslcontext:4,max:[3,6,5],intrus:2,mai:[2,6,5,3],acceptcb:2,data:[2,6,4,5,3],autotool:4,stdin:4,inform:[2,6,4,5,3],"switch":[2,4,5],combin:[3,6],talk:[2,4],nghttp2_err_stream_shut_wr:[3,6],size_t:[2,6,5,3],nghttp2_err_unsupported_vers:[3,6],still:[2,6,4,3],nghttp2_settings_entri:[2,6,5,3],dynam:4,entiti:2,group:[3,6],precondit:[3,6],nghttp2_priority_spec:[3,6],tort:[2,6,5,1],window:[3,6],main:[2,5],non:[2,6,4,5,3],recal:5,env:4,"5xx":4,nghttp2_submit_head:[3,6],nghttp2_on_header_callback:[2,6,5,3],"0x000400":1,name:[2,6,4,5,3],version_num:[3,6],config:4,no_error:4,drop:[2,6,5,3],millisec:4,replac:[3,6],individu:[3,6],continu:[2,6,5,3],event_base_loop:[2,5],turoti:5,happen:[2,5],ai_addrlen:2,libjemalloc:4,space:[3,6,4],output_length:4,earlier:[2,5],event_base_new:[2,5],argv:[2,5],org:[0,6,4,3],"byte":[2,6,4,5,3],argc:[2,5],care:[3,6],nghttp2_opt_no_auto_connection_window_upd:[3,6],nghttp2ver:[0,6,3],"88448504252dd5918485":4,befor:[2,6,4,5,3],thing:[2,6,5,3],nghttp2_flag_non:[2,6,5,3],place:[3,6],evdns_base_new:5,origin:[3,6],directli:[2,6,5,3],onc:[3,6],arrai:[3,6,4,5],yourself:4,nghttp2_is_fat:[3,6],nghttp2_flow_control_error:[3,6],submit:[3,6,5],on_frame_recv_callback:[2,6,5,3],open:[2,6,4,3],size:[2,6,4,3],avail:[2,6,4,5,3],given:[3,6,4],necessarili:[3,6],sigpip:[2,5],internal_error:[3,6],conveni:[3,6],knowledg:4,copi:[2,6,5,1,3],specifi:[2,6,4,5,3],on_head:4,mostli:4,holder:[2,6,5,1],than:[2,6,4,3],serv:2,wide:2,nghttp2_session_get_outbound_queue_s:[3,6],were:[2,5],posit:[3,6],read_callback:[2,6,3],nghttp2_min_weight:[3,6],browser:4,sai:[3,6],pri:6,argument:[2,6,4,5,3],deliv:[3,6],sat:4,bitwis:[3,6],form:[3,6,4],destroi:[2,5],payloadlen:[3,6],note:[2,6,4,5,3],take:[2,6,4,5,3],properti:[2,5],noth:[3,6,4],begin:5,sure:[2,4,5],normal:[3,6],track:[2,4,5],compress:[0,4],nghttp2_hcat_request:[2,6,5,3],pathlen:5,sublicens:[2,6,5,1],pair:[2,6,4,5,3],http2_select:[3,6],later:[2,6,5,3],gracefulli:5,show:[4,5],unprocess:[2,5],concurr:[2,6,4,3],permiss:[2,6,5,1],threshold:2,pad_high:[3,6],end_seg:[3,6],written:[2,6,4,5,3],"4e5535a027780":4,priority_group:[3,6],overwritten:[3,6],reset:5,variou:[3,6],get:[2,6,4,5,3],outlen:[3,6,5],ssl:[2,6,4,5,3],cannot:[2,6,3],requir:[0,6,3],nghttp2_set_stream_user_data:2,multi:4,reserv:[3,6],op_no_sslv2:4,nghttp2_priority_group:[3,6],detect:[3,6,4],weighttp:4,"import":4,fcntl:2,pipefd:2,evdns_bas:5,submit_request:5,region:[3,6],contract:[2,6,5,1],tutori:0,mani:[3,6],nghttp2_data_provid:[2,6,3],inspir:4,nghttp2_err_too_many_inflight_set:[3,6],cancel:[3,6],damag:[2,6,5,1],http2server:4,header_table_s:4,nghttp2_settings_max:[3,6],"abstract":[2,5],nghttp2_on_unknown_frame_recv_callback:[3,6],those:[2,6,5,3],uf_queri:5,hdr:[2,4,5],invok:[2,6,4,5,3],invoc:[2,6,3],nghttp2_nv_flag_no_index:[3,6],on_data_chunk_recv_callback:[3,6,5],stdout:[4,5],ascii:[3,6],develop:0,author:[2,6,4,5,1],bev_opt_defer_callback:[2,5],alphabet:[3,6],same:[2,6,4,5,3],ssl_library_init:[2,5],binari:5,pac:4,pad:[3,6],document:[0,6,1],finish:[2,6,4,5,3],decompress:[3,6,4],handshake_leftlen:2,extern:6,postpon:[3,6],ai_next:2,without:[2,1,3,4,5,6],nghttp2_push_promis:[3,6],on_request_don:4,event2:[2,5],nghttp2_err_def:[3,6],nghttp2_submit_set:[2,6,5,3],execut:4,multiplex:2,hint:2,except:[3,6],nghttp2_flag_priority_depend:[3,6],identif:[3,6],nghttp2_select_next_protocol:[3,6,5],real:5,unistd:[2,5],read:[2,6,4,5,3],nghttp2_version_ag:[3,6],rfc2616:[3,6],test:0,traffic:4,next_proto_cb:2,integ:[3,6],server:[0,6,3],either:[2,6,3],output:[2,6,4,5,3],manag:[2,6,3],stream_clos:[3,6],protocol_sslv23:4,ssl_ctx_set_next_protos_advertised_cb:2,handshak:[2,5],nonzero:[2,6,3],easili:5,"2xx":4,exit:[2,5],data_ptr:[3,6],base64url:[3,6],inspect:[3,6],fulli:[2,6,3],getnameinfo:2,src:4,inflater_ptr:[3,6],ack:[3,6,4],dnsbase:5,settings_payload:[3,6],act:[2,5],routin:[2,5],max_siz:4,least_vers:[3,6],error_repli:2,your:4,b2a_hex:4,nghttp2_hcat_respons:[3,6,5],hex:[2,4],start:[2,6,4,5,3],nghttp2_err_stream_clos:[3,6],ipv4:4,lot:[3,6],ipv6:4,strictli:[3,6],next_proto_list:2,nghttp2_proto_version_id_len:[2,6,3],tupl:4,nghttp2_err_invalid_st:[3,6],satur:4,nghttp2_flag_end_seg:[3,6],possibl:[2,6,5,3],"default":[2,6,4,3],applayerprotoneg:[3,6],hpack:0,expect:4,creat:[2,6,4,5,3],decreas:[3,6],file:[2,1,3,4,5,6],nghttp2_err_invalid_header_block:[3,6],fill:[2,6,3],denot:[3,6,5],functypedef:6,googl:4,kbyte:4,field:[2,6,4,5,3],valid:[3,6,4],nghttp2_prioriti:[3,6],print_head:5,you:[2,6,4,5,3],sequenc:[2,6,4,5,3],promised_stream_user_data:[3,6],reduc:[3,6],cunit:4,directori:[2,4,5],represent:[3,1],all:[2,6,5,1,3],on_unknown_frame_recv_callback:[3,6],illustr:4,nghttp2_err_start_stream_not_allow:[3,6],follow:[2,1,3,4,5,6],alt:4,ptr:[2,6,5,3],app_cont:2,uint8_t:[2,6,5,3],readcb:[2,5],program:0,bufferevent_writ:[2,5],"case":[2,6,4,5,3],fals:4,pad_low:[3,6],nghttp2_option:[3,6],nghttp2_client_connection_header_len:[3,6],failur:[3,6],veri:[3,6,5],"__cplusplu":6,list:[2,6,3],nghttp2_headers_categori:[3,6],adjust:[3,6,4],stderr:[2,4,5],nghttp2_priority_type_group:[3,6],session_recv:2,zero:[3,6],pass:[3,6,5],further:[2,6,5,3],what:[3,6,4],sub:2,sun:4,sum:4,delet:5,version:3,method:[2,6,4,5,3],libjansson:4,padlen:[3,6,4],percentage_of_original_s:4,excess:2,modifi:[2,6,4,5,1],valu:[2,6,4,5,3],search:2,ai_addrconfig:2,nghttp2_err_push_dis:[3,6],on_clos:4,prior:4,amount:[2,6,5,3],action:[2,6,5,1,3],via:[2,6,4,5,3],primit:5,ask:[3,6],famili:[2,5],establish:[2,5],select:[3,6,5],regist:2,libev:[0,4],bev_event_connect:[2,5],minor:[3,1],more:[2,6,4,5,3],tsujikawa:[2,6,5,1],nghttp2_settings_header_table_s:[3,6],flag:[2,6,4,5,3],sens:[3,6],known:[3,6],nghttp2_err_wouldblock:[2,6,5,3],none:4,endpoint:[3,6,4],dep:[3,6],dev:[4,1],remain:[2,6,5,3],def:4,share:[3,6,4],accept:[2,6,4,3],minimum:[2,6,3],ssl_op_al:[2,5],nghttp2_submit_altsvc:[3,6],create_ssl:[2,5],strlen:[2,5],huge:[2,5],netinet:[2,5],secur:4,anoth:[3,6],serveraddr:4,reject:[3,6],sec9:[3,6],simpl:[2,6,5,3],css:4,resourc:3,referenc:4,variant:[3,6],spdylai:4,nghttp2_client_connection_preface_len:[2,6,5,3],associ:[2,1,3,4,5,6],"short":[2,5],caus:[3,6],callback:[2,6,4,5,3],nghttp2_nv_flag_non:[2,6,5,3],alpn:[3,6,4],authroiti:5,max_ag:[3,6],hypertext:[0,4],libcunit1:4,through:[2,4],paramet:[3,6,5],style:4,nghttp2_hcat_push_respons:[3,6],pend:[2,6,5,3],nghttp2_err_eof:[3,6],progoram:5,valuelen:[2,6,5,3],"0x010203":[3,1],"return":[2,6,4,5,3],check_path:2,nghttp2_initial_max_concurrent_stream:[3,6],readlen:2,nghttp2_err_callback_failur:[2,6,5,3],tear:[2,5],achiev:[2,6,3],found:[2,6,3],trailer:[3,6],nghttp2_on_frame_send_callback:[3,6],weight:[3,6],monoton:5,realli:5,connect:[2,1,3,4,5,6],field_set:5,event:[2,6,4,5,1],app_ctx:2,ftw:4,publish:[2,6,5,1],payload:[3,6],etag:4,print:[4,5],on_frame_not_send_callback:[3,6],proxi:0,advanc:[3,6],differ:[3,6],uf_host:5,reason:[2,6,3],base:[2,4,5],put:[3,6],nghttp2_session_mem_recv:[2,6,5,3],nghttp2_flag:[3,6],recv:4,prefac:[2,6,5,3],thread:[2,4],omit:[3,6,5],nghttp2_err_invalid_stream_st:[3,6],assign:[2,6,5,3],feed:[2,5],major:[3,1],notifi:2,prevent:[3,6],number:[2,6,1,3],done:[2,4,5],construct:[3,6,4],stdlib:6,nghttp2_internal_error:[2,6,3],script:4,data_prd:[2,6,3],nghttp2_session_get_stream_user_data:[2,6,5,3],least:[3,6,4],scheme:[4,5],store:[2,6,5,3],input_length:4,"0x0":[3,6],option:[2,6,4,5,3],memcmp:2,nghttp2_client_connection_head:[3,6],pars:5,window_upd:[3,6],doubli:2,remot:[2,6,5,3],remov:[2,6,3],bridg:4,consumpt:[2,5],nghttp2_error:[3,6],window_size_incr:[3,6],lib_error_cod:[3,6],arrlen:[2,5],packag:4,"null":[2,6,5,3],syn_stream:[3,6],sell:[2,6,5,1],outbound:[3,6],built:4,equival:[3,6],self:4,also:[2,6,5,3],build:0,nghttp2_err_frame_size_error:[3,6],make_nv:[2,5],distribut:[2,6,5,1],reacb:5,reach:[3,6],chart:[3,6],most:[3,6],nghttp2_priority_dep:[3,6],charg:[2,6,5,1],addr:2,"01881f3468e5891afcbf83868a3d856659c62e3f":4,compar:[3,6,5],frame_size_error:[3,6],h2c:[6,4],pri_spec:[3,6],microsec:4,nghttp2_submit_push_promis:[3,6],copyright:[2,6,5,1],refused_stream:[3,6],pri_typ:[3,6],nghttp2_opt_no_auto_stream_window_upd:[3,6],queu:[2,6,5,3],express:[2,6,5,1],kind:[2,6,5,1,3],nativ:4,"3xx":4,liabl:[2,6,5,1],before_frame_send_callback:[3,6,5],retreiv:5,crt:[2,4],h2load:4,certif:[2,4,5],set:[2,6,4,5,3],seq:4,sep:4,ousid:4,remove_stream:2,nghttp2_submit_goawai:[3,6],sec:4,arg:[2,6,5,3],close:[2,6,4,5,3],jemalloc:4,analog:[3,6],strchr:2,someth:[3,6],won:[2,6,3],hold:[3,6],nghttp2_on_data_chunk_recv_callback:[3,6,5],altern:4,numer:[3,6,1],sole:[3,6],succeed:4,percent_decod:2,closur:[3,6,5],last:[3,6,4],delimit:4,nghttp2_data_flag_non:[3,6],nghttp2_session_want_writ:[2,6,5,3],tempor:[3,6],context:[2,6,4,5,3],compression_error:[3,6],whole:[3,6,4],simpli:[2,5],point:[2,6,5,3],header:[0,6,3],shutdown:[2,6,5,3],nghttp2_session_client_new:[3,6,5],nghttp2_session:[2,6,5,3],backend:4,due:[3,6],empti:[2,6,4,5,3],send_respons:[2,4],whom:[2,6,5,1],stdint:6,add_stream:2,flight:[3,6],nghttp2_err_nomem:[3,6],settings_enable_push:[3,6,4],nghttp2_session_terminate_sess:[3,6,5],buflen:[3,6],func:6,next_proto_list_len:2,look:[2,5],"while":[2,6,5,3],behavior:[3,6],error:[2,6,4,5,3],loop:[2,4,5],malloc:[2,5],nghttp2_session_callback:[2,6,5,3],readi:2,user_data:[2,6,5,3],itself:[2,6,5,3],flow_control_error:[3,6],grant:[2,6,5,1],belong:[3,6],create_http2_session_data:[2,5],decod:[2,6,3],uf_schema:5,mytyp:[3,6],inflat:[3,6,4],alert:4,moment:4,user:[3,6,4,5],implement:[0,2,3,4,5,6],nghttp2_h:6,noninfring:[2,6,5,1],entri:[3,6,4],person:[2,6,5,1],uint32_t:[2,6,3],nghttp2_gzip_infl:[3,6],on_frame_send_callback:[3,6],nghttp2_ping:[3,6],input:[2,6,4,5,3],subsequ:[3,6],bin:4,on_begin_headers_callback:[2,6,5,3],obsolet:[3,6],format:[2,6,4,5,3],http_parser:5,bit:[3,6,1],strstr:2,foobarbuzz:4,signal:[2,6,5,3],lib_error:[3,6],some:[2,6,5,3],back:[3,6],sampl:4,sizeof:[2,5],libssl:4,lev_opt_reus:2,per:[3,6,4],larg:[3,6],make_nv2:5,machin:4,run:[2,6,4,5,3],step:[3,6],from:[0,6,1,3],handshake_readcb:2,idl:[3,6],block:[2,6,4,5,3],nghttp2_err_paus:[3,6],nsm:6,within:4,nghttp2_send_callback:[3,6,5],chang:[2,6,3],announc:4,occupi:4,inclus:[3,6],errno:2,"long":[3,6,4],nghttp2:3,forward:[3,6,4],session_ptr:[3,6],repeatedli:[3,6],nghttp2_priority_type_dep:[3,6],link:[2,4],ni_maxhost:2,nghttp2_session_set_stream_user_data:[2,6,3],line:4,mitig:4,concaten:[3,6],utf:4,caller:[2,6,3],clear:[3,6],parser:5,repres:[3,6],"char":[2,6,5,3],incomplet:4,sublen:2,titl:2,invalid:[3,6],transport:5,libtool:4,create_http2_stream_data:[2,5],nghttp2_flag_pad_low:[3,6],nghttp2_gzip_inflate_new:[3,6],algorithm:[3,6],svc:4,nghttp2_submit_request:[3,6,5],namelen:[2,6,5,3],far:[2,5],priority_depend:[3,6],asyncio:4,getaddrinfo:2,code:[2,6,4,5,3],queri:5,nghttp2_frame_hd:[3,6],cython:4,privat:[2,4],send:[2,6,4,5,3],http_parser_url:5,lower:[3,6],aris:[2,6,5,1],fatal:[2,6,5,3],nghttp2_data_flag:[3,6],sent:[2,6,5,3],nghttp2_submit_p:[3,6],untouch:[3,6],relev:[2,5],tri:[3,6],magic:[2,5],http_parser_parse_url:5,"try":[3,6,4],session:[2,6,4,5,3],pleas:[2,6,4,5,3],impli:[2,6,5,1],smaller:4,snprintf:5,"0x1":[3,6],memset:[2,5],download:[0,4],client_address:4,index:[3,6,4],o_rdonli:2,access:[3,6,4],experiment:[0,4],nghttp2_session_server_new:[2,6,3],ssl_ctx_set_opt:[2,5],nghttp2_enhance_your_calm:[3,6],len:[2,6,5,3],bodi:[2,6,4,5,3],nghttp2_rst_stream:[3,6],ubuntu:4,becom:[2,6,1,3],sinc:[2,6,4,5,3],pri_group_id:[3,6],larger:[3,6],ctx:4,settings_payloadlen:[3,6],autoreconf:4,jansson:4,greac:[2,5],typic:4,output_wouldblock_threshold:2,appli:[3,6],bufferev:[2,5],feb:4,commun:[2,4,5],binascii:4,upgrad:[3,6,4],next:[2,6,5,3],findproxyforurl:4,usr:4,nghttp2_nv:[2,6,5,3],nghttp2_option_del:[3,6],goawai:[2,6,4,5,3],benchmark:0,deflat:[3,6,4],account:[3,6,4,5],retriev:[2,6,5,3],tunnel:4,nghttp2_settings_id:[3,6],data_falg:[3,6],about:[2,6,5,3],aliv:[2,6,3],sslv23_client_method:5,control:[3,6],process:[2,6,4,5,3],fprintf:[2,5],onlin:[3,4],serial:[2,6,5,3],evdns_base_fre:5,nghttp2_session_want_read:[2,6,5,3],ssl_ctx_use_privatekey_fil:2,evbas:[2,5],instead:[3,6],nullifi:[3,6],npn:[2,6,4,5,3],nghttp2_flag_priority_group:[3,6],max_payloadlen:[3,6],eventcb:[2,5],nghttp2_compression_error:[3,6],alloc:[2,6,3],bind:0,nvlen:[2,6,5,3],correspond:[2,4],element:[2,6,3],issu:[0,6,4,3],stream_id:[2,6,4,5,3],nghttp2_connect_error:[3,6],ssize_t:[2,6,5,3],furnish:[2,6,5,1],move:[3,6],max_outlen:[3,6],therefor:[3,6,5],nghttp2_session_send:[2,6,5,3],inlen:[3,6,5],recept:[2,6,5,3],crash:3,greater:[3,6],handl:[2,6,4,5,3],nghttp2_goawai:[3,6],handi:5,ssl_op_no_sslv2:[2,5],nghttp2_session_mem_send:[3,6],anyth:5,uf_port:5,mode:4,ssl_filetype_pem:2,chunk:[3,6,4,5],nghttp2_err_temporal_callback_failur:[2,6,3],"static":[2,6,4,5,3],our:5,patch:[3,1],out:[2,1,3,4,5,6],variabl:4,req:[3,6,4],n1000:4,categori:[3,6,5],suitabl:[3,6],rel:2,field_data:5,recv_callback:[3,6],insid:4,cleartext:[3,6],releas:3,nghttp2_option_set_no_auto_connection_window_upd:[3,6],could:[2,6,5,3],keep:[2,6,4,5,3],length:[2,6,4,5,3],outsid:[3,4],retain:[3,6],softwar:[2,6,5,1],addrinfo:2,date:4,prioriti:[3,6,4,5],intention:[3,6],unknown:[2,6,3],system:[2,5],messag:[3,6,5],attach:[2,5],attack:4,termin:[2,6,4,5,3],low:[3,6],request_head:4,sa_handl:[2,5],enqueu:5,exactli:[2,4],nghttp2_err_header_comp:[3,6],see:[2,6,4,5,3],structur:[2,6,5,3],charact:[2,6,5,3],nghttp2_session_del:[2,6,5,3],bev:[2,5],ssl_new:[2,5],bufferevent_get_input:[2,5],corrupt:5,have:[2,6,4,5,3],tabl:[3,6,4],need:[3,6,4,5],ai_socktyp:2,"0x08":[3,6],"0x09":[3,6],"0x04":[3,6,4],"0x05":[3,6,4],"0x06":[3,6],"0x07":[3,6],"0x00":[3,6,4],nghttp2_err_flow_control:[3,6],"0x02":[3,6],"0x03":[3,6],nghttp2_refused_stream:[3,6],evbuffer_pullup:[2,5],which:[2,6,4,5,3],singl:[2,6,4,5,3],opaque_data_len:[3,6],unless:[3,6],bufferevent_openssl_socket_new:[2,5],settings_max_concurrent_stream:[2,6,4,5,3],stream_data:[2,5],deploi:4,"class":4,nghttp2_error_cod:[2,6,5,3],nghttp2_err_stream_id_not_avail:[3,6],url:[2,4],request:[2,6,4,5,3],uri:[4,5],pipe:2,determin:4,nghttp2_pack_settings_payload:[3,6],"0x0d":[3,6],"0x0a":[3,6],ssl_load_error_str:[2,5],text:4,bufferevent_get_output:[2,5],redirect:5,locat:5,should:[2,6,4,5,3],local:[3,6],meant:5,nghttp2_priority_type_non:[3,6],nghttp2_priority_spec_group_init:[3,6],familiar:4,memcpi:[2,5],nghttp2_session_client_new2:[3,6],settings_initial_window_s:[3,6,4],nghttp2_data:[2,6,3],increas:[3,6,5],portion:[2,6,5,1,3],nghttp2_submit_respons:[2,6,3],enabl:4,whether:[2,6,5,1],stuff:[3,6],contain:[2,6,4,5,3],nghttp2_window_upd:[3,6],frame:[2,6,4,5,3],ssl_ctx:[2,6,5,3],temporarili:[3,6],statu:[0,6,3],wire:[2,4,5],correctli:[3,6],mainli:[3,6],state:[2,6,4,3],https_uri:5,progress:4,nghttp2_initial_connection_window_s:[3,6],kei:[2,6,4,3],entir:[2,6,3],last_stream_id:[3,6,4],disconnect:[2,5],addit:[2,6,3],revers:4,nghttp2_proto_version_id:[2,6,5,3],equal:2,etc:[2,4,5],instanc:[3,6,4],uint16_t:[3,6,5],nghttp2_data_flag_eof:[2,6,3],arriv:4,m10:4,commenc:5,respect:[3,6,5],nghttp2_recv_callback:[3,6],ssl_ctx_set_next_proto_select_cb:[3,6,5],insuffici:[3,6],compon:5,json:4,treat:[2,6,3],immedi:[3,6],nghttp2_hcat_head:[3,6],altsvc:[3,6,4],http2jp:4,both:[2,6,4,5,3],sock_stream:2,evconnlisten:2,on_header_callback:[2,6,5,3],nghttp2_frame_size_error:[3,6],plain:4,defin:[2,6,5,1,3],eintr:2,inadequate_secur:[3,6],helper:[3,6],on_request_recv:2,libxml2:4,squid:4,select_next_proto_cb:[3,6,5],archiv:[2,5],substanti:[2,6,5,1],synopsi:[2,5],let:[2,5],member:[2,6,3],python:0,ifndef:[6,1],http:3,hostnam:4,effect:[3,6],initi:[2,6,5,3],dealloc:[3,6],off:5,well:[2,5],app_context:2,"0x10":[3,6],exampl:[2,6,4,5,3],command:4,choos:[3,6],error_cod:[2,6,4,5,3],nghttp2_data_sourc:[2,6,3],usual:[3,6],paus:[3,6],less:[3,6],send_callback:[2,6,5,3],half:[3,6],obtain:[2,6,5,1],tcp:[2,6,5,3],heavili:4,web:[2,4],cert_fil:2,send_server_connection_head:2,priorit:[3,6],addrlen:2,add:[2,6,3],c10:4,match:[2,5],gmt:4,nvu:4,know:[3,6],nva:[2,6,5,3],python3:4,resid:[2,5],like:[2,6,4,5,3],success:4,protocol_id:[3,6],nghttp2_flag_end_head:[3,6],necessari:[2,6,3],tlen:[3,6],page:[2,5],file_read_callback:2,nghttp2_priority_spec_dep_init:[3,6],suppli:[3,6],"export":2,nghttp2_session_get_effective_recv_data_length:[3,6],error_html:2,librari:3,lead:[3,6],avoid:[2,6,4,5,3],octet:[2,5],overlap:[3,6],isxdigit:2,outgo:[2,6,3],nghttp2_session_upgrad:[3,6],delete_http2_stream_data:[2,5],usag:[2,4,5],host:[0,2,3,4,5,6],nghttp2_nv_compare_nam:[3,6],err_get_error:[2,5],actual:[2,6,5,3],socket:[2,5],nghttp2_gzip:[3,6],ssl_tlsext_err_ok:[2,6,5,3],disabl:[3,6,4],nghttp2_client_connection_prefac:[2,6,5,3],own:[3,6],nghttp2_err_invalid_fram:[3,6],automat:[3,6],warranti:[2,6,5,1],automak:4,merg:[2,6,5,1],val:[2,6,5,3],ai_famili:2,transfer:[0,6,4,3],bump:[3,6],much:2,buz:4,unexpect:[3,6],bufferevent_fre:[2,5],overflow:[3,6],highest:[3,6],buf:[2,6,3],count:[3,6],succe:[3,6],nghttp2_stream_clos:[3,6],nghttp2_info:[3,6],googlecod:[3,6],asynchron:[3,6],limit:[2,6,5,1],otherwis:[2,6,5,1,3],problem:[3,6],sockaddr:2,nghttp2_on_frame_not_send_callback:[3,6],strndup:5,"int":[2,6,5,3],baserequesthandl:4,nghttp2_flag_end_stream:[2,6,3],allow:[3,6,4],percent:2,detail:[3,6],other:[2,6,5,1,3],nghttp2_err_invalid_argu:[3,6],rememb:[2,5],outlen_ptr:[3,6],stat:2,nghttp2_max_weight:[3,6],err_error_str:[2,5],rel_path:2,proto_str:[3,6],debian:4,session_data:[2,5],sphinx:4,eof:[2,6,3],indirectli:3,rule:[3,6],nghttp2_no_error:[3,6,5]},objtypes:{"0":"c:member","1":"c:macro","2":"c:function","3":"c:type"},objnames:{"0":["c","member","C member"],"1":["c","macro","C macro"],"2":["c","function","C function"],"3":["c","type","C type"]},filenames:["index","nghttp2ver.h","tutorial-server","apiref","package_README","tutorial-client","nghttp2.h"],titles:["nghttp2 - HTTP/2 C Library","nghttp2ver.h","Tutorial: HTTP/2 server","API Reference","nghttp2 - HTTP/2 C Library","Tutorial: HTTP/2 client","nghttp2.h"],objects:{"":{NGHTTP2_ERR_INVALID_STATE:[3,1,1,"c.NGHTTP2_ERR_INVALID_STATE"],NGHTTP2_ERR_INVALID_STREAM_STATE:[3,1,1,"c.NGHTTP2_ERR_INVALID_STREAM_STATE"],NGHTTP2_ERR_HEADER_COMP:[3,1,1,"c.NGHTTP2_ERR_HEADER_COMP"],NGHTTP2_SETTINGS_HEADER_TABLE_SIZE:[3,1,1,"c.NGHTTP2_SETTINGS_HEADER_TABLE_SIZE"],NGHTTP2_FLAG_PRIORITY_DEPENDENCY:[3,1,1,"c.NGHTTP2_FLAG_PRIORITY_DEPENDENCY"],nghttp2_settings_entry:[3,3,1,"c.nghttp2_settings_entry"],NGHTTP2_INTERNAL_ERROR:[3,1,1,"c.NGHTTP2_INTERNAL_ERROR"],nghttp2_frame_hd:[3,3,1,"c.nghttp2_frame_hd"],nghttp2_on_frame_recv_callback:[3,3,1,"c.nghttp2_on_frame_recv_callback"],NGHTTP2_CLIENT_CONNECTION_HEADER_LEN:[3,1,1,"c.NGHTTP2_CLIENT_CONNECTION_HEADER_LEN"],nghttp2_goaway:[3,3,1,"c.nghttp2_goaway"],nghttp2_ping:[3,3,1,"c.nghttp2_ping"],NGHTTP2_ERR_INVALID_FRAME:[3,1,1,"c.NGHTTP2_ERR_INVALID_FRAME"],nghttp2_priority_spec:[3,3,1,"c.nghttp2_priority_spec"],nghttp2_frame_type:[3,3,1,"c.nghttp2_frame_type"],NGHTTP2_ERR_INVALID_STREAM_ID:[3,1,1,"c.NGHTTP2_ERR_INVALID_STREAM_ID"],NGHTTP2_ALTSVC:[3,1,1,"c.NGHTTP2_ALTSVC"],nghttp2_select_next_protocol:[3,2,1,"c.nghttp2_select_next_protocol"],nghttp2_data_flag:[3,3,1,"c.nghttp2_data_flag"],NGHTTP2_ERR_INVALID_HEADER_BLOCK:[3,1,1,"c.NGHTTP2_ERR_INVALID_HEADER_BLOCK"],nghttp2_option_set_no_auto_stream_window_update:[3,2,1,"c.nghttp2_option_set_no_auto_stream_window_update"],nghttp2_session_callbacks:[3,3,1,"c.nghttp2_session_callbacks"],NGHTTP2_MAX_WINDOW_SIZE:[3,1,1,"c.NGHTTP2_MAX_WINDOW_SIZE"],NGHTTP2_ERR_TOO_MANY_INFLIGHT_SETTINGS:[3,1,1,"c.NGHTTP2_ERR_TOO_MANY_INFLIGHT_SETTINGS"],NGHTTP2_ERR_PROTO:[3,1,1,"c.NGHTTP2_ERR_PROTO"],NGHTTP2_MAX_HEADER_TABLE_SIZE:[3,1,1,"c.NGHTTP2_MAX_HEADER_TABLE_SIZE"],nghttp2_submit_window_update:[3,2,1,"c.nghttp2_submit_window_update"],NGHTTP2_ERR_UNSUPPORTED_VERSION:[3,1,1,"c.NGHTTP2_ERR_UNSUPPORTED_VERSION"],nghttp2_option:[3,3,1,"c.nghttp2_option"],NGHTTP2_SETTINGS_ENABLE_PUSH:[3,1,1,"c.NGHTTP2_SETTINGS_ENABLE_PUSH"],nghttp2_window_update:[3,3,1,"c.nghttp2_window_update"],nghttp2_session_client_new2:[3,2,1,"c.nghttp2_session_client_new2"],NGHTTP2_DATA:[3,1,1,"c.NGHTTP2_DATA"],nghttp2_nv_flag:[3,3,1,"c.nghttp2_nv_flag"],nghttp2_on_header_callback:[3,3,1,"c.nghttp2_on_header_callback"],NGHTTP2_FLAG_ACK:[3,1,1,"c.NGHTTP2_FLAG_ACK"],NGHTTP2_STREAM_CLOSED:[3,1,1,"c.NGHTTP2_STREAM_CLOSED"],NGHTTP2_SETTINGS_MAX:[3,1,1,"c.NGHTTP2_SETTINGS_MAX"],NGHTTP2_NV_FLAG_NO_INDEX:[3,1,1,"c.NGHTTP2_NV_FLAG_NO_INDEX"],nghttp2_headers_category:[3,3,1,"c.nghttp2_headers_category"],nghttp2_session_mem_send:[3,2,1,"c.nghttp2_session_mem_send"],nghttp2_error_code:[3,3,1,"c.nghttp2_error_code"],nghttp2_send_callback:[3,3,1,"c.nghttp2_send_callback"],nghttp2_on_data_chunk_recv_callback:[3,3,1,"c.nghttp2_on_data_chunk_recv_callback"],NGHTTP2_FLAG_PRIORITY_GROUP:[3,1,1,"c.NGHTTP2_FLAG_PRIORITY_GROUP"],NGHTTP2_ERR_START_STREAM_NOT_ALLOWED:[3,1,1,"c.NGHTTP2_ERR_START_STREAM_NOT_ALLOWED"],NGHTTP2_ERR_FLOW_CONTROL:[3,1,1,"c.NGHTTP2_ERR_FLOW_CONTROL"],nghttp2_strerror:[3,2,1,"c.nghttp2_strerror"],nghttp2_priority_type:[3,3,1,"c.nghttp2_priority_type"],nghttp2_gzip_inflate_del:[3,2,1,"c.nghttp2_gzip_inflate_del"],NGHTTP2_ERR_FATAL:[3,1,1,"c.NGHTTP2_ERR_FATAL"],nghttp2_submit_goaway:[3,2,1,"c.nghttp2_submit_goaway"],nghttp2_error:[3,3,1,"c.nghttp2_error"],NGHTTP2_INITIAL_CONNECTION_WINDOW_SIZE:[3,1,1,"c.NGHTTP2_INITIAL_CONNECTION_WINDOW_SIZE"],NGHTTP2_ERR_NOMEM:[3,1,1,"c.NGHTTP2_ERR_NOMEM"],NGHTTP2_ERR_PAUSE:[3,1,1,"c.NGHTTP2_ERR_PAUSE"],NGHTTP2_ENHANCE_YOUR_CALM:[3,1,1,"c.NGHTTP2_ENHANCE_YOUR_CALM"],NGHTTP2_ERR_PUSH_DISABLED:[3,1,1,"c.NGHTTP2_ERR_PUSH_DISABLED"],NGHTTP2_NO_ERROR:[3,1,1,"c.NGHTTP2_NO_ERROR"],nghttp2_select_padding_callback:[3,3,1,"c.nghttp2_select_padding_callback"],nghttp2_session_get_effective_recv_data_length:[3,2,1,"c.nghttp2_session_get_effective_recv_data_length"],NGHTTP2_PRIORITY_TYPE_GROUP:[3,1,1,"c.NGHTTP2_PRIORITY_TYPE_GROUP"],nghttp2_session_server_new2:[3,2,1,"c.nghttp2_session_server_new2"],NGHTTP2_ERR_DEFERRED:[3,1,1,"c.NGHTTP2_ERR_DEFERRED"],nghttp2_push_promise:[3,3,1,"c.nghttp2_push_promise"],nghttp2_priority_group:[3,3,1,"c.nghttp2_priority_group"],nghttp2_session_get_outbound_queue_size:[3,2,1,"c.nghttp2_session_get_outbound_queue_size"],NGHTTP2_PROTO_VERSION_ID_LEN:[3,1,1,"c.NGHTTP2_PROTO_VERSION_ID_LEN"],NGHTTP2_INITIAL_MAX_CONCURRENT_STREAMS:[3,1,1,"c.NGHTTP2_INITIAL_MAX_CONCURRENT_STREAMS"],nghttp2_data_source_read_callback:[3,3,1,"c.nghttp2_data_source_read_callback"],nghttp2_session_terminate_session:[3,2,1,"c.nghttp2_session_terminate_session"],NGHTTP2_SETTINGS_TIMEOUT:[3,1,1,"c.NGHTTP2_SETTINGS_TIMEOUT"],NGHTTP2_ERR_WOULDBLOCK:[3,1,1,"c.NGHTTP2_ERR_WOULDBLOCK"],nghttp2_submit_push_promise:[3,2,1,"c.nghttp2_submit_push_promise"],nghttp2_session_resume_data:[3,2,1,"c.nghttp2_session_resume_data"],NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE:[3,1,1,"c.NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE"],nghttp2_session_server_new:[3,2,1,"c.nghttp2_session_server_new"],NGHTTP2_WINDOW_UPDATE:[3,1,1,"c.NGHTTP2_WINDOW_UPDATE"],NGHTTP2_CONTINUATION:[3,1,1,"c.NGHTTP2_CONTINUATION"],nghttp2_rst_stream:[3,3,1,"c.nghttp2_rst_stream"],NGHTTP2_ERR_INVALID_ARGUMENT:[3,1,1,"c.NGHTTP2_ERR_INVALID_ARGUMENT"],NGHTTP2_ERR_FRAME_SIZE_ERROR:[3,1,1,"c.NGHTTP2_ERR_FRAME_SIZE_ERROR"],nghttp2_on_begin_headers_callback:[3,3,1,"c.nghttp2_on_begin_headers_callback"],NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN:[3,1,1,"c.NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN"],NGHTTP2_HEADERS:[3,1,1,"c.NGHTTP2_HEADERS"],nghttp2_flag:[3,3,1,"c.nghttp2_flag"],NGHTTP2_DEFAULT_WEIGHT:[3,1,1,"c.NGHTTP2_DEFAULT_WEIGHT"],NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS:[3,1,1,"c.NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS"],NGHTTP2_HCAT_REQUEST:[3,1,1,"c.NGHTTP2_HCAT_REQUEST"],NGHTTP2_FLAG_END_HEADERS:[3,1,1,"c.NGHTTP2_FLAG_END_HEADERS"],nghttp2_gzip:[3,3,1,"c.nghttp2_gzip"],NGHTTP2_RST_STREAM:[3,1,1,"c.NGHTTP2_RST_STREAM"],nghttp2_option_set_peer_max_concurrent_streams:[3,2,1,"c.nghttp2_option_set_peer_max_concurrent_streams"],NGHTTP2_ERR_EOF:[3,1,1,"c.NGHTTP2_ERR_EOF"],NGHTTP2_HCAT_HEADERS:[3,1,1,"c.NGHTTP2_HCAT_HEADERS"],NGHTTP2_VERSION_NUM:[3,1,1,"c.NGHTTP2_VERSION_NUM"],NGHTTP2_SETTINGS:[3,1,1,"c.NGHTTP2_SETTINGS"],nghttp2_frame:[3,3,1,"c.nghttp2_frame"],NGHTTP2_FLAG_END_SEGMENT:[3,1,1,"c.NGHTTP2_FLAG_END_SEGMENT"],NGHTTP2_ERR_DEFERRED_DATA_EXIST:[3,1,1,"c.NGHTTP2_ERR_DEFERRED_DATA_EXIST"],NGHTTP2_CANCEL:[3,1,1,"c.NGHTTP2_CANCEL"],NGHTTP2_REFUSED_STREAM:[3,1,1,"c.NGHTTP2_REFUSED_STREAM"],nghttp2_on_frame_send_callback:[3,3,1,"c.nghttp2_on_frame_send_callback"],nghttp2_session_mem_recv:[3,2,1,"c.nghttp2_session_mem_recv"],NGHTTP2_VERSION:[3,1,1,"c.NGHTTP2_VERSION"],NGHTTP2_FLAG_PAD_HIGH:[3,1,1,"c.NGHTTP2_FLAG_PAD_HIGH"],nghttp2_session:[3,3,1,"c.nghttp2_session"],NGHTTP2_COMPRESSION_ERROR:[3,1,1,"c.NGHTTP2_COMPRESSION_ERROR"],NGHTTP2_HCAT_PUSH_RESPONSE:[3,1,1,"c.NGHTTP2_HCAT_PUSH_RESPONSE"],NGHTTP2_CLEARTEXT_PROTO_VERSION_ID:[3,1,1,"c.NGHTTP2_CLEARTEXT_PROTO_VERSION_ID"],nghttp2_submit_rst_stream:[3,2,1,"c.nghttp2_submit_rst_stream"],nghttp2_submit_headers:[3,2,1,"c.nghttp2_submit_headers"],nghttp2_recv_callback:[3,3,1,"c.nghttp2_recv_callback"],nghttp2_priority_spec_dep_init:[3,2,1,"c.nghttp2_priority_spec_dep_init"],nghttp2_session_get_stream_user_data:[3,2,1,"c.nghttp2_session_get_stream_user_data"],NGHTTP2_PRIORITY_TYPE_DEP:[3,1,1,"c.NGHTTP2_PRIORITY_TYPE_DEP"],nghttp2_nv:[3,3,1,"c.nghttp2_nv"],nghttp2_altsvc:[3,3,1,"c.nghttp2_altsvc"],nghttp2_on_invalid_frame_recv_callback:[3,3,1,"c.nghttp2_on_invalid_frame_recv_callback"],nghttp2_version:[3,2,1,"c.nghttp2_version"],nghttp2_session_want_write:[3,2,1,"c.nghttp2_session_want_write"],nghttp2_on_unknown_frame_recv_callback:[3,3,1,"c.nghttp2_on_unknown_frame_recv_callback"],NGHTTP2_CLIENT_CONNECTION_PREFACE:[3,1,1,"c.NGHTTP2_CLIENT_CONNECTION_PREFACE"],NGHTTP2_ERR_STREAM_CLOSED:[3,1,1,"c.NGHTTP2_ERR_STREAM_CLOSED"],NGHTTP2_ERR_CALLBACK_FAILURE:[3,1,1,"c.NGHTTP2_ERR_CALLBACK_FAILURE"],NGHTTP2_ERR_GOAWAY_ALREADY_SENT:[3,1,1,"c.NGHTTP2_ERR_GOAWAY_ALREADY_SENT"],NGHTTP2_FLOW_CONTROL_ERROR:[3,1,1,"c.NGHTTP2_FLOW_CONTROL_ERROR"],NGHTTP2_CLEARTEXT_PROTO_VERSION_ID_LEN:[3,1,1,"c.NGHTTP2_CLEARTEXT_PROTO_VERSION_ID_LEN"],nghttp2_session_set_stream_user_data:[3,2,1,"c.nghttp2_session_set_stream_user_data"],nghttp2_check_header_value:[3,2,1,"c.nghttp2_check_header_value"],NGHTTP2_ERR_STREAM_CLOSING:[3,1,1,"c.NGHTTP2_ERR_STREAM_CLOSING"],NGHTTP2_INADEQUATE_SECURITY:[3,1,1,"c.NGHTTP2_INADEQUATE_SECURITY"],nghttp2_session_client_new:[3,2,1,"c.nghttp2_session_client_new"],nghttp2_check_header_name:[3,2,1,"c.nghttp2_check_header_name"],nghttp2_info:[3,3,1,"c.nghttp2_info"],NGHTTP2_PROTO_VERSION_ID:[3,1,1,"c.NGHTTP2_PROTO_VERSION_ID"],nghttp2_settings_id:[3,3,1,"c.nghttp2_settings_id"],NGHTTP2_DATA_FLAG_EOF:[3,1,1,"c.NGHTTP2_DATA_FLAG_EOF"],NGHTTP2_PRIORITY_TYPE_NONE:[3,1,1,"c.NGHTTP2_PRIORITY_TYPE_NONE"],nghttp2_session_send:[3,2,1,"c.nghttp2_session_send"],NGHTTP2_PROTOCOL_ERROR:[3,1,1,"c.NGHTTP2_PROTOCOL_ERROR"],nghttp2_gzip_inflate:[3,2,1,"c.nghttp2_gzip_inflate"],nghttp2_session_upgrade:[3,2,1,"c.nghttp2_session_upgrade"],nghttp2_session_del:[3,2,1,"c.nghttp2_session_del"],NGHTTP2_ERR_INSUFF_BUFSIZE:[3,1,1,"c.NGHTTP2_ERR_INSUFF_BUFSIZE"],nghttp2_settings:[3,3,1,"c.nghttp2_settings"],nghttp2_on_frame_not_send_callback:[3,3,1,"c.nghttp2_on_frame_not_send_callback"],nghttp2_option_set_no_auto_connection_window_update:[3,2,1,"c.nghttp2_option_set_no_auto_connection_window_update"],nghttp2_submit_data:[3,2,1,"c.nghttp2_submit_data"],nghttp2_session_get_stream_remote_window_size:[3,2,1,"c.nghttp2_session_get_stream_remote_window_size"],NGHTTP2_CLIENT_CONNECTION_HEADER:[3,1,1,"c.NGHTTP2_CLIENT_CONNECTION_HEADER"],NGHTTP2_FLAG_NONE:[3,1,1,"c.NGHTTP2_FLAG_NONE"],nghttp2_priority_spec_group_init:[3,2,1,"c.nghttp2_priority_spec_group_init"],nghttp2_option_del:[3,2,1,"c.nghttp2_option_del"],nghttp2_submit_altsvc:[3,2,1,"c.nghttp2_submit_altsvc"],NGHTTP2_DATA_FLAG_NONE:[3,1,1,"c.NGHTTP2_DATA_FLAG_NONE"],NGHTTP2_NV_FLAG_NONE:[3,1,1,"c.NGHTTP2_NV_FLAG_NONE"],nghttp2_submit_settings:[3,2,1,"c.nghttp2_submit_settings"],nghttp2_is_fatal:[3,2,1,"c.nghttp2_is_fatal"],NGHTTP2_PING:[3,1,1,"c.NGHTTP2_PING"],NGHTTP2_MAX_WEIGHT:[3,1,1,"c.NGHTTP2_MAX_WEIGHT"],nghttp2_priority:[3,3,1,"c.nghttp2_priority"],nghttp2_session_want_read:[3,2,1,"c.nghttp2_session_want_read"],NGHTTP2_VERSION_AGE:[3,1,1,"c.NGHTTP2_VERSION_AGE"],NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE:[3,1,1,"c.NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE"],NGHTTP2_CONNECT_ERROR:[3,1,1,"c.NGHTTP2_CONNECT_ERROR"],NGHTTP2_FLAG_END_STREAM:[3,1,1,"c.NGHTTP2_FLAG_END_STREAM"],nghttp2_on_stream_close_callback:[3,3,1,"c.nghttp2_on_stream_close_callback"],NGHTTP2_PUSH_PROMISE:[3,1,1,"c.NGHTTP2_PUSH_PROMISE"],nghttp2_data_provider:[3,3,1,"c.nghttp2_data_provider"],NGHTTP2_ERR_DATA_EXIST:[3,1,1,"c.NGHTTP2_ERR_DATA_EXIST"],nghttp2_session_recv:[3,2,1,"c.nghttp2_session_recv"],nghttp2_option_new:[3,2,1,"c.nghttp2_option_new"],nghttp2_session_get_effective_local_window_size:[3,2,1,"c.nghttp2_session_get_effective_local_window_size"],NGHTTP2_INITIAL_WINDOW_SIZE:[3,1,1,"c.NGHTTP2_INITIAL_WINDOW_SIZE"],NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE:[3,1,1,"c.NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE"],NGHTTP2_HCAT_RESPONSE:[3,1,1,"c.NGHTTP2_HCAT_RESPONSE"],nghttp2_submit_priority:[3,2,1,"c.nghttp2_submit_priority"],nghttp2_session_get_stream_effective_local_window_size:[3,2,1,"c.nghttp2_session_get_stream_effective_local_window_size"],nghttp2_priority_dep:[3,3,1,"c.nghttp2_priority_dep"],nghttp2_headers:[3,3,1,"c.nghttp2_headers"],nghttp2_before_frame_send_callback:[3,3,1,"c.nghttp2_before_frame_send_callback"],NGHTTP2_GOAWAY:[3,1,1,"c.NGHTTP2_GOAWAY"],NGHTTP2_ERR_GZIP:[3,1,1,"c.NGHTTP2_ERR_GZIP"],NGHTTP2_MIN_WEIGHT:[3,1,1,"c.NGHTTP2_MIN_WEIGHT"],NGHTTP2_FLAG_PAD_LOW:[3,1,1,"c.NGHTTP2_FLAG_PAD_LOW"],nghttp2_submit_ping:[3,2,1,"c.nghttp2_submit_ping"],NGHTTP2_FRAME_SIZE_ERROR:[3,1,1,"c.NGHTTP2_FRAME_SIZE_ERROR"],nghttp2_data_source:[3,3,1,"c.nghttp2_data_source"],NGHTTP2_ERR_STREAM_SHUT_WR:[3,1,1,"c.NGHTTP2_ERR_STREAM_SHUT_WR"],nghttp2_submit_response:[3,2,1,"c.nghttp2_submit_response"],NGHTTP2_PRIORITY:[3,1,1,"c.NGHTTP2_PRIORITY"],nghttp2_submit_request:[3,2,1,"c.nghttp2_submit_request"],nghttp2_session_get_stream_effective_recv_data_length:[3,2,1,"c.nghttp2_session_get_stream_effective_recv_data_length"],nghttp2_pack_settings_payload:[3,2,1,"c.nghttp2_pack_settings_payload"],nghttp2_data:[3,3,1,"c.nghttp2_data"],nghttp2_gzip_inflate_new:[3,2,1,"c.nghttp2_gzip_inflate_new"],nghttp2_nv_compare_name:[3,2,1,"c.nghttp2_nv_compare_name"]},nghttp2_frame:{push_promise:[3,0,1,"c.nghttp2_frame.push_promise"],settings:[3,0,1,"c.nghttp2_frame.settings"],ping:[3,0,1,"c.nghttp2_frame.ping"],rst_stream:[3,0,1,"c.nghttp2_frame.rst_stream"],priority:[3,0,1,"c.nghttp2_frame.priority"],headers:[3,0,1,"c.nghttp2_frame.headers"],goaway:[3,0,1,"c.nghttp2_frame.goaway"],window_update:[3,0,1,"c.nghttp2_frame.window_update"],data:[3,0,1,"c.nghttp2_frame.data"],hd:[3,0,1,"c.nghttp2_frame.hd"],altsvc:[3,0,1,"c.nghttp2_frame.altsvc"]},nghttp2_settings_entry:{settings_id:[3,0,1,"c.nghttp2_settings_entry.settings_id"],value:[3,0,1,"c.nghttp2_settings_entry.value"]},nghttp2_window_update:{hd:[3,0,1,"c.nghttp2_window_update.hd"],window_size_increment:[3,0,1,"c.nghttp2_window_update.window_size_increment"]},nghttp2_frame_hd:{stream_id:[3,0,1,"c.nghttp2_frame_hd.stream_id"],length:[3,0,1,"c.nghttp2_frame_hd.length"],flags:[3,0,1,"c.nghttp2_frame_hd.flags"],type:[3,0,1,"c.nghttp2_frame_hd.type"]},nghttp2_push_promise:{padlen:[3,0,1,"c.nghttp2_push_promise.padlen"],nvlen:[3,0,1,"c.nghttp2_push_promise.nvlen"],promised_stream_id:[3,0,1,"c.nghttp2_push_promise.promised_stream_id"],hd:[3,0,1,"c.nghttp2_push_promise.hd"],nva:[3,0,1,"c.nghttp2_push_promise.nva"]},nghttp2_priority_group:{pri_group_id:[3,0,1,"c.nghttp2_priority_group.pri_group_id"],weight:[3,0,1,"c.nghttp2_priority_group.weight"]},nghttp2_ping:{hd:[3,0,1,"c.nghttp2_ping.hd"]},nghttp2_priority:{pri_spec:[3,0,1,"c.nghttp2_priority.pri_spec"],hd:[3,0,1,"c.nghttp2_priority.hd"]},nghttp2_priority_spec:{dep:[3,0,1,"c.nghttp2_priority_spec.dep"],pri_type:[3,0,1,"c.nghttp2_priority_spec.pri_type"],group:[3,0,1,"c.nghttp2_priority_spec.group"]},nghttp2_nv:{valuelen:[3,0,1,"c.nghttp2_nv.valuelen"],namelen:[3,0,1,"c.nghttp2_nv.namelen"],flags:[3,0,1,"c.nghttp2_nv.flags"],name:[3,0,1,"c.nghttp2_nv.name"],value:[3,0,1,"c.nghttp2_nv.value"]},nghttp2_altsvc:{origin:[3,0,1,"c.nghttp2_altsvc.origin"],max_age:[3,0,1,"c.nghttp2_altsvc.max_age"],protocol_id:[3,0,1,"c.nghttp2_altsvc.protocol_id"],origin_len:[3,0,1,"c.nghttp2_altsvc.origin_len"],host:[3,0,1,"c.nghttp2_altsvc.host"],protocol_id_len:[3,0,1,"c.nghttp2_altsvc.protocol_id_len"],host_len:[3,0,1,"c.nghttp2_altsvc.host_len"],port:[3,0,1,"c.nghttp2_altsvc.port"],hd:[3,0,1,"c.nghttp2_altsvc.hd"]},nghttp2_session_callbacks:{on_invalid_frame_recv_callback:[3,0,1,"c.nghttp2_session_callbacks.on_invalid_frame_recv_callback"],before_frame_send_callback:[3,0,1,"c.nghttp2_session_callbacks.before_frame_send_callback"],on_stream_close_callback:[3,0,1,"c.nghttp2_session_callbacks.on_stream_close_callback"],on_data_chunk_recv_callback:[3,0,1,"c.nghttp2_session_callbacks.on_data_chunk_recv_callback"],on_begin_headers_callback:[3,0,1,"c.nghttp2_session_callbacks.on_begin_headers_callback"],send_callback:[3,0,1,"c.nghttp2_session_callbacks.send_callback"],on_unknown_frame_recv_callback:[3,0,1,"c.nghttp2_session_callbacks.on_unknown_frame_recv_callback"],on_header_callback:[3,0,1,"c.nghttp2_session_callbacks.on_header_callback"],on_frame_recv_callback:[3,0,1,"c.nghttp2_session_callbacks.on_frame_recv_callback"],select_padding_callback:[3,0,1,"c.nghttp2_session_callbacks.select_padding_callback"],on_frame_not_send_callback:[3,0,1,"c.nghttp2_session_callbacks.on_frame_not_send_callback"],on_frame_send_callback:[3,0,1,"c.nghttp2_session_callbacks.on_frame_send_callback"],recv_callback:[3,0,1,"c.nghttp2_session_callbacks.recv_callback"]},nghttp2_data_provider:{source:[3,0,1,"c.nghttp2_data_provider.source"],read_callback:[3,0,1,"c.nghttp2_data_provider.read_callback"]},nghttp2_rst_stream:{error_code:[3,0,1,"c.nghttp2_rst_stream.error_code"],hd:[3,0,1,"c.nghttp2_rst_stream.hd"]},nghttp2_priority_dep:{exclusive:[3,0,1,"c.nghttp2_priority_dep.exclusive"],stream_id:[3,0,1,"c.nghttp2_priority_dep.stream_id"]},nghttp2_headers:{pri_spec:[3,0,1,"c.nghttp2_headers.pri_spec"],nvlen:[3,0,1,"c.nghttp2_headers.nvlen"],cat:[3,0,1,"c.nghttp2_headers.cat"],padlen:[3,0,1,"c.nghttp2_headers.padlen"],nva:[3,0,1,"c.nghttp2_headers.nva"],hd:[3,0,1,"c.nghttp2_headers.hd"]},nghttp2_goaway:{opaque_data:[3,0,1,"c.nghttp2_goaway.opaque_data"],error_code:[3,0,1,"c.nghttp2_goaway.error_code"],opaque_data_len:[3,0,1,"c.nghttp2_goaway.opaque_data_len"],hd:[3,0,1,"c.nghttp2_goaway.hd"],last_stream_id:[3,0,1,"c.nghttp2_goaway.last_stream_id"]},nghttp2_info:{age:[3,0,1,"c.nghttp2_info.age"],version_str:[3,0,1,"c.nghttp2_info.version_str"],version_num:[3,0,1,"c.nghttp2_info.version_num"],proto_str:[3,0,1,"c.nghttp2_info.proto_str"]},nghttp2_data:{padlen:[3,0,1,"c.nghttp2_data.padlen"]},nghttp2_data_source:{fd:[3,0,1,"c.nghttp2_data_source.fd"],ptr:[3,0,1,"c.nghttp2_data_source.ptr"]},nghttp2_settings:{niv:[3,0,1,"c.nghttp2_settings.niv"],hd:[3,0,1,"c.nghttp2_settings.hd"],iv:[3,0,1,"c.nghttp2_settings.iv"]}},titleterms:{version:0,header:4,api:3,http:[0,4,5,2],librari:[0,4],statu:4,git:4,develop:4,struct:3,union:3,libev:[2,5],client:[4,5],nghttp2:[0,6,4],program:4,build:4,test:4,document:4,type:3,"public":4,refer:3,"function":3,resourc:0,proxi:4,python:4,remark:3,tool:4,"enum":3,benchmark:4,typedef:3,compressor:4,releas:0,from:4,decompressor:4,nghttp2ver:1,nghttpd:4,macro:3,nghttp:4,requir:4,server:[2,4],inflatehd:4,tutori:[2,5],deflatehd:4,includ:3,hpack:4,bind:4,nghttpx:4}}) \ No newline at end of file