Tatsuhiro Tsujikawa
b157d4ebb2
Validate HTTP semantics by default
...
Previously we did not check HTTP semantics and it is left out for
application. Although checking is relatively easy, but they are
scattered and error prone. We have implemented these checks in our
applications and also feel they are tedious. To make application
development a bit easier, this commit adds basic HTTP semantics
validation to library code. We do following checks:
server:
* HEADERS is either request header or trailer header. Other type of
header is disallowed.
client:
* HEADERS is either zero or more non-final response header or final
response header or trailer header. Other type of header is
disallowed.
For both:
* Check mandatory pseudo header fields.
* Make sure that content-length matches the amount of DATA we
received.
If validation fails, RST_STREAM of type PROTOCOL_ERROR is issued.
2015-02-20 01:01:10 +09:00
Tatsuhiro Tsujikawa
8b4291edcb
integration: Add server push test
2015-02-08 16:10:01 +09:00
Tatsuhiro Tsujikawa
45a47936e0
integration: Update doc
2015-02-08 16:10:01 +09:00
Tatsuhiro Tsujikawa
a68c4c1e3c
nghttpx: Add --no-host-rewrite option
2015-02-04 01:42:26 +09:00
Tatsuhiro Tsujikawa
82f90f9030
nghttpx: Rewrite :authority and host header field
...
We don't rewrite them if -s or -p is used
2015-02-04 01:42:19 +09:00
Tatsuhiro Tsujikawa
4e68ca8233
integration: Add tests about via header field manipulation
...
This test reveals bug in SPDY upstream code, and contains its fix.
2015-01-27 00:19:57 +09:00
Tatsuhiro Tsujikawa
95b3e2f140
integration: Fix typo
2015-01-27 00:19:41 +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
3e5765831f
integration: Add missing alt-server.key and alt-server.crt to EXTRA_DIST
2015-01-25 21:35:45 +09:00
Tatsuhiro Tsujikawa
4b58b25c19
nghttpx: Refactor code to build cert_tree, add SNI test
2015-01-25 15:36:14 +09:00
Tatsuhiro Tsujikawa
682db00ba9
integration: Add tests for TE request header field
2015-01-24 16:02:03 +09:00
Tatsuhiro Tsujikawa
8d5c893929
integration: Add Cookie crumbling tests
2015-01-24 00:27:12 +09:00
Tatsuhiro Tsujikawa
b943fbb002
integration: Add test for assembling Cookie works toward HTTP/1 link
2015-01-24 00:17:11 +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
0fcfe16dc5
integration: Document each test cases
2015-01-24 00:01:14 +09:00
Tatsuhiro Tsujikawa
990f9ed4de
integration: Split up single file to 3 based on frontend type
2015-01-23 23:37:11 +09:00
Tatsuhiro Tsujikawa
3c6b75fb2b
Add `make itprep` target to `go get` dependencies
2015-01-23 22:55:42 +09:00
Tatsuhiro Tsujikawa
d1f06b09cd
integration: Add TLS key and certificate for testing
2015-01-23 21:25:21 +09:00
Tatsuhiro Tsujikawa
4a0dba08b9
nghttpx: Set Connection: close after graceful shutdown in HTTP/1 upstream
2015-01-22 23:46:35 +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
2f788aa214
nghttpx: Return 503 when h1 backend connect attempt failed
2015-01-21 23:08:13 +09:00
Tatsuhiro Tsujikawa
f302f1a830
integration: Fix typo
2015-01-21 22:47:22 +09:00
Tatsuhiro Tsujikawa
c0fc726955
nghttpx: Call signal_write in HttpsUpstream::on_downstream_abort_request
2015-01-21 22:45:52 +09:00
Tatsuhiro Tsujikawa
9938a4e952
Remove AM_EXTRA_RECURSIVE_TARGETS since travis automake is too old
2015-01-21 02:07:16 +09:00
Tatsuhiro Tsujikawa
16e91746d9
nghttpx: Return 400 error if multiple CLs are received in SPDY upstream
...
This change adds SPDY upstream tests.
2015-01-21 01:03:56 +09:00
Tatsuhiro Tsujikawa
039d9db5a3
integration: Make multiline string a bit readable
2015-01-20 23:30:38 +09:00
Tatsuhiro Tsujikawa
b9f41e34ef
nghttpx: Return error when downstream HTTP/1 connection attempt failed
2015-01-20 23:27:30 +09:00
Tatsuhiro Tsujikawa
a789008f17
integration: Treat blocking error as fatal
2015-01-20 22:59:09 +09:00
Tatsuhiro Tsujikawa
53142222fe
integration: Code cleanup
2015-01-20 22:56:36 +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
506177e1bd
integration: Ensure that proxy does not forward bad request
2015-01-20 22:31:21 +09:00
Tatsuhiro Tsujikawa
91151f1f56
integration: Fix minor typo
2015-01-20 22:25:56 +09:00
Tatsuhiro Tsujikawa
daec7c16d3
nghttpx: Don't discard data on HTTP/1 backend EOF
...
Also HTTP/1 frontend testing method was added.
2015-01-20 22:19:28 +09:00
Tatsuhiro Tsujikawa
6e446934d4
integration: Add recursive it target
2015-01-20 21:19:52 +09:00
Tatsuhiro Tsujikawa
9ab71305d1
integration: Add Makefile and `make it` to run integration tests
2015-01-20 01:14:22 +09:00
Tatsuhiro Tsujikawa
ae1aac26a7
integration: Set test naming convention
2015-01-20 00:59:09 +09:00
Tatsuhiro Tsujikawa
8eb2160890
integration: Add tests for HTTP/2 backend using go-nghttp2
2015-01-20 00:45:51 +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
5436c95788
integration: Add HTTP/2 chunked request body test
2015-01-19 22:20:56 +09:00
Tatsuhiro Tsujikawa
467565589c
integration: Use smaller interval to check server availability
2015-01-19 21:25:59 +09:00
Tatsuhiro Tsujikawa
8f45bf7b9e
integration: Use []hpack.HeaderField instead of http.Header in requestParam
...
With array, we can control the order of header field directly.
2015-01-19 21:24:18 +09:00
Tatsuhiro Tsujikawa
09939cf6bc
integration: Code cleanup
...
Don't close channel to avoid potential write-after-close.
Use time.After instead of time.NewTimer
2015-01-19 21:18:35 +09:00
Tatsuhiro Tsujikawa
fff785178d
Add integration tests for nghttpx using golang testing framework
...
The integration tests reside in integration-tests directory. To run
integration tests, cd integration-tests, then run "go test". Tests
depends on https://github.com/bradfitz/http2 .
2015-01-19 00:27:24 +09:00