Update doc

This commit is contained in:
Tatsuhiro Tsujikawa 2016-09-24 10:42:50 +09:00
parent 2052a1a4bd
commit 60222ae7c3
1 changed files with 8 additions and 4 deletions

View File

@ -206,6 +206,10 @@ default transmission order does not fit, it has to schedule frames by
itself using the callbacks (e.g., itself using the callbacks (e.g.,
:type:`nghttp2_on_frame_send_callback`). :type:`nghttp2_on_frame_send_callback`).
RST_STREAM has special side effect when it is submitted by
`nghttp2_submit_rst_stream()`. It cancels all pending HEADERS and
DATA frames whose stream ID matches the one in the RST_STREAM frame.
This may cause unexpected behaviour for the application in some cases.
For example, suppose that application wants to send RST_STREAM after For example, suppose that application wants to send RST_STREAM after
sending response HEADERS and DATA. Because of the reason we mentioned sending response HEADERS and DATA. Because of the reason we mentioned
above, the following code does not work: above, the following code does not work:
@ -215,12 +219,12 @@ above, the following code does not work:
nghttp2_submit_response(...) nghttp2_submit_response(...)
nghttp2_submit_rst_stream(...) nghttp2_submit_rst_stream(...)
This is because HEADERS submitted by `nghttp2_submit_response()` is RST_STREAM cancels HEADERS (and DATA), and just RST_STREAM is sent.
scheduled after RST_STREAM submitted by `nghttp2_submit_rst_stream()`.
The correct way is use :type:`nghttp2_on_frame_send_callback`, and The correct way is use :type:`nghttp2_on_frame_send_callback`, and
after HEADERS and DATA frames are sent, issue after HEADERS and DATA frames are sent, issue
`nghttp2_submit_rst_stream()`. `nghttp2_submit_rst_stream()`. FYI,
:type:`nghttp2_on_frame_not_send_callback` tells you why frames are
not sent.
Implement user defined HTTP/2 non-critical extensions Implement user defined HTTP/2 non-critical extensions
----------------------------------------------------- -----------------------------------------------------