Tatsuhiro Tsujikawa
d1a1e882bf
nghttpx: Fix request re-submission bug in HTTP/2 backend
2015-02-17 23:15:53 +09:00
Tatsuhiro Tsujikawa
799778af69
Revert "nghttpx: Fix request resubmit bug on HTTP/2 backend connection check"
...
This reverts commit d45f5a51e4
.
2015-02-17 22:28:03 +09:00
Tatsuhiro Tsujikawa
d45f5a51e4
nghttpx: Fix request resubmit bug on HTTP/2 backend connection check
2015-02-17 21:50:32 +09:00
Tatsuhiro Tsujikawa
011e3b325d
nghttpx: Cancel backend request when frontend HTTP/1 connection is lost
2015-02-13 22:41:50 +09:00
Tatsuhiro Tsujikawa
115d7133a0
nghttpx: Don't check HEADERS category in on_frame_not_send_callback
2015-02-12 22:44:29 +09:00
Tatsuhiro Tsujikawa
d151759f8a
nghttpx: Fix location rewrite, take 2
2015-02-08 21:26:47 +09:00
Tatsuhiro Tsujikawa
9e723b6b1d
src: Rename LinkHeader.url as LinkHeader.uri
2015-02-08 17:29:38 +09:00
Tatsuhiro Tsujikawa
7aff00496a
nghttpx: Log push request headers
2015-02-08 17:25:21 +09:00
Tatsuhiro Tsujikawa
0efdeab1db
nghttpx: Fix handling of return value from nghttp2_submit_push_promise
2015-02-08 17:21:27 +09:00
Tatsuhiro Tsujikawa
502b552b68
nghttpx: Add --no-server-push option
2015-02-08 16:19:12 +09:00
Tatsuhiro Tsujikawa
af960f1982
nghttpx: Don't push if http2 proxy is used
2015-02-08 16:10:01 +09:00
Tatsuhiro Tsujikawa
7c09d5eb8d
nghttpx: PUSH_PROMISE from client is handled by library
2015-02-08 16:10:01 +09:00
Tatsuhiro Tsujikawa
88f0bc70c4
nghttpx: Reworkd inherited request headers in PUSH_PROMISE
2015-02-08 16:10:01 +09:00
Tatsuhiro Tsujikawa
b14cfaf308
src: Store token in Header object to avoid additional lookups
2015-02-08 16:10:01 +09:00
Tatsuhiro Tsujikawa
c55d7343ca
nghttpx: Support server push using Link header field
...
nghttpx server push is initiated by looking for Link header field from
backend server response. Currently we only enable server push for
HTTP/1 backend and without HTTP/2 proxy mode. The URIs which have
rel=preload are eligible to resource to be pushed.
2015-02-08 16:10:00 +09:00
Tatsuhiro Tsujikawa
b4b2ddad3b
src: Rewrite defer function template
2015-02-06 23:27:15 +09:00
Tatsuhiro Tsujikawa
4cda09beff
src: Prefer std::array
2015-02-06 00:15:43 +09:00
Tatsuhiro Tsujikawa
ab6663c785
src: Use std::array instead of std::vector if size is compile time constant
2015-02-06 00:15:43 +09:00
Tatsuhiro Tsujikawa
54851ef7a6
src: Move make_unique to nghttp2 namespace
2015-02-06 00:15:43 +09:00
Tatsuhiro Tsujikawa
b2fb888363
Share I/O code with all upstreams/downstream objects
2015-02-05 03:05:34 +09:00
Tatsuhiro Tsujikawa
b707cfe986
nghttpx: Fix busy loop when HTTP/2 backend reset after connection established
...
We have now Downstream retry count to be limited to 5 times. At 6th
failure, we send 503 message to client.
2015-02-03 01:47:04 +09:00
Tatsuhiro Tsujikawa
9f5f724147
nghttpd, nghttpx: Don't log error NGHTTP2_ERR_BAD_PREFACE
2015-02-02 00:20:44 +09:00
Tatsuhiro Tsujikawa
f1049a66e2
nghttpx: Detach DownstreamConnection early
2015-01-31 01:11:55 +09:00
Tatsuhiro Tsujikawa
6b1ef95d3f
nghttpx: Replace RingBuf with sequential Buffer
...
It turns out that we don't need circular buffer functionality. We
replaced RingBuf with simple sequential Buffer.
2015-01-29 22:57:56 +09:00
Tatsuhiro Tsujikawa
8ddad1a53d
nghttpx: Remove shrinking memchunks for now
...
It requires more careful optimization. Remove it for now.
2015-01-28 21:25:22 +09:00
Tatsuhiro Tsujikawa
0b48448270
nghttpx: RST_STREAM for invalid request header values
2015-01-25 22:58:43 +09:00
Tatsuhiro Tsujikawa
2a56a3d9ea
nghttpx: Fix te request header handling
...
Checking against "trailers" is enough for now.
2015-01-25 22:58:43 +09:00
Tatsuhiro Tsujikawa
434e80dc7b
nghttpx: Reset stream if TE header field contains other than trailer
2015-01-24 15:31:59 +09:00
Tatsuhiro Tsujikawa
6b4b7bef23
nghttpx: Reset stream if request header field name is malformed
2015-01-24 00:37:26 +09:00
Tatsuhiro Tsujikawa
9a89db575a
nghttpx: Reject multiple Content-Length even if their values are identical
2015-01-24 00:07:28 +09:00
Tatsuhiro Tsujikawa
b685747643
Add nghttp2_submit_shutdown_notice() to start graceful shutdown
...
nghttp2_submit_shutdown_notice() is used to notify the client that
graceful shutdown is started. We expect that after this call, the
server application should send another GOAWAY using
nghttp2_submit_goaway() with appropriate last_stream_id. In this
commit, we also added nghttp2_session_get_last_proc_stream_id(), which
can be used as last_stream_id parameter.
This commit implements graceful shutdown in nghttpx. The integration
test for graceful shutdown is also added.
2015-01-22 23:21:58 +09:00
Tatsuhiro Tsujikawa
5770c6bd04
nghttpx: Return 503 on hard disconnect in HTTP/2 backend
2015-01-21 23:30:48 +09:00
Tatsuhiro Tsujikawa
e219d6a94f
nghttpx: Clarify error_reply upstream method
...
There is no application level failure in h1 upstream. For h2, SPDY
upstreams, don't call DIE(), instead return -1 to delete handler.
2015-01-21 22:55:00 +09:00
Tatsuhiro Tsujikawa
41e72064e0
nghttpx: Log error in INFO level when frame cannot be sent
2015-01-21 22:49:00 +09:00
Tatsuhiro Tsujikawa
041d9863c2
nghttpx: Set request_start_time_ at Downstream ctor
...
.. so that we can avoid the problem that request_start_time_ is 0
2015-01-21 22:28:15 +09:00
Tatsuhiro Tsujikawa
8997e4369d
nghttpx: Adjust backend buffers
2015-01-21 01:47:43 +09:00
Tatsuhiro Tsujikawa
5a6d6ccbd4
nghttpx: Read from backend eagerly in all upstreams
2015-01-21 01:41:17 +09:00
Tatsuhiro Tsujikawa
8059380fb0
nghttpx: Don't need to set response state to MSG_COMPLETE after error_reply
2015-01-20 23:33:45 +09:00
Tatsuhiro Tsujikawa
a440bdf15e
nghttpx: Response 502 if HTTP/2 backend receives invalid Content-Length
2015-01-19 23:44:23 +09:00
Tatsuhiro Tsujikawa
8004ea9726
nghttpx: Return 400 if request CL is invalid or multiple CLs
2015-01-19 22:40:37 +09:00
Tatsuhiro Tsujikawa
62b9e4bb56
nghttpx: Validate received request body length against content-length
2015-01-17 21:33:23 +09:00
Tatsuhiro Tsujikawa
441f1cc282
nghttpx: Validate received response body length against content-length
2015-01-17 21:33:23 +09:00
Tatsuhiro Tsujikawa
f92110c54c
nghttpx: Http2Upstream: Try to read data from backend if buffer is empty
2015-01-17 17:37:32 +09:00
Tatsuhiro Tsujikawa
90914b38f1
nghttpx: Do not limit DATA frame length
2015-01-07 01:25:43 +09:00
Tatsuhiro Tsujikawa
2fb3d5fd1f
nghttpx: Remove Http2Upstream::deferred_ for now
2015-01-06 23:32:58 +09:00
Tatsuhiro Tsujikawa
d80952a2bc
nghttpx: Implement stream level timeout using ev_timer
2015-01-06 00:30:57 +09:00
Tatsuhiro Tsujikawa
3ae44ef2f3
nghttpd, nghttpx: Rework incoming header handling
2015-01-05 01:46:41 +09:00
Tatsuhiro Tsujikawa
d157744fb2
nghttpx: Fix handling of pending data
2015-01-03 00:19:41 +09:00
Tatsuhiro Tsujikawa
7db1864766
nghttpx: Add --backend-http1-connections-per-frontend option
2015-01-03 00:19:41 +09:00
Tatsuhiro Tsujikawa
bfac015d61
src: Use libev for rest of the applications
2015-01-03 00:19:41 +09:00