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

Update doc

parent 9b3d5a8b
...@@ -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,8 +328,11 @@ typedef enum { ...@@ -328,8 +328,11 @@ 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,
/** /**
...@@ -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 {
/** /**
...@@ -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,
...@@ -819,6 +822,7 @@ typedef struct { ...@@ -819,6 +822,7 @@ typedef struct {
/** /**
* @struct * @struct
*
* The HEADERS frame. It has the following members: * The HEADERS frame. It has the following members:
*/ */
typedef struct { typedef struct {
...@@ -851,6 +855,7 @@ typedef struct { ...@@ -851,6 +855,7 @@ 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,6 +871,7 @@ typedef struct { ...@@ -866,6 +871,7 @@ 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 {
...@@ -881,6 +887,7 @@ typedef struct { ...@@ -881,6 +887,7 @@ typedef struct {
/** /**
* @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 {
...@@ -896,6 +903,7 @@ typedef struct { ...@@ -896,6 +903,7 @@ 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,6 +923,7 @@ typedef struct { ...@@ -915,6 +923,7 @@ 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 {
...@@ -943,6 +952,7 @@ typedef struct { ...@@ -943,6 +952,7 @@ 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,6 +968,7 @@ typedef struct { ...@@ -958,6 +968,7 @@ typedef struct {
/** /**
* @struct * @struct
*
* The GOAWAY frame. It has the following members: * The GOAWAY 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 {
/** /**
...@@ -1105,15 +1116,15 @@ typedef union { ...@@ -1105,15 +1116,15 @@ typedef union {
* |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,
...@@ -1125,19 +1136,19 @@ typedef ssize_t (*nghttp2_send_callback) ...@@ -1125,19 +1136,19 @@ typedef ssize_t (*nghttp2_send_callback)
* 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,7 +1158,7 @@ typedef ssize_t (*nghttp2_recv_callback) ...@@ -1147,7 +1158,7 @@ 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()`.
...@@ -1163,14 +1174,14 @@ typedef ssize_t (*nghttp2_recv_callback) ...@@ -1163,14 +1174,14 @@ typedef ssize_t (*nghttp2_recv_callback)
* 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);
...@@ -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`.
*/ */
...@@ -1204,25 +1215,25 @@ typedef int (*nghttp2_on_invalid_frame_recv_callback) ...@@ -1204,25 +1215,25 @@ typedef int (*nghttp2_on_invalid_frame_recv_callback)
* *
* 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`.
*/ */
...@@ -1241,8 +1252,8 @@ typedef int (*nghttp2_on_data_chunk_recv_callback) ...@@ -1241,8 +1252,8 @@ typedef int (*nghttp2_on_data_chunk_recv_callback)
* 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`.
*/ */
...@@ -1274,8 +1285,8 @@ typedef int (*nghttp2_on_frame_send_callback) ...@@ -1274,8 +1285,8 @@ typedef int (*nghttp2_on_frame_send_callback)
* 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`.
*/ */
...@@ -1393,18 +1405,18 @@ typedef int (*nghttp2_on_begin_headers_callback) ...@@ -1393,18 +1405,18 @@ typedef int (*nghttp2_on_begin_headers_callback)
* :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
...@@ -1425,9 +1437,9 @@ typedef int (*nghttp2_on_header_callback) ...@@ -1425,9 +1437,9 @@ 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
...@@ -1450,15 +1462,15 @@ typedef struct { ...@@ -1450,15 +1462,15 @@ 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;
...@@ -1568,9 +1581,9 @@ void nghttp2_option_set_no_auto_stream_window_update(nghttp2_option *option, ...@@ -1568,9 +1581,9 @@ void nghttp2_option_set_no_auto_stream_window_update(nghttp2_option *option,
* 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);
...@@ -1583,11 +1596,11 @@ void nghttp2_option_set_no_auto_connection_window_update ...@@ -1583,11 +1596,11 @@ void nghttp2_option_set_no_auto_connection_window_update
* 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,
...@@ -1598,7 +1611,7 @@ void nghttp2_option_set_peer_max_concurrent_streams(nghttp2_option *option, ...@@ -1598,7 +1611,7 @@ void nghttp2_option_set_peer_max_concurrent_streams(nghttp2_option *option,
* *
* 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
...@@ -1621,7 +1634,7 @@ int nghttp2_session_client_new(nghttp2_session **session_ptr, ...@@ -1621,7 +1634,7 @@ int nghttp2_session_client_new(nghttp2_session **session_ptr,
* *
* 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
...@@ -1716,19 +1729,20 @@ void nghttp2_session_del(nghttp2_session *session); ...@@ -1716,19 +1729,20 @@ void nghttp2_session_del(nghttp2_session *session);
* 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()`.
...@@ -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.
* *
...@@ -1982,8 +1997,8 @@ int32_t nghttp2_session_get_stream_effective_recv_data_length ...@@ -1982,8 +1997,8 @@ 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.
* *
...@@ -1997,12 +2012,12 @@ int32_t nghttp2_session_get_stream_effective_local_window_size ...@@ -1997,12 +2012,12 @@ int32_t nghttp2_session_get_stream_effective_local_window_size
* *
* 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,8 +2027,8 @@ int32_t nghttp2_session_get_effective_recv_data_length ...@@ -2012,8 +2027,8 @@ 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.
* *
...@@ -2048,8 +2063,8 @@ int32_t nghttp2_session_get_stream_remote_window_size(nghttp2_session* session, ...@@ -2048,8 +2063,8 @@ int32_t nghttp2_session_get_stream_remote_window_size(nghttp2_session* session,
* 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,20 +2078,19 @@ int nghttp2_session_terminate_session(nghttp2_session *session, ...@@ -2063,20 +2078,19 @@ 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
...@@ -2208,8 +2222,8 @@ void nghttp2_priority_spec_dep_init(nghttp2_priority_spec *pri_spec, ...@@ -2208,8 +2222,8 @@ 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
...@@ -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,
...@@ -2252,11 +2268,11 @@ int nghttp2_submit_request(nghttp2_session *session, ...@@ -2252,11 +2268,11 @@ int nghttp2_submit_request(nghttp2_session *session,
* |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:
...@@ -2307,9 +2323,9 @@ int nghttp2_submit_response(nghttp2_session *session, ...@@ -2307,9 +2323,9 @@ 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,
...@@ -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,
...@@ -2333,8 +2351,8 @@ int nghttp2_submit_headers(nghttp2_session *session, uint8_t flags, ...@@ -2333,8 +2351,8 @@ int nghttp2_submit_headers(nghttp2_session *session, uint8_t flags,
* 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|.
...@@ -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,
...@@ -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,
...@@ -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);
...@@ -2643,16 +2666,16 @@ int nghttp2_nv_compare_name(const nghttp2_nv *lhs, const nghttp2_nv *rhs); ...@@ -2643,16 +2666,16 @@ int nghttp2_nv_compare_name(const nghttp2_nv *lhs, const nghttp2_nv *rhs);
* 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.
...@@ -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:
...@@ -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