Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
nghttp2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
nghttp2
Commits
792938d4
Commit
792938d4
authored
Apr 09, 2014
by
Tatsuhiro Tsujikawa
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update doc
parent
9b3d5a8b
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
359 additions
and
335 deletions
+359
-335
lib/includes/nghttp2/nghttp2.h
lib/includes/nghttp2/nghttp2.h
+359
-335
No files found.
lib/includes/nghttp2/nghttp2.h
View file @
792938d4
...
@@ -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 th
e
*
in US-ASCII character set and not lower cased; or the header nam
e
*
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
* t
emporarily. To move back deferred DATA frame to outgoing queue,
* t
he outgoing queue temporarily. To move back deferred DATA frame
*
call `nghttp2_session_resume_data()`. In case of error, there ar
e
*
to outgoing queue, call `nghttp2_session_resume_data()`. In cas
e
*
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 t
he
*
Returning 0 is treated as :enum:`NGHTTP2_ERR_WOULDBLOCK`. T
he
* 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
a
frame
* 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
* m
uch padding is required for the transmission of the |frame|. T
he
* m
any padding bytes are required for the transmission of t
he
*
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, th
is
*
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 th
e
*
rejection of some requests. Specifying this option to the sensibl
e
*
sensible value, say 100, may avoid this kind of issue. This valu
e
*
value, say 100, may avoid this kind of issue. This value will b
e
*
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,
* i
s replaced with the |stream_user_data|.
It is valid to specify
* i
t 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, th
e
*
When pushing a resource using this function, the |session| must b
e
*
|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.
* st
ream st
ate 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
* http
s://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
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment