Commit 792938d4 authored by Tatsuhiro Tsujikawa's avatar Tatsuhiro Tsujikawa

Update doc

parent 9b3d5a8b
...@@ -70,7 +70,7 @@ struct nghttp2_session; ...@@ -70,7 +70,7 @@ struct nghttp2_session;
* @struct * @struct
* *
* The primary structure to hold the resources needed for a HTTP/2 * 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. * from the public API.
*/ */
typedef struct nghttp2_session nghttp2_session; typedef struct nghttp2_session nghttp2_session;
...@@ -85,12 +85,12 @@ typedef struct nghttp2_session nghttp2_session; ...@@ -85,12 +85,12 @@ typedef struct nghttp2_session nghttp2_session;
/** /**
* @struct * @struct
* *
* This struct is what `nghttp2_version()` returns. It holds * This struct is what `nghttp2_version()` returns. It holds
* information about the particular nghttp2 version. * information about the particular nghttp2 version.
*/ */
typedef struct { typedef struct {
/** /**
* Age of this struct. This instance of nghttp2 sets it to * Age of this struct. This instance of nghttp2 sets it to
* :macro:`NGHTTP2_VERSION_AGE` but a future version may bump it and * :macro:`NGHTTP2_VERSION_AGE` but a future version may bump it and
* add more struct fields at the bottom * add more struct fields at the bottom
*/ */
...@@ -193,7 +193,7 @@ typedef struct { ...@@ -193,7 +193,7 @@ typedef struct {
/** /**
* @enum * @enum
* *
* 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: * inclusive. The following values are defined:
*/ */
typedef enum { typedef enum {
...@@ -226,12 +226,12 @@ typedef enum { ...@@ -226,12 +226,12 @@ typedef enum {
/** /**
* Used as a return value from * Used as a return value from
* :func:`nghttp2_data_source_read_callback` to indicate that data * :func:`nghttp2_data_source_read_callback` to indicate that data
* transfer is postponed. See * transfer is postponed. See
* :func:`nghttp2_data_source_read_callback` for details. * :func:`nghttp2_data_source_read_callback` for details.
*/ */
NGHTTP2_ERR_DEFERRED = -508, NGHTTP2_ERR_DEFERRED = -508,
/** /**
* Stream ID has reached the maximum value. Therefore no stream ID * Stream ID has reached the maximum value. Therefore no stream ID
* is available. * is available.
*/ */
NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE = -509, NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE = -509,
...@@ -240,8 +240,8 @@ typedef enum { ...@@ -240,8 +240,8 @@ typedef enum {
*/ */
NGHTTP2_ERR_STREAM_CLOSED = -510, NGHTTP2_ERR_STREAM_CLOSED = -510,
/** /**
* RST_STREAM has been added to the outbound queue. The stream is in * RST_STREAM has been added to the outbound queue. The stream is
* closing state. * in closing state.
*/ */
NGHTTP2_ERR_STREAM_CLOSING = -511, NGHTTP2_ERR_STREAM_CLOSING = -511,
/** /**
...@@ -263,8 +263,8 @@ typedef enum { ...@@ -263,8 +263,8 @@ typedef enum {
*/ */
NGHTTP2_ERR_DEFERRED_DATA_EXIST = -515, NGHTTP2_ERR_DEFERRED_DATA_EXIST = -515,
/** /**
* Starting new stream is not allowed. (e.g., GOAWAY has been sent * Starting new stream is not allowed (e.g., GOAWAY has been sent
* and/or received. * and/or received).
*/ */
NGHTTP2_ERR_START_STREAM_NOT_ALLOWED = -516, NGHTTP2_ERR_START_STREAM_NOT_ALLOWED = -516,
/** /**
...@@ -272,11 +272,11 @@ typedef enum { ...@@ -272,11 +272,11 @@ typedef enum {
*/ */
NGHTTP2_ERR_GOAWAY_ALREADY_SENT = -517, NGHTTP2_ERR_GOAWAY_ALREADY_SENT = -517,
/** /**
* The received frame contains the invalid header block. (e.g., * The received frame contains the invalid header block (e.g., There
* There are duplicate header names; or the header names are not * are duplicate header names; or the header names are not encoded
* encoded in US-ASCII character set and not lower cased; or the * in US-ASCII character set and not lower cased; or the header name
* header name is zero-length string; or the header value contains * is zero-length string; or the header value contains multiple
* multiple in-sequence NUL bytes). * in-sequence NUL bytes).
*/ */
NGHTTP2_ERR_INVALID_HEADER_BLOCK = -518, NGHTTP2_ERR_INVALID_HEADER_BLOCK = -518,
/** /**
...@@ -328,16 +328,19 @@ typedef enum { ...@@ -328,16 +328,19 @@ typedef enum {
NGHTTP2_ERR_DATA_EXIST = -529, NGHTTP2_ERR_DATA_EXIST = -529,
/** /**
* The errors < :enum:`NGHTTP2_ERR_FATAL` mean that the library is * The errors < :enum:`NGHTTP2_ERR_FATAL` mean that the library is
* under unexpected condition and cannot process any further data * under unexpected condition and processing was terminated (e.g.,
* reliably (e.g., out of memory). * out of memory). If application receives this error code, it must
* stop using that :type:`nghttp2_session` object and only allowed
* operation for that object is deallocate it using
* `nghttp2_session_del()`.
*/ */
NGHTTP2_ERR_FATAL = -900, NGHTTP2_ERR_FATAL = -900,
/** /**
* Out of memory. This is a fatal error. * Out of memory. This is a fatal error.
*/ */
NGHTTP2_ERR_NOMEM = -901, NGHTTP2_ERR_NOMEM = -901,
/** /**
* The user callback function failed. This is a fatal error. * The user callback function failed. This is a fatal error.
*/ */
NGHTTP2_ERR_CALLBACK_FAILURE = -902 NGHTTP2_ERR_CALLBACK_FAILURE = -902
} nghttp2_error; } nghttp2_error;
...@@ -446,8 +449,8 @@ typedef enum { ...@@ -446,8 +449,8 @@ typedef enum {
/** /**
* @enum * @enum
* *
* The flags for HTTP/2 frames. This enum defines all flags for * The flags for HTTP/2 frames. This enum defines all flags for all
* frames, assuming that the same flag name has the same mask. * frames.
*/ */
typedef enum { typedef enum {
/** /**
...@@ -594,7 +597,7 @@ typedef struct { ...@@ -594,7 +597,7 @@ typedef struct {
*/ */
int32_t stream_id; int32_t stream_id;
/** /**
* The type of this frame. See `nghttp2_frame`. * The type of this frame. See `nghttp2_frame`.
*/ */
uint8_t type; uint8_t type;
/** /**
...@@ -642,22 +645,22 @@ typedef enum { ...@@ -642,22 +645,22 @@ typedef enum {
* @functypedef * @functypedef
* *
* Callback function invoked when the library wants to read data from * Callback function invoked when the library wants to read data from
* the |source|. The read data is sent in the stream |stream_id|. The * the |source|. The read data is sent in the stream |stream_id|.
* implementation of this function must read at most |length| bytes of * The implementation of this function must read at most |length|
* data from |source| (or possibly other places) and store them in * bytes of data from |source| (or possibly other places) and store
* |buf| and return number of data stored in |buf|. If EOF is reached, * them in |buf| and return number of data stored in |buf|. If EOF is
* set :enum:`NGHTTP2_DATA_FLAG_EOF` flag in |*data_falgs|. If the * reached, set :enum:`NGHTTP2_DATA_FLAG_EOF` flag in |*data_falgs|.
* application wants to postpone DATA frames, (e.g., asynchronous I/O, * If the application wants to postpone DATA frames (e.g.,
* or reading data blocks for long time), it is achieved by returning * asynchronous I/O, or reading data blocks for long time), it is
* :enum:`NGHTTP2_ERR_DEFERRED` without reading any data in this * achieved by returning :enum:`NGHTTP2_ERR_DEFERRED` without reading
* invocation. The library removes DATA frame from the outgoing queue * any data in this invocation. The library removes DATA frame from
* temporarily. To move back deferred DATA frame to outgoing queue, * the outgoing queue temporarily. To move back deferred DATA frame
* call `nghttp2_session_resume_data()`. In case of error, there are * to outgoing queue, call `nghttp2_session_resume_data()`. In case
* 2 choices. Returning :enum:`NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE` * of error, there are 2 choices. Returning
* will close the stream by issuing RST_STREAM with * :enum:`NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE` will close the stream
* :enum:`NGHTTP2_INTERNAL_ERROR`. Returning * by issuing RST_STREAM with :enum:`NGHTTP2_INTERNAL_ERROR`.
* :enum:`NGHTTP2_ERR_CALLBACK_FAILURE` will signal the entire session * Returning :enum:`NGHTTP2_ERR_CALLBACK_FAILURE` will signal the
* failure. * entire session failure.
*/ */
typedef ssize_t (*nghttp2_data_source_read_callback) typedef ssize_t (*nghttp2_data_source_read_callback)
(nghttp2_session *session, int32_t stream_id, (nghttp2_session *session, int32_t stream_id,
...@@ -684,13 +687,13 @@ typedef struct { ...@@ -684,13 +687,13 @@ typedef struct {
/** /**
* @struct * @struct
* *
* The DATA frame. The received data is delivered via * The DATA frame. The received data is delivered via
* :type:`nghttp2_on_data_chunk_recv_callback`. * :type:`nghttp2_on_data_chunk_recv_callback`.
*/ */
typedef struct { typedef struct {
nghttp2_frame_hd hd; nghttp2_frame_hd hd;
/** /**
* 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. * and PAD_LOW.
*/ */
size_t padlen; size_t padlen;
...@@ -699,9 +702,9 @@ typedef struct { ...@@ -699,9 +702,9 @@ typedef struct {
/** /**
* @enum * @enum
* *
* 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 * 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 * application the role of incoming HEADERS frame, we define several
* categories. * categories.
*/ */
...@@ -819,7 +822,8 @@ typedef struct { ...@@ -819,7 +822,8 @@ typedef struct {
/** /**
* @struct * @struct
* The HEADERS frame. It has the following members: *
* The HEADERS frame. It has the following members:
*/ */
typedef struct { typedef struct {
/** /**
...@@ -827,7 +831,7 @@ typedef struct { ...@@ -827,7 +831,7 @@ typedef struct {
*/ */
nghttp2_frame_hd hd; nghttp2_frame_hd hd;
/** /**
* 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. * and PAD_LOW.
*/ */
size_t padlen; size_t padlen;
...@@ -851,7 +855,8 @@ typedef struct { ...@@ -851,7 +855,8 @@ typedef struct {
/** /**
* @struct * @struct
* The PRIORITY frame. It has the following members: *
* The PRIORITY frame. It has the following members:
*/ */
typedef struct { typedef struct {
/** /**
...@@ -866,7 +871,8 @@ typedef struct { ...@@ -866,7 +871,8 @@ typedef struct {
/** /**
* @struct * @struct
* The RST_STREAM frame. It has the following members: *
* The RST_STREAM frame. It has the following members:
*/ */
typedef struct { typedef struct {
/** /**
...@@ -874,18 +880,19 @@ typedef struct { ...@@ -874,18 +880,19 @@ typedef struct {
*/ */
nghttp2_frame_hd hd; nghttp2_frame_hd hd;
/** /**
* The error code. See :type:`nghttp2_error_code`. * The error code. See :type:`nghttp2_error_code`.
*/ */
nghttp2_error_code error_code; nghttp2_error_code error_code;
} nghttp2_rst_stream; } nghttp2_rst_stream;
/** /**
* @struct * @struct
* The SETTINGS ID/Value pair. It has the following members: *
* The SETTINGS ID/Value pair. It has the following members:
*/ */
typedef struct { typedef struct {
/** /**
* The SETTINGS ID. See :type:`nghttp2_settings_id`. * The SETTINGS ID. See :type:`nghttp2_settings_id`.
*/ */
int32_t settings_id; int32_t settings_id;
/** /**
...@@ -896,7 +903,8 @@ typedef struct { ...@@ -896,7 +903,8 @@ typedef struct {
/** /**
* @struct * @struct
* The SETTINGS frame. It has the following members: *
* The SETTINGS frame. It has the following members:
*/ */
typedef struct { typedef struct {
/** /**
...@@ -915,7 +923,8 @@ typedef struct { ...@@ -915,7 +923,8 @@ typedef struct {
/** /**
* @struct * @struct
* The PUSH_PROMISE frame. It has the following members: *
* The PUSH_PROMISE frame. It has the following members:
*/ */
typedef struct { typedef struct {
/** /**
...@@ -923,7 +932,7 @@ typedef struct { ...@@ -923,7 +932,7 @@ typedef struct {
*/ */
nghttp2_frame_hd hd; nghttp2_frame_hd hd;
/** /**
* 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. * and PAD_LOW.
*/ */
size_t padlen; size_t padlen;
...@@ -943,7 +952,8 @@ typedef struct { ...@@ -943,7 +952,8 @@ typedef struct {
/** /**
* @struct * @struct
* The PING frame. It has the following members: *
* The PING frame. It has the following members:
*/ */
typedef struct { typedef struct {
/** /**
...@@ -958,7 +968,8 @@ typedef struct { ...@@ -958,7 +968,8 @@ typedef struct {
/** /**
* @struct * @struct
* The GOAWAY frame. It has the following members: *
* The GOAWAY frame. It has the following members:
*/ */
typedef struct { typedef struct {
/** /**
...@@ -970,7 +981,7 @@ typedef struct { ...@@ -970,7 +981,7 @@ typedef struct {
*/ */
int32_t last_stream_id; int32_t last_stream_id;
/** /**
* The error code. See :type:`nghttp2_error_code`. * The error code. See :type:`nghttp2_error_code`.
*/ */
nghttp2_error_code error_code; nghttp2_error_code error_code;
/** /**
...@@ -986,7 +997,7 @@ typedef struct { ...@@ -986,7 +997,7 @@ typedef struct {
/** /**
* @struct * @struct
* *
* The WINDOW_UPDATE frame. It has the following members: * The WINDOW_UPDATE frame. It has the following members:
*/ */
typedef struct { typedef struct {
/** /**
...@@ -1047,8 +1058,8 @@ typedef struct { ...@@ -1047,8 +1058,8 @@ typedef struct {
* @union * @union
* *
* This union includes all frames to pass them to various function * This union includes all frames to pass them to various function
* calls as nghttp2_frame type. The CONTINUATION frame is omitted from * calls as nghttp2_frame type. The CONTINUATION frame is omitted
* here because the library deals with it internally. * from here because the library deals with it internally.
*/ */
typedef union { typedef union {
/** /**
...@@ -1101,19 +1112,19 @@ typedef union { ...@@ -1101,19 +1112,19 @@ typedef union {
* @functypedef * @functypedef
* *
* Callback function invoked when |session| wants to send data to the * Callback function invoked when |session| wants to send data to the
* remote peer. The implementation of this function must send at most * remote peer. The implementation of this function must send at most
* |length| bytes of data stored in |data|. The |flags| is currently * |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 * 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 succeeds. If it cannot send any single byte without blocking,
* it must return :enum:`NGHTTP2_ERR_WOULDBLOCK`. For other errors, it * it must return :enum:`NGHTTP2_ERR_WOULDBLOCK`. For other errors,
* must return :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`. The |user_data| * it must return :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`. The
* pointer is the third argument passed in to the call to * |user_data| pointer is the third argument passed in to the call to
* `nghttp2_session_client_new()` or `nghttp2_session_server_new()`. * `nghttp2_session_client_new()` or `nghttp2_session_server_new()`.
* *
* This callback is required if the application uses * This callback is required if the application uses
* `nghttp2_session_send()` to send data to the remote endpoint. If * `nghttp2_session_send()` to send data to the remote endpoint. If
* the application uses `nghttp2_session_mem_send()` instead, this * the application uses solely `nghttp2_session_mem_send()` instead,
* callback function is unnecessary. * this callback function is unnecessary.
*/ */
typedef ssize_t (*nghttp2_send_callback) typedef ssize_t (*nghttp2_send_callback)
(nghttp2_session *session, (nghttp2_session *session,
...@@ -1123,21 +1134,21 @@ typedef ssize_t (*nghttp2_send_callback) ...@@ -1123,21 +1134,21 @@ typedef ssize_t (*nghttp2_send_callback)
* @functypedef * @functypedef
* *
* Callback function invoked when |session| wants to receive data from * Callback function invoked when |session| wants to receive data from
* the remote peer. The implementation of this function must read at * the remote peer. The implementation of this function must read at
* most |length| bytes of data and store it in |buf|. The |flags| is * 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 * currently not used and always 0. It must return the number of
* written in |buf| if it succeeds. If it cannot read any single byte * bytes written in |buf| if it succeeds. If it cannot read any
* without blocking, it must return :enum:`NGHTTP2_ERR_WOULDBLOCK`. If * single byte without blocking, it must return
* it gets EOF before it reads any single byte, it must return * :enum:`NGHTTP2_ERR_WOULDBLOCK`. If it gets EOF before it reads any
* :enum:`NGHTTP2_ERR_EOF`. For other errors, it must return * single byte, it must return :enum:`NGHTTP2_ERR_EOF`. For other
* :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`. Returning 0 is treated as * errors, it must return :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`.
* :enum:`NGHTTP2_ERR_WOULDBLOCK`. The |user_data| pointer is the * Returning 0 is treated as :enum:`NGHTTP2_ERR_WOULDBLOCK`. The
* third argument passed in to the call to * |user_data| pointer is the third argument passed in to the call to
* `nghttp2_session_client_new()` or `nghttp2_session_server_new()`. * `nghttp2_session_client_new()` or `nghttp2_session_server_new()`.
* *
* This callback is required if the application uses * This callback is required if the application uses
* `nghttp2_session_recv()` to receive data from the remote * `nghttp2_session_recv()` to receive data from the remote endpoint.
* endpoint. If the application uses `nghttp2_session_mem_recv()` * If the application uses solely `nghttp2_session_mem_recv()`
* instead, this callback function is unnecessary. * instead, this callback function is unnecessary.
*/ */
typedef ssize_t (*nghttp2_recv_callback) typedef ssize_t (*nghttp2_recv_callback)
...@@ -1147,30 +1158,30 @@ typedef ssize_t (*nghttp2_recv_callback) ...@@ -1147,30 +1158,30 @@ typedef ssize_t (*nghttp2_recv_callback)
/** /**
* @functypedef * @functypedef
* *
* Callback function invoked by `nghttp2_session_recv()` when a aframe * Callback function invoked by `nghttp2_session_recv()` when a frame
* is received. The |user_data| pointer is the third argument passed * is received. The |user_data| pointer is the third argument passed
* in to the call to `nghttp2_session_client_new()` or * in to the call to `nghttp2_session_client_new()` or
* `nghttp2_session_server_new()`. * `nghttp2_session_server_new()`.
* *
* If frame is HEADERS or PUSH_PROMISE, the ``nva`` and ``nvlen`` * If frame is HEADERS or PUSH_PROMISE, the ``nva`` and ``nvlen``
* member of their data structure are always ``NULL`` and 0 * 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
* :type:`nghttp2_on_header_callback`. * :type:`nghttp2_on_header_callback`.
* *
* For HEADERS, PUSH_PROMISE and DATA frames, this callback may be * For HEADERS, PUSH_PROMISE and DATA frames, this callback may be
* called after stream is closed (see * called after stream is closed (see
* :type:`nghttp2_on_stream_close_callback`). The application should * :type:`nghttp2_on_stream_close_callback`). The application should
* check that stream is still alive using its own stream management or * check that stream is still alive using its own stream management or
* :func:`nghttp2_session_get_stream_user_data()`. * :func:`nghttp2_session_get_stream_user_data()`.
* *
* Only HEADERS and DATA frame can signal the end of incoming data. If * Only HEADERS and DATA frame can signal the end of incoming data.
* ``frame->hd.flags & NGHTTP2_FLAG_END_STREAM`` is nonzero, the * If ``frame->hd.flags & NGHTTP2_FLAG_END_STREAM`` is nonzero, the
* |frame| is the last frame from the remote peer in this stream. * |frame| is the last frame from the remote peer in this stream.
* *
* The implementation of this function must return 0 if it * The implementation of this function must return 0 if it succeeds.
* succeeds. If nonzero value is returned, it is treated as fatal * If nonzero value is returned, it is treated as fatal error and
* error and `nghttp2_session_recv()` and `nghttp2_session_mem_recv()` * `nghttp2_session_recv()` and `nghttp2_session_mem_recv()` functions
* functions immediately return :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`. * immediately return :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`.
*/ */
typedef int (*nghttp2_on_frame_recv_callback) typedef int (*nghttp2_on_frame_recv_callback)
(nghttp2_session *session, const nghttp2_frame *frame, void *user_data); (nghttp2_session *session, const nghttp2_frame *frame, void *user_data);
...@@ -1179,10 +1190,10 @@ typedef int (*nghttp2_on_frame_recv_callback) ...@@ -1179,10 +1190,10 @@ typedef int (*nghttp2_on_frame_recv_callback)
* @functypedef * @functypedef
* *
* Callback function invoked by `nghttp2_session_recv()` when an * Callback function invoked by `nghttp2_session_recv()` when an
* invalid non-DATA frame is received. The |error_code| is one of the * invalid non-DATA frame is received. The |error_code| is one of the
* :enum:`nghttp2_error_code` and indicates the error. When this * :enum:`nghttp2_error_code` and indicates the error. When this
* callback function is invoked, the library automatically submits * 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 * third argument passed in to the call to
* `nghttp2_session_client_new()` or `nghttp2_session_server_new()`. * `nghttp2_session_client_new()` or `nghttp2_session_server_new()`.
* *
...@@ -1190,8 +1201,8 @@ typedef int (*nghttp2_on_frame_recv_callback) ...@@ -1190,8 +1201,8 @@ typedef int (*nghttp2_on_frame_recv_callback)
* member of their data structure are always ``NULL`` and 0 * member of their data structure are always ``NULL`` and 0
* respectively. * respectively.
* *
* The implementation of this function must return 0 if it * The implementation of this function must return 0 if it succeeds.
* succeeds. If nonzero is returned, it is treated as fatal error and * If nonzero is returned, it is treated as fatal error and
* `nghttp2_session_recv()` and `nghttp2_session_send()` functions * `nghttp2_session_recv()` and `nghttp2_session_send()` functions
* immediately return :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`. * immediately return :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`.
*/ */
...@@ -1203,26 +1214,26 @@ typedef int (*nghttp2_on_invalid_frame_recv_callback) ...@@ -1203,26 +1214,26 @@ typedef int (*nghttp2_on_invalid_frame_recv_callback)
* @functypedef * @functypedef
* *
* Callback function invoked when a chunk of data in DATA frame is * Callback function invoked when a chunk of data in DATA frame is
* received. The |stream_id| is the stream ID this DATA frame belongs * 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 * to. The |flags| is the flags of DATA frame which this data chunk
* contained. ``(flags & NGHTTP2_FLAG_END_STREAM) != 0`` does not * is contained. ``(flags & NGHTTP2_FLAG_END_STREAM) != 0`` does not
* necessarily mean this chunk of data is the last one in the * necessarily mean this chunk of data is the last one in the stream.
* stream. You should use :type:`nghttp2_on_frame_recv_callback` to * You should use :type:`nghttp2_on_frame_recv_callback` to know all
* know all data frames are received. The |user_data| pointer is the * data frames are received. The |user_data| pointer is the third
* third argument passed in to the call to * argument passed in to the call to `nghttp2_session_client_new()` or
* `nghttp2_session_client_new()` or `nghttp2_session_server_new()`. * `nghttp2_session_server_new()`.
* *
* If the application uses `nghttp2_session_mem_recv()`, it can return * If the application uses `nghttp2_session_mem_recv()`, it can return
* :enum:`NGHTTP2_ERR_PAUSE` to make `nghttp2_session_mem_recv()` * :enum:`NGHTTP2_ERR_PAUSE` to make `nghttp2_session_mem_recv()`
* return without processing further input bytes. The memory by * return without processing further input bytes. The memory by
* pointed by the |data| is retained until * pointed by the |data| is retained until
* `nghttp2_session_mem_recv()` or `nghttp2_session_recv()` is * `nghttp2_session_mem_recv()` or `nghttp2_session_recv()` is called.
* called. The application must retain the input bytes which was used * The application must retain the input bytes which was used to
* to produce the |data| parameter, because it may refer to the memory * produce the |data| parameter, because it may refer to the memory
* region included in the input bytes. * region included in the input bytes.
* *
* The implementation of this function must return 0 if it * The implementation of this function must return 0 if it succeeds.
* succeeds. If nonzero is returned, it is treated as fatal error and * If nonzero is returned, it is treated as fatal error and
* `nghttp2_session_recv()` and `nghttp2_session_mem_recv()` functions * `nghttp2_session_recv()` and `nghttp2_session_mem_recv()` functions
* immediately return :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`. * immediately return :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`.
*/ */
...@@ -1234,15 +1245,15 @@ typedef int (*nghttp2_on_data_chunk_recv_callback) ...@@ -1234,15 +1245,15 @@ typedef int (*nghttp2_on_data_chunk_recv_callback)
* @functypedef * @functypedef
* *
* Callback function invoked before the non-DATA frame |frame| is * 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 * HEADERS and PUSH_PROMISE frame (see also
* `nghttp2_session_get_stream_user_data()`), which is not assigned * `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 * passed in to the call to `nghttp2_session_client_new()` or
* `nghttp2_session_server_new()`. * `nghttp2_session_server_new()`.
* *
* The implementation of this function must return 0 if it * The implementation of this function must return 0 if it succeeds.
* succeeds. If nonzero is returned, it is treated as fatal error and * If nonzero is returned, it is treated as fatal error and
* `nghttp2_session_recv()` and `nghttp2_session_send()` functions * `nghttp2_session_recv()` and `nghttp2_session_send()` functions
* immediately return :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`. * immediately return :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`.
*/ */
...@@ -1256,8 +1267,8 @@ typedef int (*nghttp2_before_frame_send_callback) ...@@ -1256,8 +1267,8 @@ typedef int (*nghttp2_before_frame_send_callback)
* |user_data| pointer is the third argument passed in to the call to * |user_data| pointer is the third argument passed in to the call to
* `nghttp2_session_client_new()` or `nghttp2_session_server_new()`. * `nghttp2_session_client_new()` or `nghttp2_session_server_new()`.
* *
* The implementation of this function must return 0 if it * The implementation of this function must return 0 if it succeeds.
* succeeds. If nonzero is returned, it is treated as fatal error and * If nonzero is returned, it is treated as fatal error and
* `nghttp2_session_recv()` and `nghttp2_session_send()` functions * `nghttp2_session_recv()` and `nghttp2_session_send()` functions
* immediately return :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`. * immediately return :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`.
*/ */
...@@ -1268,14 +1279,14 @@ typedef int (*nghttp2_on_frame_send_callback) ...@@ -1268,14 +1279,14 @@ typedef int (*nghttp2_on_frame_send_callback)
* @functypedef * @functypedef
* *
* Callback function invoked after the non-DATA frame |frame| is not * 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 * |lib_error_code|, which is one of the values defined in
* :type:`nghttp2_error`. The |user_data| pointer is the third * :type:`nghttp2_error`. The |user_data| pointer is the third
* argument passed in to the call to `nghttp2_session_client_new()` or * argument passed in to the call to `nghttp2_session_client_new()` or
* `nghttp2_session_server_new()`. * `nghttp2_session_server_new()`.
* *
* The implementation of this function must return 0 if it * The implementation of this function must return 0 if it succeeds.
* succeeds. If nonzero is returned, it is treated as fatal error and * If nonzero is returned, it is treated as fatal error and
* `nghttp2_session_recv()` and `nghttp2_session_send()` functions * `nghttp2_session_recv()` and `nghttp2_session_send()` functions
* immediately return :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`. * immediately return :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`.
*/ */
...@@ -1286,16 +1297,18 @@ typedef int (*nghttp2_on_frame_not_send_callback) ...@@ -1286,16 +1297,18 @@ typedef int (*nghttp2_on_frame_not_send_callback)
/** /**
* @functypedef * @functypedef
* *
* Callback function invoked when the stream |stream_id| is * Callback function invoked when the stream |stream_id| is closed.
* closed. The reason of closure is indicated by the |error_code|. The * The reason of closure is indicated by the |error_code|. The
* stream_user_data, which was specified in `nghttp2_submit_request()` * stream_user_data, which was specified in `nghttp2_submit_request()`
* or `nghttp2_submit_headers()`, is still available in this * or `nghttp2_submit_headers()`, is still available in this function.
* function. The |user_data| pointer is the third argument passed in * The |user_data| pointer is the third argument passed in to the call
* to the call to `nghttp2_session_client_new()` or * to `nghttp2_session_client_new()` or
* `nghttp2_session_server_new()`. * `nghttp2_session_server_new()`.
* *
* The implementation of this function must return 0 if it * This function is also called for a stream in reserved state.
* 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 * `nghttp2_session_recv()` and `nghttp2_session_send()` functions
* immediately return :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`. * immediately return :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`.
*/ */
...@@ -1306,19 +1319,18 @@ typedef int (*nghttp2_on_stream_close_callback) ...@@ -1306,19 +1319,18 @@ typedef int (*nghttp2_on_stream_close_callback)
/** /**
* @functypedef * @functypedef
* *
* Callback function invoked when the received frame type is * Callback function invoked when the received frame type is unknown.
* unknown. The |head| is the pointer to the header of the received * The |head| is the pointer to the header of the received frame. The
* frame. The |headlen| is the length of the |head|. According to the * |headlen| is the length of the |head|. According to the spec, the
* spec, the |headlen| is always 8. In other words, the |head| is the * |headlen| is always 8. In other words, the |head| is the first 8
* first 8 bytes of the received frame. The |payload| is the pointer * bytes of the received frame. The |payload| is the pointer to the
* to the data portion of the received frame. The |payloadlen| is the * data portion of the received frame. The |payloadlen| is the length
* length of the |payload|. This is the data after the length * of the |payload|. This is the data after the length field. The
* field. The |user_data| pointer is the third argument passed in to * |user_data| pointer is the third argument passed in to the call to
* the call to `nghttp2_session_client_new()` or * `nghttp2_session_client_new()` or `nghttp2_session_server_new()`.
* `nghttp2_session_server_new()`.
* *
* The implementation of this function must return 0 if it * The implementation of this function must return 0 if it succeeds.
* succeeds. If nonzero is returned, it is treated as fatal error and * If nonzero is returned, it is treated as fatal error and
* `nghttp2_session_recv()` and `nghttp2_session_send()` functions * `nghttp2_session_recv()` and `nghttp2_session_send()` functions
* immediately return :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`. * immediately return :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`.
*/ */
...@@ -1332,19 +1344,19 @@ typedef int (*nghttp2_on_unknown_frame_recv_callback) ...@@ -1332,19 +1344,19 @@ typedef int (*nghttp2_on_unknown_frame_recv_callback)
* @functypedef * @functypedef
* *
* Callback function invoked when the reception of header block in * 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 :type:`nghttp2_on_header_callback`. * will be emitted by :type:`nghttp2_on_header_callback`.
* *
* The ``frame->hd.flags`` may not have * The ``frame->hd.flags`` may not have
* :enum:`NGHTTP2_FLAG_END_HEADERS` flag set, which indicates that one * :enum:`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 * not need to care about that because the header name/value pairs are
* emitted transparently regardless of CONTINUATION frames. * emitted transparently regardless of CONTINUATION frames.
* *
* The implementation of this function must return 0 if it succeeds or * The implementation of this function must return 0 if it succeeds or
* :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`. If nonzero value other than * :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`. If nonzero value other than
* :enum:`NGHTTP2_ERR_CALLBACK_FAILURE` is returned, it is treated as * :enum:`NGHTTP2_ERR_CALLBACK_FAILURE` is returned, it is treated as
* if :enum:`NGHTTP2_ERR_CALLBACK_FAILURE` is returned. If * if :enum:`NGHTTP2_ERR_CALLBACK_FAILURE` is returned. If
* :enum:`NGHTTP2_ERR_CALLBACK_FAILURE` is returned, * :enum:`NGHTTP2_ERR_CALLBACK_FAILURE` is returned,
* `nghttp2_session_mem_recv()` function will immediately return * `nghttp2_session_mem_recv()` function will immediately return
* :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`. * :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`.
...@@ -1372,43 +1384,43 @@ typedef int (*nghttp2_on_begin_headers_callback) ...@@ -1372,43 +1384,43 @@ typedef int (*nghttp2_on_begin_headers_callback)
* :type:`nghttp2_on_frame_recv_callback` for the |frame| will not be * :type:`nghttp2_on_frame_recv_callback` for the |frame| will not be
* invoked. * 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|. * can be said about the |value|.
* *
* Please note that nghttp2 library does not perform any validity * 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 * |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 * helper function `nghttp2_check_header_name()` and
* `nghttp2_check_header_value()` provide simple validation against * `nghttp2_check_header_value()` provide simple validation against
* HTTP2 header field construction rule. * HTTP2 header field construction rule.
* *
* One more thing to note is that the |value| may contain ``NULL`` * One more thing to note is that the |value| may contain ``NULL``
* (``0x00``) characters. It is used to concatenate header values * (``0x00``) characters. It is used to concatenate header values
* which share the same header field name. The application should * which share the same header field name. The application should
* split these values if it wants to get individual value. This * split these values if it wants to get individual value. This
* concatenation is used in order to keep the ordering of headers. * concatenation is used in order to keep the ordering of headers.
* *
* If the application uses `nghttp2_session_mem_recv()`, it can return * If the application uses `nghttp2_session_mem_recv()`, it can return
* :enum:`NGHTTP2_ERR_PAUSE` to make `nghttp2_session_mem_recv()` * :enum:`NGHTTP2_ERR_PAUSE` to make `nghttp2_session_mem_recv()`
* return without processing further input bytes. The memory pointed * return without processing further input bytes. The memory pointed
* by |frame|, |name| and |value| parameters are retained until * by |frame|, |name| and |value| parameters are retained until
* `nghttp2_session_mem_recv()` or `nghttp2_session_recv()` is * `nghttp2_session_mem_recv()` or `nghttp2_session_recv()` is called.
* called. The application must retain the input bytes which was used * The application must retain the input bytes which was used to
* to produce these parameters, because it may refer to the memory * produce these parameters, because it may refer to the memory region
* region included in the input bytes. * included in the input bytes.
* *
* Returning :enum:`NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE` will close * Returning :enum:`NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE` will close
* the stream by issuing RST_STREAM with * the stream by issuing RST_STREAM with
* :enum:`NGHTTP2_INTERNAL_ERROR`. In this case, * :enum:`NGHTTP2_INTERNAL_ERROR`. In this case,
* :type:`nghttp2_on_frame_recv_callback` will not be invoked. * :type:`nghttp2_on_frame_recv_callback` will not be invoked.
* *
* The implementation of this function must return 0 if it * The implementation of this function must return 0 if it succeeds.
* succeeds. It may return :enum:`NGHTTP2_ERR_PAUSE` or * It may return :enum:`NGHTTP2_ERR_PAUSE` or
* :enum:`NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE`. For other critical * :enum:`NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE`. For other critical
* failures, it must return :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`. If * failures, it must return :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`. If
* the other nonzero value is returned, it is treated as * the other nonzero value is returned, it is treated as
* :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`. If * :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`. If
* :enum:`NGHTTP2_ERR_CALLBACK_FAILURE` is returned, * :enum:`NGHTTP2_ERR_CALLBACK_FAILURE` is returned,
* `nghttp2_session_recv()` and `nghttp2_session_mem_recv()` functions * `nghttp2_session_recv()` and `nghttp2_session_mem_recv()` functions
* immediately return :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`. * immediately return :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`.
...@@ -1425,11 +1437,11 @@ typedef int (*nghttp2_on_header_callback) ...@@ -1425,11 +1437,11 @@ typedef int (*nghttp2_on_header_callback)
* @functypedef * @functypedef
* *
* Callback function invoked when the library asks application how * Callback function invoked when the library asks application how
* much padding is required for the transmission of the |frame|. The * many padding bytes are required for the transmission of the
* application must choose the total length of payload including * |frame|. The application must choose the total length of payload
* padded bytes in range [frame->hd.length, max_payloadlen], * including padded bytes in range [frame->hd.length, max_payloadlen],
* inclusive. Choosing number not in this range will be treated as * inclusive. Choosing number not in this range will be treated as
* :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`. Returning * :enum:`NGHTTP2_ERR_CALLBACK_FAILURE`. Returning
* ``frame->hd.length`` means no padding is added. Returning * ``frame->hd.length`` means no padding is added. Returning
* :enum:`NGHTTP2_ERR_CALLBACK_FAILURE` will make * :enum:`NGHTTP2_ERR_CALLBACK_FAILURE` will make
* `nghttp2_session_send()` function immediately return * `nghttp2_session_send()` function immediately return
...@@ -1449,16 +1461,16 @@ typedef ssize_t (*nghttp2_select_padding_callback) ...@@ -1449,16 +1461,16 @@ typedef ssize_t (*nghttp2_select_padding_callback)
typedef struct { typedef struct {
/** /**
* Callback function invoked when the |session| wants to send data * Callback function invoked when the |session| wants to send data
* to the remote peer. This callback is not necessary if the * to the remote peer. This callback is not necessary if the
* application uses `nghttp2_session_mem_send()` to serialize data * application uses solely `nghttp2_session_mem_send()` to serialize
* to transmit. * data to transmit.
*/ */
nghttp2_send_callback send_callback; nghttp2_send_callback send_callback;
/** /**
* Callback function invoked when the |session| wants to receive * Callback function invoked when the |session| wants to receive
* data from the remote peer. This callback is not necessary if the * data from the remote peer. This callback is not necessary if the
* application uses `nghttp2_session_mem_recv()` to process received * application uses solely `nghttp2_session_mem_recv()` to process
* data. * received data.
*/ */
nghttp2_recv_callback recv_callback; nghttp2_recv_callback recv_callback;
/** /**
...@@ -1510,7 +1522,8 @@ typedef struct { ...@@ -1510,7 +1522,8 @@ typedef struct {
nghttp2_on_header_callback on_header_callback; nghttp2_on_header_callback on_header_callback;
/** /**
* Callback function invoked when the library asks application how * 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.
*/ */
nghttp2_select_padding_callback select_padding_callback; nghttp2_select_padding_callback select_padding_callback;
} nghttp2_session_callbacks; } nghttp2_session_callbacks;
...@@ -1553,10 +1566,10 @@ void nghttp2_option_del(nghttp2_option *option); ...@@ -1553,10 +1566,10 @@ void nghttp2_option_del(nghttp2_option *option);
* @function * @function
* *
* This option prevents the library from sending WINDOW_UPDATE for a * 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 * library won't send WINDOW_UPDATE for a stream and the application
* is responsible for sending WINDOW_UPDATE using * 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. * zero.
*/ */
void nghttp2_option_set_no_auto_stream_window_update(nghttp2_option *option, void nghttp2_option_set_no_auto_stream_window_update(nghttp2_option *option,
...@@ -1566,11 +1579,11 @@ void nghttp2_option_set_no_auto_stream_window_update(nghttp2_option *option, ...@@ -1566,11 +1579,11 @@ void nghttp2_option_set_no_auto_stream_window_update(nghttp2_option *option,
* @function * @function
* *
* This option prevents the library from sending WINDOW_UPDATE for a * 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 * library won't send WINDOW_UPDATE for a connection and the
* application is responsible for sending WINDOW_UPDATE with stream * application is responsible for sending WINDOW_UPDATE with stream ID
* ID 0 using `nghttp2_submit_window_update`. By default, this * 0 using `nghttp2_submit_window_update`. By default, this option is
* option is set to zero. * set to zero.
*/ */
void nghttp2_option_set_no_auto_connection_window_update void nghttp2_option_set_no_auto_connection_window_update
(nghttp2_option *option, int val); (nghttp2_option *option, int val);
...@@ -1579,15 +1592,15 @@ void nghttp2_option_set_no_auto_connection_window_update ...@@ -1579,15 +1592,15 @@ void nghttp2_option_set_no_auto_connection_window_update
* @function * @function
* *
* This option sets the SETTINGS_MAX_CONCURRENT_STREAMS value of * 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 * specifying this option, before the local endpoint receives
* SETTINGS_MAX_CONCURRENT_STREAMS in SETTINGS frame from remote * SETTINGS_MAX_CONCURRENT_STREAMS in SETTINGS frame from remote
* endpoint, SETTINGS_MAX_CONCURRENT_STREAMS is unlimited. This may * endpoint, SETTINGS_MAX_CONCURRENT_STREAMS is unlimited. This may
* cause problem if local endpoint submits lots of requests * cause problem if local endpoint submits lots of requests initially
* initially and sending them at once to the remote peer may lead to * and sending them at once to the remote peer may lead to the
* the rejection of some requests. Specifying this option to the * rejection of some requests. Specifying this option to the sensible
* sensible value, say 100, may avoid this kind of issue. This value * value, say 100, may avoid this kind of issue. This value will be
* will be overwritten if the local endpoint receives * overwritten if the local endpoint receives
* SETTINGS_MAX_CONCURRENT_STREAMS from the remote endpoint. * SETTINGS_MAX_CONCURRENT_STREAMS from the remote endpoint.
*/ */
void nghttp2_option_set_peer_max_concurrent_streams(nghttp2_option *option, void nghttp2_option_set_peer_max_concurrent_streams(nghttp2_option *option,
...@@ -1596,15 +1609,15 @@ void nghttp2_option_set_peer_max_concurrent_streams(nghttp2_option *option, ...@@ -1596,15 +1609,15 @@ void nghttp2_option_set_peer_max_concurrent_streams(nghttp2_option *option,
/** /**
* @function * @function
* *
* Initializes |*session_ptr| for client use. The all members of * Initializes |*session_ptr| for client use. The all members of
* |callbacks| are copied to |*session_ptr|. Therefore |*session_ptr| * |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. * supplied data, which will be passed to the callback functions.
* *
* The :member:`nghttp2_session_callbacks.send_callback` must be * The :member:`nghttp2_session_callbacks.send_callback` must be
* specified. If the application code uses `nghttp2_session_recv()`, * specified. If the application code uses `nghttp2_session_recv()`,
* the :member:`nghttp2_session_callbacks.recv_callback` must be * the :member:`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 * This function returns 0 if it succeeds, or one of the following
* negative error codes: * negative error codes:
...@@ -1619,15 +1632,15 @@ int nghttp2_session_client_new(nghttp2_session **session_ptr, ...@@ -1619,15 +1632,15 @@ int nghttp2_session_client_new(nghttp2_session **session_ptr,
/** /**
* @function * @function
* *
* 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| * |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. * supplied data, which will be passed to the callback functions.
* *
* The :member:`nghttp2_session_callbacks.send_callback` must be * The :member:`nghttp2_session_callbacks.send_callback` must be
* specified. If the application code uses `nghttp2_session_recv()`, * specified. If the application code uses `nghttp2_session_recv()`,
* the :member:`nghttp2_session_callbacks.recv_callback` must be * the :member:`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 * This function returns 0 if it succeeds, or one of the following
* negative error codes: * negative error codes:
...@@ -1694,7 +1707,7 @@ int nghttp2_session_server_new2(nghttp2_session **session_ptr, ...@@ -1694,7 +1707,7 @@ int nghttp2_session_server_new2(nghttp2_session **session_ptr,
/** /**
* @function * @function
* *
* Frees any resources allocated for |session|. If |session| is * Frees any resources allocated for |session|. If |session| is
* ``NULL``, this function does nothing. * ``NULL``, this function does nothing.
*/ */
void nghttp2_session_del(nghttp2_session *session); void nghttp2_session_del(nghttp2_session *session);
...@@ -1705,30 +1718,31 @@ void nghttp2_session_del(nghttp2_session *session); ...@@ -1705,30 +1718,31 @@ void nghttp2_session_del(nghttp2_session *session);
* Sends pending frames to the remote peer. * Sends pending frames to the remote peer.
* *
* This function retrieves the highest prioritized frame from the * 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 * many as possible until the user callback
* :member:`nghttp2_session_callbacks.send_callback` returns * :member:`nghttp2_session_callbacks.send_callback` returns
* :enum:`NGHTTP2_ERR_WOULDBLOCK` or the outbound queue becomes empty. * :enum:`NGHTTP2_ERR_WOULDBLOCK` or the outbound queue becomes empty.
* This function calls several callback functions which are passed * 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: * which tells when each callback is invoked:
* *
* 1. Get the next frame to send from outbound queue. * 1. Get the next frame to send from outbound queue.
* 2. Prepare transmission of the frame. * 2. Prepare transmission of the frame.
* 3. If the control frame cannot be sent because some preconditions * 3. If the control frame cannot be sent because some preconditions
* are not met (e.g., request HEADERS cannot be sent after * are not met (e.g., request HEADERS cannot be sent after GOAWAY),
* GOAWAY), * :member:`nghttp2_session_callbacks.on_frame_not_send_callback`
* :member:`nghttp2_session_callbacks.on_frame_not_send_callback` is * is invoked. Abort the following steps.
* invoked. Abort the following steps. * 4. If the frame is HEADERS, PUSH_PROMISE or DATA,
* 4. If the frame is request HEADERS, the stream is opened * :member:`nghttp2_session_callbacks.select_padding_callback` is
* here.
* 5. :member:`nghttp2_session_callbacks.before_frame_send_callback` is
* invoked. * invoked.
* 6. :member:`nghttp2_session_callbacks.send_callback` is invoked one * 5. If the frame is request HEADERS, the stream is opened here.
* 6. :member:`nghttp2_session_callbacks.before_frame_send_callback` is
* invoked.
* 7. :member:`nghttp2_session_callbacks.send_callback` is invoked one
* or more times to send the frame. * or more times to send the frame.
* 7. :member:`nghttp2_session_callbacks.on_frame_send_callback` is * 8. :member:`nghttp2_session_callbacks.on_frame_send_callback` is
* invoked. * invoked.
* 8. If the transmission of the frame triggers closure of the stream, * 9. If the transmission of the frame triggers closure of the stream,
* the stream is closed and * the stream is closed and
* :member:`nghttp2_session_callbacks.on_stream_close_callback` is * :member:`nghttp2_session_callbacks.on_stream_close_callback` is
* invoked. * invoked.
...@@ -1748,17 +1762,18 @@ int nghttp2_session_send(nghttp2_session *session); ...@@ -1748,17 +1762,18 @@ int nghttp2_session_send(nghttp2_session *session);
* *
* Returns the serialized data to send. * Returns the serialized data to send.
* *
* This function behaves like `nghttp2_session_send()` except that * This function behaves like `nghttp2_session_send()` except that it
* it does not use :member:`nghttp2_session_callbacks.send_callback` * does not use :member:`nghttp2_session_callbacks.send_callback` to
* to transmit data. Instead, it assigns the pointer to the serialized * transmit data. Instead, it assigns the pointer to the serialized
* data to the |*data_ptr| and returns its length. The other callbacks * data to the |*data_ptr| and returns its length. The other
* are called in the same way as they are in `nghttp2_session_send()`. * 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. * If no data is available to send, this function returns 0.
* *
* This function may not return all serialized data in one * This function may not return all serialized data in one invocation.
* invocation. To get all data, call this function repeatedly until it * To get all data, call this function repeatedly until it returns 0
* returns 0 or one of negative error codes. * or one of negative error codes.
* *
* The assigned |*data_ptr| is valid until the next call of * The assigned |*data_ptr| is valid until the next call of
* `nghttp2_session_mem_send()` or `nghttp2_session_send()`. * `nghttp2_session_mem_send()` or `nghttp2_session_send()`.
...@@ -1783,9 +1798,9 @@ ssize_t nghttp2_session_mem_send(nghttp2_session *session, ...@@ -1783,9 +1798,9 @@ ssize_t nghttp2_session_mem_send(nghttp2_session *session,
* *
* This function receives as many frames as possible until the user * This function receives as many frames as possible until the user
* callback :member:`nghttp2_session_callbacks.recv_callback` returns * callback :member:`nghttp2_session_callbacks.recv_callback` returns
* :enum:`NGHTTP2_ERR_WOULDBLOCK`. This function calls several * :enum:`NGHTTP2_ERR_WOULDBLOCK`. This function calls several
* callback functions which are passed when initializing the * 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: * callback is invoked:
* *
* 1. :member:`nghttp2_session_callbacks.recv_callback` is invoked one * 1. :member:`nghttp2_session_callbacks.recv_callback` is invoked one
...@@ -1798,7 +1813,7 @@ ssize_t nghttp2_session_mem_send(nghttp2_session *session, ...@@ -1798,7 +1813,7 @@ ssize_t nghttp2_session_mem_send(nghttp2_session *session,
* is invoked. * is invoked.
* 2. If one DATA frame is completely received, * 2. If one DATA frame is completely received,
* :member:`nghttp2_session_callbacks.on_frame_recv_callback` is * :member:`nghttp2_session_callbacks.on_frame_recv_callback` is
* invoked. If the reception of the frame triggers the * invoked. If the reception of the frame triggers the
* closure of the stream, * closure of the stream,
* :member:`nghttp2_session_callbacks.on_stream_close_callback` * :member:`nghttp2_session_callbacks.on_stream_close_callback`
* is invoked. * is invoked.
...@@ -1809,11 +1824,11 @@ ssize_t nghttp2_session_mem_send(nghttp2_session *session, ...@@ -1809,11 +1824,11 @@ ssize_t nghttp2_session_mem_send(nghttp2_session *session,
* one or more times to receive whole frame. * one or more times to receive whole frame.
* *
* 2. If the received frame is valid, then following actions are * 2. If the received frame is valid, then following actions are
* taken. If the frame is either HEADERS or PUSH_PROMISE, * taken. If the frame is either HEADERS or PUSH_PROMISE,
* :member:`nghttp2_session_callbacks.on_begin_headers_callback` * :member:`nghttp2_session_callbacks.on_begin_headers_callback`
* is invoked. Then * is invoked. Then
* :member:`nghttp2_session_callbacks.on_header_callback` is * :member:`nghttp2_session_callbacks.on_header_callback` is
* invoked for each header name/value pair. After all name/value * invoked for each header name/value pair. After all name/value
* pairs are emitted successfully, * pairs are emitted successfully,
* :member:`nghttp2_session_callbacks.on_frame_recv_callback` is * :member:`nghttp2_session_callbacks.on_frame_recv_callback` is
* invoked. For other frames, * invoked. For other frames,
...@@ -1846,13 +1861,13 @@ int nghttp2_session_recv(nghttp2_session *session); ...@@ -1846,13 +1861,13 @@ int nghttp2_session_recv(nghttp2_session *session);
/** /**
* @function * @function
* *
* 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|. * |inlen| indicates the number of bytes in the |in|.
* *
* This function behaves like `nghttp2_session_recv()` except that it * This function behaves like `nghttp2_session_recv()` except that it
* does not use :member:`nghttp2_session_callbacks.recv_callback` to * does not use :member:`nghttp2_session_callbacks.recv_callback` to
* receive data; the |in| is the only data for the invocation of this * 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 * other callbacks are called in the same way as they are in
* `nghttp2_session_recv()`. * `nghttp2_session_recv()`.
* *
...@@ -1920,13 +1935,13 @@ int nghttp2_session_want_write(nghttp2_session *session); ...@@ -1920,13 +1935,13 @@ int nghttp2_session_want_write(nghttp2_session *session);
/** /**
* @function * @function
* *
* 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()`, * stream_user_data is provided by `nghttp2_submit_request()`,
* `nghttp2_submit_headers()` or * `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 * `nghttp2_session_set_stream_user_data()`, if the stream is
* initiated by the remote endpoint, stream_user_data is always * 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``. * ``NULL``.
*/ */
void* nghttp2_session_get_stream_user_data(nghttp2_session *session, void* nghttp2_session_get_stream_user_data(nghttp2_session *session,
...@@ -1936,8 +1951,8 @@ void* nghttp2_session_get_stream_user_data(nghttp2_session *session, ...@@ -1936,8 +1951,8 @@ void* nghttp2_session_get_stream_user_data(nghttp2_session *session,
* @function * @function
* *
* Sets the |stream_user_data| to the stream denoted by the * 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 * |stream_id|. If a stream user data is already set to the stream,
* is replaced with the |stream_user_data|. It is valid to specify * it is replaced with the |stream_user_data|. It is valid to specify
* ``NULL`` in the |stream_user_data|, which nullifies the associated * ``NULL`` in the |stream_user_data|, which nullifies the associated
* data pointer. * data pointer.
* *
...@@ -1957,7 +1972,7 @@ int nghttp2_session_set_stream_user_data(nghttp2_session *session, ...@@ -1957,7 +1972,7 @@ int nghttp2_session_set_stream_user_data(nghttp2_session *session,
/** /**
* @function * @function
* *
* 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. * include the deferred DATA frames.
*/ */
size_t nghttp2_session_get_outbound_queue_size(nghttp2_session *session); size_t nghttp2_session_get_outbound_queue_size(nghttp2_session *session);
...@@ -1966,10 +1981,10 @@ size_t nghttp2_session_get_outbound_queue_size(nghttp2_session *session); ...@@ -1966,10 +1981,10 @@ size_t nghttp2_session_get_outbound_queue_size(nghttp2_session *session);
* @function * @function
* *
* Returns the number of DATA payload in bytes received without * 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 * (receive) window size can be adjusted by
* `nghttp2_submit_window_update()`. This function takes into account * `nghttp2_submit_window_update()`. This function takes into account
* that and returns effective data length. In particular, if the * that and returns effective data length. In particular, if the
* local window size is reduced by submitting negative * local window size is reduced by submitting negative
* window_size_increment with `nghttp2_submit_window_update()`, this * window_size_increment with `nghttp2_submit_window_update()`, this
* function returns the number of bytes less than actually received. * function returns the number of bytes less than actually received.
...@@ -1982,9 +1997,9 @@ int32_t nghttp2_session_get_stream_effective_recv_data_length ...@@ -1982,9 +1997,9 @@ int32_t nghttp2_session_get_stream_effective_recv_data_length
/** /**
* @function * @function
* *
* Returns the local (receive) window size for the stream * Returns the local (receive) window size for the stream |stream_id|.
* |stream_id|. The local window size can be adjusted by * The local window size can be adjusted by
* `nghttp2_submit_window_update()`. This function takes into account * `nghttp2_submit_window_update()`. This function takes into account
* that and returns effective window size. * that and returns effective window size.
* *
* This function returns -1 if it fails. * This function returns -1 if it fails.
...@@ -1996,13 +2011,13 @@ int32_t nghttp2_session_get_stream_effective_local_window_size ...@@ -1996,13 +2011,13 @@ int32_t nghttp2_session_get_stream_effective_local_window_size
* @function * @function
* *
* Returns the number of DATA payload in bytes received without * Returns the number of DATA payload in bytes received without
* WINDOW_UPDATE transmission for a connection. The local (receive) * WINDOW_UPDATE transmission for a connection. The local (receive)
* window size can be adjusted by * window size can be adjusted by `nghttp2_submit_window_update()`.
* `nghttp2_submit_window_update()`. This function takes into account * This function takes into account that and returns effective data
* that and returns effective data length. In particular, if the local * length. In particular, if the local window size is reduced by
* window size is reduced by submitting negative window_size_increment * submitting negative window_size_increment with
* with `nghttp2_submit_window_update()`, this function returns the * `nghttp2_submit_window_update()`, this function returns the number
* number of bytes less than actually received. * of bytes less than actually received.
* *
* This function returns -1 if it fails. * This function returns -1 if it fails.
*/ */
...@@ -2012,9 +2027,9 @@ int32_t nghttp2_session_get_effective_recv_data_length ...@@ -2012,9 +2027,9 @@ int32_t nghttp2_session_get_effective_recv_data_length
/** /**
* @function * @function
* *
* Returns the local (receive) window size for a connection. The local * Returns the local (receive) window size for a connection. The
* window size can be adjusted by * local window size can be adjusted by
* `nghttp2_submit_window_update()`. This function takes into account * `nghttp2_submit_window_update()`. This function takes into account
* that and returns effective window size. * that and returns effective window size.
* *
* This function returns -1 if it fails. * This function returns -1 if it fails.
...@@ -2040,16 +2055,16 @@ int32_t nghttp2_session_get_stream_remote_window_size(nghttp2_session* session, ...@@ -2040,16 +2055,16 @@ int32_t nghttp2_session_get_stream_remote_window_size(nghttp2_session* session,
* Signals the session so that the connection should be terminated. * Signals the session so that the connection should be terminated.
* *
* GOAWAY frame with the given |error_code| will be submitted if it * 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()` * `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 * this function is invoked, `nghttp2_session_want_read()` and
* `nghttp2_session_want_write()` returns 0 immediately after this * `nghttp2_session_want_write()` returns 0 immediately after this
* function succeeds. * function succeeds.
* *
* This function should be called when the connection should be * This function should be called when the connection should be
* terminated after sending GOAWAY. If the remaining streams should be * terminated after sending GOAWAY. If the remaining streams should
* processed after GOAWAY, use `nghttp2_submit_goaway()` instead. * be processed after GOAWAY, use `nghttp2_submit_goaway()` instead.
* *
* This function returns 0 if it succeeds, or one of the following * This function returns 0 if it succeeds, or one of the following
* negative error codes: * negative error codes:
...@@ -2063,28 +2078,27 @@ int nghttp2_session_terminate_session(nghttp2_session *session, ...@@ -2063,28 +2078,27 @@ int nghttp2_session_terminate_session(nghttp2_session *session,
/** /**
* @function * @function
* *
* Performs post-process of HTTP Upgrade request. This function can be * Performs post-process of HTTP Upgrade request. This function can
* called from both client and server, but the behavior is very * be called from both client and server, but the behavior is very
* different in each other. * different in each other.
* *
* If called from client side, the |settings_payload| must be the * If called from client side, the |settings_payload| must be the
* value sent in ``HTTP2-Settings`` header field and must be decoded * value sent in ``HTTP2-Settings`` header field and must be decoded
* by base64url decoder. The |settings_payloadlen| is the length of * by base64url decoder. The |settings_payloadlen| is the length of
* |settings_payload|. The |settings_payload| is unpacked and its * |settings_payload|. The |settings_payload| is unpacked and its
* setting values will be submitted using * setting values will be submitted using `nghttp2_submit_settings()`.
* `nghttp2_submit_settings()`. This means that the client application * This means that the client application code does not need to submit
* code does not need to submit SETTINGS by itself. The stream with * SETTINGS by itself. The stream with stream ID=1 is opened and the
* stream ID=1 is opened and the |stream_user_data| is used for its * |stream_user_data| is used for its stream_user_data. The opened
* stream_user_data. The opened stream becomes half-closed (local) * stream becomes half-closed (local) state.
* state.
* *
* If called from server side, the |settings_payload| must be the * If called from server side, the |settings_payload| must be the
* value received in ``HTTP2-Settings`` header field and must be * value received in ``HTTP2-Settings`` header field and must be
* decoded by base64url decoder. The |settings_payloadlen| is the * decoded by base64url decoder. The |settings_payloadlen| is the
* length of |settings_payload|. It is treated as if the SETTINGS * length of |settings_payload|. It is treated as if the SETTINGS
* frame with that payload is received. Thus, callback functions for * frame with that payload is received. Thus, callback functions for
* the reception of SETTINGS frame will be invoked. The stream with * the reception of SETTINGS frame will be invoked. The stream with
* stream ID=1 is opened. The |stream_user_data| is ignored. The * stream ID=1 is opened. The |stream_user_data| is ignored. The
* opened stream becomes half-closed (remote). * opened stream becomes half-closed (remote).
* *
* This function returns 0 if it succeeds, or one of the following * This function returns 0 if it succeeds, or one of the following
...@@ -2105,13 +2119,13 @@ int nghttp2_session_upgrade(nghttp2_session *session, ...@@ -2105,13 +2119,13 @@ int nghttp2_session_upgrade(nghttp2_session *session,
/** /**
* @function * @function
* *
* Serializes the SETTINGS values |iv| in the |buf|. The size of the * Serializes the SETTINGS values |iv| in the |buf|. The size of the
* |buf| is specified by |buflen|. The number of entries in the |iv| * |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| * 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 * 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 * 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. * base64url encoded and the application is responsible for encoding.
* *
* This function returns the number of bytes written in |buf|, or one * This function returns the number of bytes written in |buf|, or one
...@@ -2131,7 +2145,7 @@ ssize_t nghttp2_pack_settings_payload(uint8_t *buf, ...@@ -2131,7 +2145,7 @@ ssize_t nghttp2_pack_settings_payload(uint8_t *buf,
/** /**
* @function * @function
* *
* Returns string describing the |lib_error_code|. The * Returns string describing the |lib_error_code|. The
* |lib_error_code| must be one of the :enum:`nghttp2_error`. * |lib_error_code| must be one of the :enum:`nghttp2_error`.
*/ */
const char* nghttp2_strerror(int lib_error_code); const char* nghttp2_strerror(int lib_error_code);
...@@ -2160,7 +2174,7 @@ void nghttp2_priority_spec_group_init(nghttp2_priority_spec *pri_spec, ...@@ -2160,7 +2174,7 @@ void nghttp2_priority_spec_group_init(nghttp2_priority_spec *pri_spec,
* @function * @function
* *
* Initializes |pri_spec| with the |stream_id| of the stream to depend * 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. * flag is set.
*/ */
void nghttp2_priority_spec_dep_init(nghttp2_priority_spec *pri_spec, void nghttp2_priority_spec_dep_init(nghttp2_priority_spec *pri_spec,
...@@ -2179,26 +2193,26 @@ void nghttp2_priority_spec_dep_init(nghttp2_priority_spec *pri_spec, ...@@ -2179,26 +2193,26 @@ void nghttp2_priority_spec_dep_init(nghttp2_priority_spec *pri_spec,
* this function will copy its data members. * this function will copy its data members.
* *
* The |nva| is an array of name/value pair :type:`nghttp2_nv` with * The |nva| is an array of name/value pair :type:`nghttp2_nv` with
* |nvlen| elements. The value is opaque sequence of bytes and * |nvlen| elements. The value is opaque sequence of bytes and
* therefore can contain NULL byte (0x0). If the application requires * therefore can contain NULL byte (0x0). If the application requires
* that the ordering of values for a single header field name * that the ordering of values for a single header field name
* appearing in different header fields, it has to concatenate them * appearing in different header fields, it has to concatenate them
* using NULL byte (0x0) before passing them to this function. * using NULL byte (0x0) before passing them to this function.
* *
* HTTP/2 specification has requirement about header fields in the * 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 * This function creates copies of all name/value pairs in |nva|. It
* also lower-cases all names in |nva|. * also lower-cases all names in |nva|.
* *
* If |data_prd| is not ``NULL``, it provides data which will be sent * 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 * request message bodies
* (http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9) must * (http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9) must
* be specified with ``:method`` key in |nva| (e.g. ``POST``). This * be specified with ``:method`` key in |nva| (e.g. ``POST``). This
* function does not take ownership of the |data_prd|. The function * function does not take ownership of the |data_prd|. The function
* copies the members of the |data_prd|. If |data_prd| is ``NULL``, * copies the members of the |data_prd|. If |data_prd| is ``NULL``,
* HEADERS have END_STREAM set. The |stream_user_data| is data * HEADERS have END_STREAM set. The |stream_user_data| is data
* associated to the stream opened by this request and can be an * associated to the stream opened by this request and can be an
* arbitrary pointer, which can be retrieved later by * arbitrary pointer, which can be retrieved later by
* `nghttp2_session_get_stream_user_data()`. * `nghttp2_session_get_stream_user_data()`.
...@@ -2208,9 +2222,9 @@ void nghttp2_priority_spec_dep_init(nghttp2_priority_spec *pri_spec, ...@@ -2208,9 +2222,9 @@ void nghttp2_priority_spec_dep_init(nghttp2_priority_spec *pri_spec,
* stream ID must be strictly increasing, the stream ID of this * stream ID must be strictly increasing, the stream ID of this
* request cannot be known until it is about to sent. To know the * request cannot be known until it is about to sent. To know the
* stream ID of the request, the application can use * stream ID of the request, the application can use
* :member:`nghttp2_session_callbacks.before_frame_send_callback`. This * :member:`nghttp2_session_callbacks.before_frame_send_callback`.
* callback is called just before the frame is sent. For HEADERS * This callback is called just before the frame is sent. For HEADERS
* frame, the argument frame has the stream ID assigned. Also since * frame, the argument frame has the stream ID assigned. Also since
* the stream is already opened, * the stream is already opened,
* `nghttp2_session_get_stream_user_data()` can be used to get * `nghttp2_session_get_stream_user_data()` can be used to get
* |stream_user_data| to identify which HEADERS we are processing. * |stream_user_data| to identify which HEADERS we are processing.
...@@ -2220,6 +2234,8 @@ void nghttp2_priority_spec_dep_init(nghttp2_priority_spec *pri_spec, ...@@ -2220,6 +2234,8 @@ void nghttp2_priority_spec_dep_init(nghttp2_priority_spec *pri_spec,
* *
* :enum:`NGHTTP2_ERR_NOMEM` * :enum:`NGHTTP2_ERR_NOMEM`
* Out of memory. * Out of memory.
* :enum:`NGHTTP2_ERR_INVALID_ARGUMENT`
* The |pri_spec->pri_type| is invalid.
*/ */
int nghttp2_submit_request(nghttp2_session *session, int nghttp2_submit_request(nghttp2_session *session,
const nghttp2_priority_spec *pri_spec, const nghttp2_priority_spec *pri_spec,
...@@ -2234,29 +2250,29 @@ int nghttp2_submit_request(nghttp2_session *session, ...@@ -2234,29 +2250,29 @@ int nghttp2_submit_request(nghttp2_session *session,
* frames against the stream |stream_id|. * frames against the stream |stream_id|.
* *
* The |nva| is an array of name/value pair :type:`nghttp2_nv` with * The |nva| is an array of name/value pair :type:`nghttp2_nv` with
* |nvlen| elements. The value is opaque sequence of bytes and * |nvlen| elements. The value is opaque sequence of bytes and
* therefore can contain NULL byte (0x0). If the application requires * therefore can contain NULL byte (0x0). If the application requires
* that the ordering of values for a single header field name * that the ordering of values for a single header field name
* appearing in different header fields, it has to concatenate them * appearing in different header fields, it has to concatenate them
* using NULL byte (0x0) before passing them to this function. * using NULL byte (0x0) before passing them to this function.
* *
* HTTP/2 specification has requirement about header fields in the * 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 * This function creates copies of all name/value pairs in |nva|. It
* also lower-cases all names in |nva|. * also lower-cases all names in |nva|.
* *
* If |data_prd| is not ``NULL``, it provides data which will be sent * If |data_prd| is not ``NULL``, it provides data which will be sent
* in subsequent DATA frames. This function does not take ownership * 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 * |data_prd|. If |data_prd| is ``NULL``, HEADERS will have
* END_STREAM flag set. * END_STREAM flag set.
* *
* This method can be used as normal HTTP response and push * This method can be used as normal HTTP response and push response.
* response. When pushing a resource using this function, the * When pushing a resource using this function, the |session| must be
* |session| must be configured using `nghttp2_session_server_new()` * configured using `nghttp2_session_server_new()` or its variants and
* or its variants and the target stream denoted by the |stream_id| * the target stream denoted by the |stream_id| must be reserved using
* must be reserved using `nghttp2_submit_push_promise()`. * `nghttp2_submit_push_promise()`.
* *
* This function returns 0 if it succeeds, or one of the following * This function returns 0 if it succeeds, or one of the following
* negative error codes: * negative error codes:
...@@ -2285,8 +2301,8 @@ int nghttp2_submit_response(nghttp2_session *session, ...@@ -2285,8 +2301,8 @@ int nghttp2_submit_response(nghttp2_session *session,
* or CONTINUATION frame. * or CONTINUATION frame.
* *
* If the |stream_id| is -1, this frame is assumed as request (i.e., * 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 * request HEADERS frame which opens new stream). In this case, the
* actual stream ID is assigned just before the frame is sent. For * actual stream ID is assigned just before the frame is sent. For
* response, specify stream ID in |stream_id|. * response, specify stream ID in |stream_id|.
* *
* The |pri_spec| is priority specification of this request. ``NULL`` * The |pri_spec| is priority specification of this request. ``NULL``
...@@ -2297,8 +2313,8 @@ int nghttp2_submit_response(nghttp2_session *session, ...@@ -2297,8 +2313,8 @@ int nghttp2_submit_response(nghttp2_session *session,
* this function will copy its data members. * this function will copy its data members.
* *
* The |nva| is an array of name/value pair :type:`nghttp2_nv` with * The |nva| is an array of name/value pair :type:`nghttp2_nv` with
* |nvlen| elements. The value is opaque sequence of bytes and * |nvlen| elements. The value is opaque sequence of bytes and
* therefore can contain NULL byte (0x0). If the application requires * therefore can contain NULL byte (0x0). If the application requires
* that the ordering of values for a single header field name * that the ordering of values for a single header field name
* appearing in different header fields, it has to concatenate them * appearing in different header fields, it has to concatenate them
* using NULL byte (0x0) before passing them to this function. * using NULL byte (0x0) before passing them to this function.
...@@ -2307,12 +2323,12 @@ int nghttp2_submit_response(nghttp2_session *session, ...@@ -2307,12 +2323,12 @@ int nghttp2_submit_response(nghttp2_session *session,
* also lower-cases all names in |nva|. * also lower-cases all names in |nva|.
* *
* The |stream_user_data| is a pointer to an arbitrary data which is * 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 * associated to the stream this frame will open. Therefore it is
* used if this frame opens streams, in other words, it changes stream * only used if this frame opens streams, in other words, it changes
* state from idle or reserved to open. * stream state from idle or reserved to open.
* *
* This function is low-level in a sense that the application code can * 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. * `nghttp2_submit_request()` is useful.
* *
* This function returns 0 if it succeeds, or one of the following * This function returns 0 if it succeeds, or one of the following
...@@ -2320,6 +2336,8 @@ int nghttp2_submit_response(nghttp2_session *session, ...@@ -2320,6 +2336,8 @@ int nghttp2_submit_response(nghttp2_session *session,
* *
* :enum:`NGHTTP2_ERR_NOMEM` * :enum:`NGHTTP2_ERR_NOMEM`
* Out of memory. * Out of memory.
* :enum:`NGHTTP2_ERR_INVALID_ARGUMENT`
* The |pri_spec->pri_type| is invalid.
*/ */
int nghttp2_submit_headers(nghttp2_session *session, uint8_t flags, int nghttp2_submit_headers(nghttp2_session *session, uint8_t flags,
int32_t stream_id, int32_t stream_id,
...@@ -2331,12 +2349,12 @@ int nghttp2_submit_headers(nghttp2_session *session, uint8_t flags, ...@@ -2331,12 +2349,12 @@ int nghttp2_submit_headers(nghttp2_session *session, uint8_t flags,
* @function * @function
* *
* Submits one or more DATA frames to the stream |stream_id|. The * 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
* :enum:`NGHTTP2_FLAG_END_STREAM`, the last DATA frame has END_STREAM * :enum:`NGHTTP2_FLAG_END_STREAM`, the last DATA frame has END_STREAM
* flag set. If |flags| contains :enum:`NGHTTP2_FLAG_END_SEGMENT`, the * flag set. If |flags| contains :enum:`NGHTTP2_FLAG_END_SEGMENT`,
* last DATA frame has END_SEGMENT flag set. * the last DATA frame has END_SEGMENT flag set.
* *
* This function does not take ownership of the |data_prd|. The * This function does not take ownership of the |data_prd|. The
* function copies the members of the |data_prd|. * function copies the members of the |data_prd|.
* *
* This function returns 0 if it succeeds, or one of the following * This function returns 0 if it succeeds, or one of the following
...@@ -2372,7 +2390,8 @@ int nghttp2_submit_data(nghttp2_session *session, uint8_t flags, ...@@ -2372,7 +2390,8 @@ int nghttp2_submit_data(nghttp2_session *session, uint8_t flags,
* :enum:`NGHTTP2_ERR_NOMEM` * :enum:`NGHTTP2_ERR_NOMEM`
* Out of memory. * Out of memory.
* :enum:`NGHTTP2_ERR_INVALID_ARGUMENT` * :enum:`NGHTTP2_ERR_INVALID_ARGUMENT`
* The |pri_spec| is NULL; or trying to depend on itself. * The |pri_spec| is NULL; or the |pri_spec->pri_type| is invalid;
* or trying to depend on itself.
*/ */
int nghttp2_submit_priority(nghttp2_session *session, uint8_t flags, int nghttp2_submit_priority(nghttp2_session *session, uint8_t flags,
int32_t stream_id, int32_t stream_id,
...@@ -2400,14 +2419,14 @@ int nghttp2_submit_rst_stream(nghttp2_session *session, uint8_t flags, ...@@ -2400,14 +2419,14 @@ int nghttp2_submit_rst_stream(nghttp2_session *session, uint8_t flags,
/** /**
* @function * @function
* *
* Stores local settings and submits SETTINGS frame. The |iv| is the * Stores local settings and submits SETTINGS frame. The |iv| is the
* pointer to the array of :type:`nghttp2_settings_entry`. The |niv| * pointer to the array of :type:`nghttp2_settings_entry`. The |niv|
* indicates the number of :type:`nghttp2_settings_entry`. * indicates the number of :type:`nghttp2_settings_entry`.
* *
* The |flags| is currently ignored and should be * The |flags| is currently ignored and should be
* :enum:`NGHTTP2_FLAG_NONE`. * :enum:`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|. * copies all the elements in the |iv|.
* *
* While updating individual stream's local window size, if the window * While updating individual stream's local window size, if the window
...@@ -2439,15 +2458,15 @@ int nghttp2_submit_settings(nghttp2_session *session, uint8_t flags, ...@@ -2439,15 +2458,15 @@ int nghttp2_submit_settings(nghttp2_session *session, uint8_t flags,
* *
* Submits PUSH_PROMISE frame. * 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 * CONTINUATION frame internally and it correctly sets END_HEADERS to
* the last sequence of the PUSH_PROMISE or CONTINUATION frame. * the last sequence of the PUSH_PROMISE or CONTINUATION frame.
* *
* The |stream_id| must be client initiated stream ID. * The |stream_id| must be client initiated stream ID.
* *
* The |nva| is an array of name/value pair :type:`nghttp2_nv` with * The |nva| is an array of name/value pair :type:`nghttp2_nv` with
* |nvlen| elements. The value is opaque sequence of bytes and * |nvlen| elements. The value is opaque sequence of bytes and
* therefore can contain NULL byte (0x0). If the application requires * therefore can contain NULL byte (0x0). If the application requires
* that the ordering of values for a single header field name * that the ordering of values for a single header field name
* appearing in different header fields, it has to concatenate them * appearing in different header fields, it has to concatenate them
* using NULL byte (0x0) before passing them to this function. * using NULL byte (0x0) before passing them to this function.
...@@ -2457,8 +2476,8 @@ int nghttp2_submit_settings(nghttp2_session *session, uint8_t flags, ...@@ -2457,8 +2476,8 @@ int nghttp2_submit_settings(nghttp2_session *session, uint8_t flags,
* *
* The |promised_stream_user_data| is a pointer to an arbitrary data * The |promised_stream_user_data| is a pointer to an arbitrary data
* which is associated to the promised stream this frame will open and * which is associated to the promised stream this frame will open and
* make it in reserved state. It is available using * make it in reserved state. It is available using
* `nghttp2_session_get_stream_user_data()`. The application can * `nghttp2_session_get_stream_user_data()`. The application can
* access it in :type:`nghttp2_before_frame_send_callback` and * access it in :type:`nghttp2_before_frame_send_callback` and
* :type:`nghttp2_on_frame_send_callback` of this frame. * :type:`nghttp2_on_frame_send_callback` of this frame.
* *
...@@ -2467,18 +2486,21 @@ int nghttp2_submit_settings(nghttp2_session *session, uint8_t flags, ...@@ -2467,18 +2486,21 @@ int nghttp2_submit_settings(nghttp2_session *session, uint8_t flags,
* stream ID must be strictly increasing, the promised stream ID * stream ID must be strictly increasing, the promised stream ID
* cannot be known until it is about to sent. To know the promised * cannot be known until it is about to sent. To know the promised
* stream ID, the application can use * stream ID, the application can use
* :member:`nghttp2_session_callbacks.before_frame_send_callback`. This * :member:`nghttp2_session_callbacks.before_frame_send_callback`.
* callback is called just before the frame is sent. For PUSH_PROMISE * This callback is called just before the frame is sent. For
* frame, the argument frame has the promised stream ID assigned. * 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 * The client side is not allowed to use this function.
* server. But in normal HTTP usage, the server may treat it error.
* *
* This function returns 0 if it succeeds, or one of the following * This function returns 0 if it succeeds, or one of the following
* negative error codes: * negative error codes:
* *
* :enum:`NGHTTP2_ERR_NOMEM` * :enum:`NGHTTP2_ERR_NOMEM`
* Out of memory. * Out of memory.
* :enum:`NGHTTP2_ERR_PROTO`
* This function was invoked when |session| is initialized as
* client.
*/ */
int nghttp2_submit_push_promise(nghttp2_session *session, uint8_t flags, int nghttp2_submit_push_promise(nghttp2_session *session, uint8_t flags,
int32_t stream_id, int32_t stream_id,
...@@ -2488,8 +2510,8 @@ int nghttp2_submit_push_promise(nghttp2_session *session, uint8_t flags, ...@@ -2488,8 +2510,8 @@ int nghttp2_submit_push_promise(nghttp2_session *session, uint8_t flags,
/** /**
* @function * @function
* *
* Submits PING frame. You don't have to send PING back when you * Submits PING frame. You don't have to send PING back when you
* received PING frame. The library automatically submits PING frame * received PING frame. The library automatically submits PING frame
* in this case. * in this case.
* *
* The |flags| is currently ignored and should be * The |flags| is currently ignored and should be
...@@ -2497,7 +2519,7 @@ int nghttp2_submit_push_promise(nghttp2_session *session, uint8_t flags, ...@@ -2497,7 +2519,7 @@ int nghttp2_submit_push_promise(nghttp2_session *session, uint8_t flags,
* *
* If the |opaque_data| is non ``NULL``, then it should point to the 8 * 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 * 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. * be sent as opaque data.
* *
* This function returns 0 if it succeeds, or one of the following * This function returns 0 if it succeeds, or one of the following
...@@ -2521,7 +2543,7 @@ int nghttp2_submit_ping(nghttp2_session *session, uint8_t flags, ...@@ -2521,7 +2543,7 @@ int nghttp2_submit_ping(nghttp2_session *session, uint8_t flags,
* zero, those data will be sent as additional debug data. The * zero, those data will be sent as additional debug data. The
* library makes a copy of the memory region pointed by |opaque_data| * library makes a copy of the memory region pointed by |opaque_data|
* with the length |opaque_data_len|, so the caller does not need to * with the length |opaque_data_len|, so the caller does not need to
* keep this memory after the return of this function. If the * keep this memory after the return of this function. If the
* |opaque_data_len| is 0, the |opaque_data| could be ``NULL``. * |opaque_data_len| is 0, the |opaque_data| could be ``NULL``.
* *
* This function returns 0 if it succeeds, or one of the following * This function returns 0 if it succeeds, or one of the following
...@@ -2545,7 +2567,7 @@ int nghttp2_submit_goaway(nghttp2_session *session, uint8_t flags, ...@@ -2545,7 +2567,7 @@ int nghttp2_submit_goaway(nghttp2_session *session, uint8_t flags,
* :enum:`NGHTTP2_FLAG_NONE`. * :enum:`NGHTTP2_FLAG_NONE`.
* *
* If the |window_size_increment| is positive, the WINDOW_UPDATE with * 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 * |window_size_increment| is larger than the received bytes from the
* remote endpoint, the local window size is increased by that * remote endpoint, the local window size is increased by that
* difference. * difference.
...@@ -2596,7 +2618,7 @@ int nghttp2_submit_window_update(nghttp2_session *session, uint8_t flags, ...@@ -2596,7 +2618,7 @@ int nghttp2_submit_window_update(nghttp2_session *session, uint8_t flags,
* *
* :enum:`NGHTTP2_ERR_NOMEM` * :enum:`NGHTTP2_ERR_NOMEM`
* Out of memory. * Out of memory.
* :enum:`NGHTTP2_ERR_INVALID_STATE` * :enum:`NGHTTP2_ERR_PROTO`
* The function is invoked with |session| which was initialized as * The function is invoked with |session| which was initialized as
* client. * client.
* :enum:`NGHTTP2_ERR_INVALID_ARGUMENT` * :enum:`NGHTTP2_ERR_INVALID_ARGUMENT`
...@@ -2613,10 +2635,11 @@ int nghttp2_submit_altsvc(nghttp2_session *session, uint8_t flags, ...@@ -2613,10 +2635,11 @@ int nghttp2_submit_altsvc(nghttp2_session *session, uint8_t flags,
/** /**
* @function * @function
* *
* Compares lhs->name with lhs->namelen bytes and rhs->name with * Compares ``lhs->name`` of length ``lhs->namelen`` bytes and
* rhs->namelen bytes. Returns negative integer if lhs->name is found * ``rhs->name`` of length ``rhs->namelen`` bytes. Returns negative
* to be less than rhs->name; or returns positive integer if lhs->name * integer if ``lhs->name`` is found to be less than ``rhs->name``; or
* is found to be greater than rhs->name; or returns 0 otherwise. * returns positive integer if ``lhs->name`` is found to be greater
* than ``rhs->name``; or returns 0 otherwise.
*/ */
int nghttp2_nv_compare_name(const nghttp2_nv *lhs, const nghttp2_nv *rhs); int nghttp2_nv_compare_name(const nghttp2_nv *lhs, const nghttp2_nv *rhs);
...@@ -2624,7 +2647,7 @@ int nghttp2_nv_compare_name(const nghttp2_nv *lhs, const nghttp2_nv *rhs); ...@@ -2624,7 +2647,7 @@ int nghttp2_nv_compare_name(const nghttp2_nv *lhs, const nghttp2_nv *rhs);
* @function * @function
* *
* A helper function for dealing with NPN in client side or ALPN in * 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 * order. The format of |in| is length-prefixed and not
* null-terminated. For example, ``HTTP-draft-04/2.0`` and * null-terminated. For example, ``HTTP-draft-04/2.0`` and
* ``http/1.1`` stored in |in| like this:: * ``http/1.1`` stored in |in| like this::
...@@ -2641,18 +2664,18 @@ int nghttp2_nv_compare_name(const nghttp2_nv *lhs, const nghttp2_nv *rhs); ...@@ -2641,18 +2664,18 @@ int nghttp2_nv_compare_name(const nghttp2_nv *lhs, const nghttp2_nv *rhs);
* it is selected and returns 1. The following step is not taken. * it is selected and returns 1. The following step is not taken.
* *
* 2. If peer's list contains ``http/1.1``, this function selects * 2. If peer's list contains ``http/1.1``, this function selects
* ``http/1.1`` and returns 0. The following step is not taken. * ``http/1.1`` and returns 0. The following step is not taken.
* *
* 3. This function selects nothing and returns -1. (So called * 3. This function selects nothing and returns -1 (So called
* non-overlap case). In this case, |out| and |outlen| are left * non-overlap case). In this case, |out| and |outlen| are left
* untouched. * untouched.
* *
* Selecting ``HTTP-draft-04/2.0`` means that ``HTTP-draft-04/2.0`` is * Selecting ``HTTP-draft-04/2.0`` means that ``HTTP-draft-04/2.0`` is
* written into |*out| and its length (which is 17) is * written into |*out| and its length (which is 17) is assigned to
* assigned to |*outlen|. * |*outlen|.
* *
* For ALPN, refer to * For ALPN, refer to
* http://tools.ietf.org/html/draft-ietf-tls-applayerprotoneg-04 * https://tools.ietf.org/html/draft-ietf-tls-applayerprotoneg-05
* *
* See http://technotes.googlecode.com/git/nextprotoneg.html for more * See http://technotes.googlecode.com/git/nextprotoneg.html for more
* details about NPN. * details about NPN.
...@@ -2685,7 +2708,7 @@ struct nghttp2_gzip; ...@@ -2685,7 +2708,7 @@ struct nghttp2_gzip;
/** /**
* @struct * @struct
* *
* 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. * intentionally hidden from the public API.
*/ */
typedef struct nghttp2_gzip nghttp2_gzip; typedef struct nghttp2_gzip nghttp2_gzip;
...@@ -2693,7 +2716,8 @@ typedef struct nghttp2_gzip nghttp2_gzip; ...@@ -2693,7 +2716,8 @@ typedef struct nghttp2_gzip nghttp2_gzip;
/** /**
* @function * @function
* *
* 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 * This function returns 0 if it succeeds, or one of the following
* negative error codes: * negative error codes:
...@@ -2717,7 +2741,7 @@ void nghttp2_gzip_inflate_del(nghttp2_gzip *inflater); ...@@ -2717,7 +2741,7 @@ void nghttp2_gzip_inflate_del(nghttp2_gzip *inflater);
* *
* Inflates data in |in| with the length |*inlen_ptr| and stores the * Inflates data in |in| with the length |*inlen_ptr| and stores the
* inflated data to |out| which has allocated size at least * 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 * the number of data written in |out|. Similarly, |*inlen_ptr| is
* updated to represent the number of input bytes processed. * updated to represent the number of input bytes processed.
* *
...@@ -2763,11 +2787,11 @@ int nghttp2_gzip_inflate(nghttp2_gzip *inflater, ...@@ -2763,11 +2787,11 @@ int nghttp2_gzip_inflate(nghttp2_gzip *inflater,
/** /**
* @function * @function
* *
* Returns a pointer to a nghttp2_info struct with version information about * Returns a pointer to a nghttp2_info struct with version information
* the run-time library in use. The |least_version| argument can be set to a * about the run-time library in use. The |least_version| argument
* 24 bit numerical value for the least accepted version number and if the * can be set to a 24 bit numerical value for the least accepted
* condition is not met, this function will return a NULL. Pass in 0 to skip * version number and if the condition is not met, this function will
* the version checking. * return a ``NULL``. Pass in 0 to skip the version checking.
*/ */
nghttp2_info *nghttp2_version(int least_version); nghttp2_info *nghttp2_version(int least_version);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment