Tatsuhiro Tsujikawa
41e266181e
nghttpx: Attempt to improve HTTP/2 backend connection check
...
It turns out that writing successfully to network is not enough.
After apparently successful network write, read fails and then we
first know network has been lost (at least my android mobile network).
In this change, we say connection check is successful only when
successful read. We already send PING in this case, so we just wait
PING ACK with short timeout. If timeout has expired, drop connection.
Since waiting for PING ACK could degrade performance for fast reliably
connected network, we decided to disable connection check by default.
Use --backend-http2-connection-check to enable it.
2015-03-09 23:37:54 +09:00
Tatsuhiro Tsujikawa
6b7e6166f9
Merge branch 'kazuho-kazuho/issues/177'
2015-03-09 21:11:10 +09:00
Kazuho Oku
2a4f347dbc
do not send pseudo-headers when in HTTP/1
2015-03-09 11:40:13 +09:00
Tatsuhiro Tsujikawa
bff5a28d12
Merge branch 'nghttpx-trailer'
2015-03-08 19:32:49 +09:00
Tatsuhiro Tsujikawa
5c31c130bd
integration: Add test case for trailer part
2015-03-08 19:31:43 +09:00
Tatsuhiro Tsujikawa
b9d6fff962
nghttpx: Allow accepting trailer part in h1 frontend
...
Downstream's headers mutation functions have been rewritten to share
code.
2015-03-08 18:39:45 +09:00
Tatsuhiro Tsujikawa
9ffbc45ba6
nghttpx: Allow sending trailer part in h1 backend link
2015-03-08 17:58:00 +09:00
Tatsuhiro Tsujikawa
961f41d7ce
nghttp, nghttpd: Add trailer header field when sending trailer part
2015-03-08 17:52:36 +09:00
Tatsuhiro Tsujikawa
928d3e5f3f
nghttpx: Allow sending trailer header field
2015-03-08 17:51:52 +09:00
Tatsuhiro Tsujikawa
42eeebc7f6
nghttpx: Add function to send trailer part in h1 frontend
2015-03-08 17:32:38 +09:00
Tatsuhiro Tsujikawa
991baf9e69
nghttpx: Use http2::copy_headers_to_nva in trailer part handling
2015-03-08 17:32:01 +09:00
Tatsuhiro Tsujikawa
6ad63a06b0
nghttpx: Support response trailer part handling in h1 backend
2015-03-08 17:20:38 +09:00
Tatsuhiro Tsujikawa
60c2fe5a2e
nghttpx: Support trailer-part in h2 <- h2 path
2015-03-08 16:48:45 +09:00
Tatsuhiro Tsujikawa
41b5077330
nghttpx: Support trailer part in h2 -> h2 path
2015-03-08 16:33:40 +09:00
Tatsuhiro Tsujikawa
d10dc4bb9b
nghttp, nghttpd: Clean up around NGHTTP2_DATA_FLAG_NO_END_STREAM
2015-03-08 16:28:23 +09:00
Tatsuhiro Tsujikawa
c4b487be05
asio: Add client::request::write_trailer()
2015-03-07 23:04:31 +09:00
Tatsuhiro Tsujikawa
c976a0fcd1
asio: Add server::response::write_trailer()
2015-03-07 19:26:42 +09:00
Tatsuhiro Tsujikawa
5b5034f19c
Merge branch 'trailer'
2015-03-07 18:02:50 +09:00
Tatsuhiro Tsujikawa
dd9e829ee1
Document NGHTTP2_DATA_FLAG_NO_END_STREAM in nghttp2_data_source_read_callback
2015-03-07 17:59:58 +09:00
Tatsuhiro Tsujikawa
80a7523b49
nghttpd: Add --trailer to send trailer header fields
2015-03-07 17:50:03 +09:00
Tatsuhiro Tsujikawa
4c55a2340b
nghttp: Add --trailer optiont to send trailer header fields with -d option
2015-03-07 17:45:46 +09:00
Tatsuhiro Tsujikawa
2f2a535113
Add a way to send trailer with nghttp2_submit_request/nghttp2_submit_response
...
nghttp2_submit_request and nghttp2_submit_response will set
NGHTTP2_FLAG_END_STREAM after all given data is sent (data could be
0). This means we have no way to send trailers. In this commit, we
added NGHTTP2_DATA_FLAG_NO_END_STREAM flag. The application can set
this flag in *data_flags inside nghttp2_data_source_read_callback. If
NGHTTP2_DATA_FLAG_EOF is set, library automatically set
NGHTTP2_FLAG_END_STREAM. But if both NGHTTP2_DATA_FLAG_EOF and
NGHTTP2_DATA_FLAG_NO_END_STREAM are set, NGHTTP2_FLAG_END_STREAM will
not set by library. Then application can use new
nghttp2_submit_trailer() to send trailers. nghttp2_submit_trailer()
will set NGHTTP2_FLAG_END_STREAM and it is actually thing wrapper of
nghttp2_submit_headers().
2015-03-07 17:09:29 +09:00
Tatsuhiro Tsujikawa
505a300d93
Refuse PUSH_PROMISE while unacked local ENABLE_PUSH is 0
...
After we sent SETTINGS including ENABLE_PUSH = 0, peer may already
issue PUSH_PROMISE before receiving our SETTINGS and react it to
SETTINGS ACK. Previously we accept this PUSH_PROMISE. In this
commit, we check the pending ENABLE_PUSH value and if it means
disabling push, we refuse PUSH_PROMISE with RST_STREAM of error
REFUSED_STREAM.
2015-03-07 16:17:40 +09:00
Tatsuhiro Tsujikawa
4236fa603f
Document asio linking
2015-03-07 15:55:47 +09:00
Tatsuhiro Tsujikawa
196d7da53f
nghttpx: Use http2::expect_response_body()
2015-03-07 15:50:52 +09:00
Tatsuhiro Tsujikawa
6824319fe6
asio: Link with http-parser
2015-03-07 15:48:38 +09:00
Tatsuhiro Tsujikawa
66d00954a5
asio: Quote ServeMux documents in http2::handle()
2015-03-07 03:17:13 +09:00
Tatsuhiro Tsujikawa
76eb3193ab
Update documents using updated libnghttp2_asio API, including client API
2015-03-07 03:12:13 +09:00
Tatsuhiro Tsujikawa
66f5438dc9
asio: Remove eof check in asio-cl.cc
2015-03-07 03:10:37 +09:00
Tatsuhiro Tsujikawa
45164b6761
asio: asio-cl: Shutdown session on closure of first stream
2015-03-07 01:42:01 +09:00
Tatsuhiro Tsujikawa
ceefddd332
asio: Remove unused captured variable
2015-03-07 01:39:25 +09:00
Tatsuhiro Tsujikawa
a043230371
asio: Fix crach in client code
2015-03-07 01:38:59 +09:00
Tatsuhiro Tsujikawa
c2f49fa478
nghttpd: Fix bug that date header field value is not updated
2015-03-07 01:10:49 +09:00
Tatsuhiro Tsujikawa
fe17a20f84
Update README.rst
2015-03-07 01:10:49 +09:00
Tatsuhiro Tsujikawa
773b108eeb
asio: Add noexcept for move constructor and move assignment operator
2015-03-07 01:10:49 +09:00
Tatsuhiro Tsujikawa
36a9cbf41f
asio: Use large window size for client
2015-03-07 01:10:49 +09:00
Tatsuhiro Tsujikawa
f8182333b4
asio: Improve date header field precision
2015-03-07 01:10:49 +09:00
Tatsuhiro Tsujikawa
c3265de625
asio: Remove signal handling from server
2015-03-07 01:10:49 +09:00
Tatsuhiro Tsujikawa
b24bd3d8cb
asio: Use host_service_from_uri in asio-cl2.cc
2015-03-07 01:10:49 +09:00
Tatsuhiro Tsujikawa
fa21b95274
asio: Provide move constructor and move assignment operator to server::http2
2015-03-07 01:10:49 +09:00
Tatsuhiro Tsujikawa
5dccc88a7c
asio: Add host_service_from_uri() to extract remote address from URI
2015-03-07 01:10:49 +09:00
Tatsuhiro Tsujikawa
2cadd38b6b
asio: Fix path matching in server
2015-03-07 01:10:49 +09:00
Tatsuhiro Tsujikawa
d7cfe464a2
asio: client::configure_tls_context takes error_code
2015-03-07 01:10:49 +09:00
Tatsuhiro Tsujikawa
018e9eaf6d
asio: Clean up server API to explicitly set error code
2015-03-07 01:10:49 +09:00
Tatsuhiro Tsujikawa
94ca9705ef
asio: Rewrite response body handling if response body is not expected
2015-03-06 21:36:40 +09:00
Tatsuhiro Tsujikawa
d6f810d91a
examples: Update .gitignore
2015-03-06 03:14:26 +09:00
Tatsuhiro Tsujikawa
d8cf29c202
examples: Add less complicated asio client example
2015-03-06 03:13:22 +09:00
Tatsuhiro Tsujikawa
bf46539d10
python: Fix bug push response header fields are not passed to callback
2015-03-06 03:03:55 +09:00
Tatsuhiro Tsujikawa
2ed47cdd19
Merge branch 'asio-client'
2015-03-06 02:46:06 +09:00
Tatsuhiro Tsujikawa
a3f79232c6
asio: Use proper cookie syntax
2015-03-06 02:41:07 +09:00