Tatsuhiro Tsujikawa
41dd5f6897
nghttpx: Tokenize request method
...
We share the same method value with http-parser. This commit also
returns 501 for unknown request method on HTTP/2 and SPDY frontend.
2015-06-09 23:33:14 +09:00
Tatsuhiro Tsujikawa
323fc8c552
nghttpx: Make WebSocket upgrade work
...
This commit makes sure that WebSocket upgrade works for HTTP/1.1
frontend and backend pair. Actually, this implementation probably
supports other upgrade as well, other than HTTP/2 Upgrade, which is
handled specially in other place.
2015-05-26 22:26:17 +09:00
Tatsuhiro Tsujikawa
326b4c467b
nghttpx: Fix bug that END_STREAM is not set in backend for POST with Upgrade
2015-05-26 00:00:11 +09:00
Tatsuhiro Tsujikawa
b20abfc11a
nghttpx: Allow HTTP Upgrade from POST request if response header was not sent
2015-05-22 01:59:40 +09:00
Tatsuhiro Tsujikawa
9dc5259593
nghttpx: Take into account request URI in header size in https frontend
2015-04-29 22:23:25 +09:00
Tatsuhiro Tsujikawa
8c3b379b66
Pool Memchunk per worker
2015-04-08 00:10:48 +09:00
Tatsuhiro Tsujikawa
46e3be7b5b
nghttpx: Simplify backend request line construction
...
It turns out that the cause of complication in backend request line
construction is a absolute-form in HTTP/1 request. In HTTP/2, we have
separated pseudo-header fields and no problem at all. In this commit,
we parse request URI in HTTP/1 frontend and extract values from it to
make backend logic simpler. This patch removes host header field
emission in HTTP/2 backend if :authority is emitted. It also rewrites
host header field with authority part in absolute-form URI as per RFC
7230.
2015-03-14 00:09:10 +09:00
Tatsuhiro Tsujikawa
d46e50b112
nghttpx: Refactor DownstreamQueue to avoid expensive std::map
2015-03-12 01:13:55 +09:00
Tatsuhiro Tsujikawa
8483225839
nghttpx: Don't rewrite host for CONNECT method
2015-03-10 00:44:35 +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
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
196d7da53f
nghttpx: Use http2::expect_response_body()
2015-03-07 15:50:52 +09:00
Tatsuhiro Tsujikawa
9302e3edf4
src: Use util::streq_l to compare against string literal
2015-02-20 23:57:40 +09:00
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
d151759f8a
nghttpx: Fix location rewrite, take 2
2015-02-08 21:26:47 +09:00
Tatsuhiro Tsujikawa
807d39abe3
nghttpx: Fix location rewrite does not work
2015-02-08 18:54:24 +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
f8f9b36acd
http2: Use std::array for indexing headers
2015-02-06 00:15:43 +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
9a89db575a
nghttpx: Reject multiple Content-Length even if their values are identical
2015-01-24 00:07:28 +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
ca7288ae38
nghttpx: Return 502 if HTTP/1 downstream receives multiple CLs
2015-01-20 23:11:54 +09:00
Tatsuhiro Tsujikawa
f1bec6f05c
nghttpx: Return 400 for multiple CLs for HTTP/1 upstream
2015-01-20 22:55:01 +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
e8053ac931
nghttpx: Check Content-Length only when Transfer-Encoding is not found
2015-01-19 21:16:47 +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
f004361ef2
nghttpx: Add --backend-request-buffer option
2015-01-13 23:30:28 +09:00
Tatsuhiro Tsujikawa
c88a5291b7
nghttpx: Add --backend-response-buffer option
2015-01-13 23:20:06 +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
2003be8dc5
src: Fix unit tests failure
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
Tatsuhiro Tsujikawa
b1f807abd1
Reformat lines with clang-format-3.5
2014-11-27 23:56:30 +09:00
Lucas Pardue
6e178653a5
fixed conflict
2014-11-23 21:10:51 +00:00
Lucas Pardue
9cf1a0c77c
Add features to logging, client and server port,
...
time_iso8601 and request_time.
2014-11-23 20:37:51 +00:00
Tatsuhiro Tsujikawa
74ec1d3377
nghttpx: Write accesslog when upstream connection is lost for HTTP/2 and SPDY
2014-11-23 17:24:23 +09:00
Tatsuhiro Tsujikawa
958cd0de64
nghttpx: Add configurable access logging format
...
This commit adds functionality to customize access logging format in
nghttpx. The format variables are inspired by nginx. The default
format is combined format.
2014-11-19 01:29:55 +09:00
Tatsuhiro Tsujikawa
ce71e65aee
nghttpx: Replace WARNING with WARN for consistency
2014-11-08 10:51:56 +09:00
Tatsuhiro Tsujikawa
31528b6267
Use uint32_t for HTTP/2 error_code
...
h2-14 now allows extensions to define new error codes. To allow
application callback to access such error codes, we uses uint32_t as
error_code type for structs and function parameters. Previously we
treated unknown error code as INTERNAL_ERROR, but this change removes
this and unknown error code is passed to application callback as is.
2014-08-25 21:24:04 +09:00
Tatsuhiro Tsujikawa
d5dcbf6f3b
nghttpx: Fix possible flow control issue
...
Previously we only update consumed flow control window when number of
bytes read in nghttp2 and spdylay callback is 0. Now we notify
nghttp2 library the consumed bytes even if number of bytes read > 0.
This change also uses newly added spdylay_session_consume() API, so we
require spdylay >= 1.3.0.
2014-08-21 21:22:16 +09:00
Tatsuhiro Tsujikawa
a5dfe24e49
nghttpx: Use std::unique_ptr for DownstreamConnection
2014-08-19 00:20:57 +09:00
Tatsuhiro Tsujikawa
273d9f4f7d
nghttpx: Use std::unique_ptr for Downstream object
2014-08-19 00:20:56 +09:00
Tatsuhiro Tsujikawa
49a9ec2cb3
nghttpx: Use int for resonse_rst_stream_error_code_
2014-08-17 16:36:02 +09:00