Commit Graph

837 Commits

Author SHA1 Message Date
Tatsuhiro Tsujikawa fef01a3c39 nghttpd: Honor server's cipher preferece order 2014-03-15 16:11:30 +09:00
Tatsuhiro Tsujikawa a7eb6502a9 src: Use large transmission buffer to reduce SSL/TLS overhead 2014-03-15 16:10:42 +09:00
Tatsuhiro Tsujikawa a457d2a138 h2load, nghttp: Use SNI field for non-numeric host 2014-03-15 15:32:38 +09:00
Tatsuhiro Tsujikawa 843ecd8cc1 h2load: Support multiple URIs
Supplying multiple URIs can simulate more real life situation on
server side.  For example, we can supply URIs of html, css and js and
benchmark the server.  The -m option is updated so that it defaults to
the number of supplied URIs.
2014-03-14 23:15:01 +09:00
Tatsuhiro Tsujikawa 7ffa594d4c nghttp: Use raw-literal string for help output 2014-03-14 01:53:28 +09:00
Tatsuhiro Tsujikawa 136d997596 h2load: Support -W option for SPDY, if the value >= 16 2014-03-14 01:40:41 +09:00
Tatsuhiro Tsujikawa 2b7627f70c h2load: Use raw-string literal for help output 2014-03-14 01:06:47 +09:00
Tatsuhiro Tsujikawa 0620052f50 src: Use std::numeric_limits<>::max() instead of INT64_MAX 2014-03-14 00:54:10 +09:00
Tatsuhiro Tsujikawa d07bb1ddff Rework outbound frame buffers 2014-03-13 22:11:02 +09:00
Tatsuhiro Tsujikawa 358b4386d3 Introduce nghttp2_buf to ease buffer management 2014-03-11 01:47:38 +09:00
Tatsuhiro Tsujikawa d074cb611f nghttpx: Add rate limit per worker thread
The existing options --{read,write}-{rate,burst} are per connection.
The new options --worker-{read,write}-{rate,burst} are per worker
thread, which is overall rate limit of all connections worker handles.
2014-03-09 14:53:28 +09:00
Tatsuhiro Tsujikawa 7f18eced0b src: Use jemalloc if available 2014-03-05 21:38:33 +09:00
Tatsuhiro Tsujikawa 27e161dc31 src: Add EvbufferBuffer class to simplify the code base 2014-03-05 00:23:33 +09:00
Tatsuhiro Tsujikawa 3ca4539f99 nghttpd: Only emit content-encoding: gzip when error-gzip is on 2014-03-04 23:37:42 +09:00
Tatsuhiro Tsujikawa ddfa93ff5b nghttpx: Make socketpair in internal use non-block 2014-03-04 23:34:48 +09:00
Tatsuhiro Tsujikawa a61ca763df nghttpd: Add -e option to toggle gzipped error response 2014-03-04 23:29:30 +09:00
Tatsuhiro Tsujikawa caeeba681f nghttpd: Add multi threading support 2014-03-04 23:14:26 +09:00
Tatsuhiro Tsujikawa d4ea2418d8 nghttpx: Use LibsslGlobalLock 2014-03-04 21:33:43 +09:00
Tatsuhiro Tsujikawa 73f55e7b7a h2load: Fix crash with multi threading 2014-03-04 21:32:57 +09:00
Tatsuhiro Tsujikawa 13be30e582 Update src/.gitignore 2014-03-04 01:16:42 +09:00
Tatsuhiro Tsujikawa 5cfb51c881 h2load: Support parellel native threads execution with -t option 2014-03-04 01:12:11 +09:00
Tatsuhiro Tsujikawa f3183efe04 nghttpd: Emit protocol id error only when verbose output is enabled 2014-03-03 23:51:46 +09:00
Tatsuhiro Tsujikawa b5341ebac6 nghttpd: More SSL_CTX options and support EDCHE cipher 2014-03-03 23:49:13 +09:00
Tatsuhiro Tsujikawa e34b8ac7fb src: Avoid to call costly evbuffer_add() repeatedly
The profiler and benchmarking showed that calling evbuffer_add()
repeatedly is very costly. To avoid this, we buffer up small writes
into one large chunk and call evbuffer_add() less times.
2014-03-03 23:45:57 +09:00
Tatsuhiro Tsujikawa 3d211e1cfd h2load: Fix compiler warning 2014-03-03 00:53:31 +09:00
Tatsuhiro Tsujikawa 1337fa8bfe src: Add h2load, benchmarking tool for HTTP/2 and SPDY 2014-03-02 23:45:47 +09:00
Tatsuhiro Tsujikawa c1e1a1be5a nghttpx: Cast uint8_t to uint32_t to display it as numeric value 2014-03-02 23:22:28 +09:00
Tatsuhiro Tsujikawa a85455ed0b src: Zero clear http_parser_url struct 2014-02-27 22:11:31 +09:00
Tatsuhiro Tsujikawa 227a48cea1 src: Move http_parser_url related functions to util 2014-02-27 21:53:52 +09:00
Tatsuhiro Tsujikawa 13cc3f2fe9 src, python: Only produce header_table_size when it is changed 2014-02-25 23:55:06 +09:00
Tatsuhiro Tsujikawa 9cc7f9fb36 nghttp: Wait for pushed resources to complete
The statistics of pushed resources are also calculated.
2014-02-25 01:16:47 +09:00
Tatsuhiro Tsujikawa d1c1deaf03 Add promised_stream_user_data parameter to nghttp2_submit_push_promise
This is very useful to associate application specific data to promised
stream.

nghttp2_nv_array_copy now does not complain the header field is large.
2014-02-25 00:26:12 +09:00
Tatsuhiro Tsujikawa 86aa905c10 nghttpx: Code cleanup 2014-02-22 11:26:32 +09:00
Tatsuhiro Tsujikawa fc25143418 Remove END_PUSH_PROMISE in favor of END_HEADERS 2014-02-21 21:23:51 +09:00
Tatsuhiro Tsujikawa 659c3b0aa0 nghttpx: Initialize response_htp_ with 0 2014-02-20 21:30:25 +09:00
Tatsuhiro Tsujikawa bbc09b005b nghttpd: Use nghttp2_session_mem_recv and nghttp2_session_mem_send 2014-02-19 23:27:53 +09:00
Tatsuhiro Tsujikawa 1e1e77ad5e nghttp: Use nghttp2_session_mem_recv and nghttp2_session_mem_send 2014-02-19 23:27:52 +09:00
Tatsuhiro Tsujikawa cdf5d5402b nghttpx: Code cleanup 2014-02-19 23:11:26 +09:00
Tatsuhiro Tsujikawa 3c96041c43 nghttpx: Fix typo 2014-02-19 22:53:33 +09:00
Tatsuhiro Tsujikawa 6320bd8926 nghttpx: Fix priority bits 2014-02-19 22:52:00 +09:00
Tatsuhiro Tsujikawa 649586fff6 Add nghttp2_session_mem_send() API function
This function behaves like nghttp2_session_send(), but it does not
use nghttp2_send_callback to send data. Instead, it returns the
serialized data to trasmit and its length to the caller.
2014-02-18 23:23:11 +09:00
Tatsuhiro Tsujikawa f5342494f4 src: Format help message and add --version to make man page generation easier 2014-02-16 19:39:41 +09:00
Tatsuhiro Tsujikawa 1fd5fdd54a src: Remove redundant SETTINGS_ENABLE_PUSH from server side 2014-02-16 16:05:26 +09:00
Tatsuhiro Tsujikawa 7504d89f9b src: Add at most N bytes as padding if --padding option is used 2014-02-15 16:40:32 +09:00
Tatsuhiro Tsujikawa fd88c6160d HPACK post -05 updates
* Use 1 Huffman code table for both request and response
* Remove complicated deflater side table size management
* Add encoding context update
* Fix memory leak in inflater
2014-02-13 23:22:52 +09:00
Tatsuhiro Tsujikawa cd3eae3dd2 src: Fix select_padding_callback which returns value greater than max_payload 2014-02-11 19:19:00 +09:00
Tatsuhiro Tsujikawa c280cc7c4d nghttpx: Add --padding option for debugging purpose 2014-02-11 17:23:22 +09:00
Tatsuhiro Tsujikawa 39fe7a5cfa Don't set select_padding_callback if padding_boundary is 0 or not set 2014-02-11 16:48:27 +09:00
Tatsuhiro Tsujikawa 78d202ac30 Callback based padding from application
Now previous padding options are removed and instead we added
select_padding_callback to select padding length for each frame
by application. If this callback is not implemented by application,
no padding is added.

This change also fixes the broken session_detect_idle_stream()
if stream_id is our side.
2014-02-11 15:28:44 +09:00
Tatsuhiro Tsujikawa 118ed09da5 Allow disabling padding 2014-02-09 23:53:53 +09:00
Tatsuhiro Tsujikawa 68b5ffc1dc Rename padding related names 2014-02-09 21:46:15 +09:00
Tatsuhiro Tsujikawa ce53d7bd9e src: Don't output priority if NGHTTP2_FLAG_PRIORITY is not set 2014-02-09 21:34:28 +09:00
Tatsuhiro Tsujikawa c7c283f3a9 nghttpx: Add --frontend-frame-debug option to debug HTTP/2 frame in upstream
The output format is the same one with nghttp/nghttpd. The output
is made into stderr to make it sync with logging.
2014-02-09 18:47:26 +09:00
Tatsuhiro Tsujikawa 1db2195389 Implement padding for HEADERS and CONTINUATION 2014-02-09 15:17:26 +09:00
Tatsuhiro Tsujikawa be9d5efa4c nghttp: Add --continuation option to test CONTINUATION 2014-02-08 00:23:18 +09:00
Tatsuhiro Tsujikawa 814d0f76f3 Implement DATA frame padding 2014-02-08 00:23:18 +09:00
Tatsuhiro Tsujikawa c79adf6997 Remove flow control disabling feature 2014-02-06 00:23:20 +09:00
Tatsuhiro Tsujikawa 8be17f077a Add nghttp2_check_header_name and nghttp2_check_header_value APIs
These are promoted to public API from src/http2.h
2014-02-01 19:31:50 +09:00
Tatsuhiro Tsujikawa e186e01933 Replace on_end_headers_callback with on_begin_headers_callback
Previously, there is inconsistency when on_frame_recv_callback
is called between HEADERS/PUSH_PROMISE and the other frames.
For former case, it is called before header block, in latter
case, it is called after whole frame is received. To make it
consistent, we call on_frame_recv_callback for HEADERS/PUSH_PROMISE
after its frame is fully received. Since on_frame_recv_callback
can signal the end of header block, we replaced on_end_headers_callback
with on_begin_headers_callback, which is called when the reception
of the header block is started.
2014-01-29 21:23:13 +09:00
Tatsuhiro Tsujikawa ff475104ab nghttpx: Fix runtime errors due to uninitialized values 2014-01-29 00:59:12 +09:00
Tatsuhiro Tsujikawa 878afd7df1 nghttp: Fix bad handling of addrinfo 2014-01-28 01:40:00 +09:00
Tatsuhiro Tsujikawa 864789ca65 nghttpx: Limit the maximum header block size (again) 2014-01-28 01:17:54 +09:00
Tatsuhiro Tsujikawa ce434d56a7 src: Print header emission with stream_id
Since all headers are not always longer available on one
nghttp2_session_mem_recv call, received headers may be interleaved
with transmission log of the other frames. To make it clear that
each header belongs to which stream, each header is printed with
stream_id.
2014-01-28 00:20:48 +09:00
Tatsuhiro Tsujikawa a3082b7c1e Remove nghttp2_on_data_recv_callback and nghttp2_on_data_send_callback
nghttp2_data is added to nghttp2_frame union. When DATA is
received, nghttp2_on_frame_recv_callback is called. When DATA is
sent, nghttp2_on_frame_send_callback is called.
2014-01-27 22:16:05 +09:00
Tatsuhiro Tsujikawa fbffd2c923 nghttpx: Limit the number of receiving headers 2014-01-27 00:45:36 +09:00
Tatsuhiro Tsujikawa 545f24bc1b Remove nghttp2_on_frame_recv_parse_error_callback 2014-01-26 23:23:07 +09:00
Tatsuhiro Tsujikawa 6e6127037b src: Fix compiler warning 2014-01-26 23:13:02 +09:00
Tatsuhiro Tsujikawa 9314e30987 Support transmission of CONTINUATION, change nghttp2_frame_hd
The maximum frame size including header block is still limited
to NGHTTP2_HD_MAX_BUFFER_LENGTH, which is 32KB.
2014-01-26 23:10:33 +09:00
Tatsuhiro Tsujikawa e7fc2951b8 nghttp2_hd: Define dedicated struct for HPACK deflater and inflater 2014-01-26 17:53:04 +09:00
Tatsuhiro Tsujikawa 8317559090 nghttp2_hd: Implement stream header inflater
This stream inflater can inflate incoming header block in streaming
fashion. Currently, we buffer up single name/value pair, but we chose
far more smaller buffer size than HTTP/2 frame size.
2014-01-25 18:24:15 +09:00
Tatsuhiro Tsujikawa a8e4da8058 deflatehd: Fix wire is not written if length is 0 2014-01-24 21:54:00 +09:00
Tatsuhiro Tsujikawa 1f4577adb9 nghttp: Use getaddrnfo directly instead of using evdns_base
evdns_base uses /etc/resolve.conf for *nix like systems,
but all platforms don't have the file (e.g., android device).
For such platforms, address resolution fails.
To fix this problem we use getaddrinfo() directly.
2014-01-23 00:29:09 +09:00
Tatsuhiro Tsujikawa 9cd90bcff2 nghttp: Fix host to connect when SSL/TLS is used 2014-01-22 21:55:30 +09:00
Tatsuhiro Tsujikawa be71e1f11c nghttp: Update doc 2014-01-21 23:24:13 +09:00
Tatsuhiro Tsujikawa 72aef67cca nghttp: Replace build-in headers completely with -H option 2014-01-20 21:54:03 +09:00
Tatsuhiro Tsujikawa 16497d91c1 nghttpx: Call upstream_writecb when underlying bufferevent buffer gets empty 2014-01-19 23:32:07 +09:00
Tatsuhiro Tsujikawa dfbea797bd src: Use static_cast instead of reinterpret_cast if possible 2014-01-19 21:18:37 +09:00
Tatsuhiro Tsujikawa 660e1ec44d nghttpx: Move backend outbuf threshold to each downstream type 2014-01-19 18:07:50 +09:00
Tatsuhiro Tsujikawa a37bc88f40 nghttpx: Rename ClientHandler::get_pending_write_length to get_outbuf_length
And other renames.
2014-01-19 17:49:04 +09:00
Tatsuhiro Tsujikawa bacea078da nghttpx: Take into account both frontend buffer and body buffer length 2014-01-19 17:42:31 +09:00
Tatsuhiro Tsujikawa f59a9c5c58 nghttpx: Disable TLS renegotiation properly
4ed4efc does not disable TLS renegotiation at all, if client keeps
rengotiations without sending application data. In this change,
we intercept the raw incoming data from the client and if it is a
renegotiation, drop the connection immediately.
2014-01-19 17:25:18 +09:00
Tatsuhiro Tsujikawa 6f5e1662c6 nghttpx: Handle error from Downstream::resume_read() 2014-01-19 14:42:42 +09:00
Tatsuhiro Tsujikawa becc206ba9 nghttpx: Don't show warning WINDOW_UPDATE failure for HTTP/1 downstream 2014-01-19 00:38:11 +09:00
Tatsuhiro Tsujikawa 4ed4efc241 nghttpx: Disable TLS renegotiation 2014-01-18 19:53:52 +09:00
Tatsuhiro Tsujikawa 8f3d4fdeec nghttpx: Remove deprecated evbuffer_setcb, send WU before buffer gets empty 2014-01-18 18:39:25 +09:00
Tatsuhiro Tsujikawa 0872ce27f4 nghttpx: Use nghttp2_session_mem_recv instead of nghttp2_session_recv 2014-01-18 16:50:52 +09:00
Tatsuhiro Tsujikawa 50dd7ada50 nghttpx: Code cleanup 2014-01-18 16:32:22 +09:00
Tatsuhiro Tsujikawa 59ff0b2f77 nghttpx: Propagate upstream priority change to downstream 2014-01-18 16:12:03 +09:00
Tatsuhiro Tsujikawa 68b5204f29 src: Set errno = 0 before calling strtol 2014-01-18 15:32:50 +09:00
Tatsuhiro Tsujikawa 707a0b4103 Move name/value validation functions to src
nghttp2 library itself now accept octet header/value pairs,
completely not restricted by HTTP/1 header name/value rule.
The applications may impose restriction about them using
validators.
2014-01-17 02:16:53 +09:00
Tatsuhiro Tsujikawa 0e4b3d435e Emit header name/value pair using callback functions
Now, in nghttp2_on_frame_recv_callback, nva and nvlen in
HEADERS and PUSH_PROMISE frames are always NULL and 0 respectively.
The header name/value pairs are emitted successive
nghttp2_on_header_callback functions. The end of header fields are
signaled with nghttp2_on_end_headers_callback function.

Since NGHTTP2_ERR_PAUSE for nghttp2_on_frame_recv_callback is
introduced to handle header block, it is now deprecated.
Instead, nghttp2_on_header_callback can be paused using
NGHTTP2_ERR_PAUSE.
2014-01-17 01:49:43 +09:00
Tatsuhiro Tsujikawa 8fdc37ab13 src: Don't show option candidates if full-match or single prefix-match 2014-01-13 23:51:10 +09:00
Tatsuhiro Tsujikawa a54c5bef54 src: Must suffix-match at least 3 characters to be a option candidate 2014-01-13 23:29:10 +09:00
Tatsuhiro Tsujikawa 8c6f3d1054 nghttpx: Set our own default cipher list 2014-01-13 23:01:22 +09:00
Tatsuhiro Tsujikawa 59c10ea4c2 src: Make the cost of suffix matched option 0 2014-01-12 22:02:19 +09:00
Tatsuhiro Tsujikawa c3949b0d7f Fix compiler warning 2014-01-11 17:49:33 +09:00
Tatsuhiro Tsujikawa da9bbb58fb HPACK tools: Use JSON data format used in hpack-test-case
The input and output data format now use same JSON format used in
hpack-test-case.
2014-01-11 17:02:14 +09:00
Tatsuhiro Tsujikawa 0e9390d5ad Move http-parser to third-party dir and fix `make distcheck` 2014-01-11 00:36:20 +09:00
Tatsuhiro Tsujikawa 505d607b22 src: Update .gitignore 2014-01-10 23:22:23 +09:00
Tatsuhiro Tsujikawa 9dcd6b003d Refactor configure options
--enable-src is renamed as --enable-app. Fix build failure if
libxml2 is not available.
2014-01-10 23:19:36 +09:00
Tatsuhiro Tsujikawa 0f1dea4f42 Move HPACK tools from hdtest to src 2014-01-10 21:53:48 +09:00
Tatsuhiro Tsujikawa 25a6596e77 nghttpx: Call Http2Session::disconnect() if initiate_connection() failed
This will clean up resources allocated in initiate_connection()
properly.
2014-01-10 21:32:39 +09:00
Tatsuhiro Tsujikawa 8721631287 nghttp: Fix port checking to share connection 2014-01-10 00:59:14 +09:00
Tatsuhiro Tsujikawa 88d31ada75 src: Handle PUSH_PROMISE from client and request HEADERS from server
They are just RST_STREAMed for now
2014-01-09 23:47:21 +09:00
Tatsuhiro Tsujikawa 90ea7ba92a src: Add command-line option guess 2014-01-09 01:27:56 +09:00
Tatsuhiro Tsujikawa a15fc5fbb4 nghttpx: Send acceptable list of CAs when client cert auth is enabled 2014-01-09 00:07:51 +09:00
Tatsuhiro Tsujikawa c36ce28f69 src: Call SSL_set_shutdown(ssl, SSL_RECEIVED_SHUTDOWN) 2014-01-08 23:32:47 +09:00
Tatsuhiro Tsujikawa dacfecf41a lib, src, hdtest: Ensure that config.h is included 2014-01-08 23:30:02 +09:00
Tatsuhiro Tsujikawa ecc4290d3d nghttp: Fix crash on plain HTTP 2014-01-08 02:15:46 +09:00
Tatsuhiro Tsujikawa c531e691fc src: Use SSLv23_method for tests 2014-01-06 16:07:18 +09:00
Tatsuhiro Tsujikawa f2e830309e src: Add test for shrpx_config 2014-01-06 16:06:02 +09:00
Tatsuhiro Tsujikawa 7ce3065f32 nghttpx: Add --tls-proto-list option to enable SSL/TLS protocol selectively 2014-01-02 13:08:54 +09:00
Tatsuhiro Tsujikawa 3e21bed4f9 nghttpx: Make parse_config_npn_list generic 2014-01-02 13:08:54 +09:00
Tatsuhiro Tsujikawa 20877b1107 nghttpx: Don't allow application protocol not listed in --npn-list option 2014-01-02 00:53:07 +09:00
Tatsuhiro Tsujikawa 78e5149495 src: Support ALPN
Requires unreleased OpenSSL >= 1.0.2
2014-01-02 00:15:08 +09:00
Tatsuhiro Tsujikawa f0d7323902 nghttpx: Use SSL_CTX_set_ecdh_auto for OpenSSL >= 1.0.2 2014-01-01 23:26:00 +09:00
Tatsuhiro Tsujikawa 73866124f3 nghttp: Untabify 2013-12-31 11:15:58 +09:00
David Weekly 19e187cd92 More useful warning on NPN negotiation failure due to draft version mismatch 2013-12-31 00:12:21 +00:00
Tatsuhiro Tsujikawa 1c43cdbbc8 nghttpx: Don't rewrite location if proxy mode is used 2013-12-28 17:02:43 +09:00
Tatsuhiro Tsujikawa c0726036b1 nghttpd: Use -1 as backlog 2013-12-27 00:02:43 +09:00
Tatsuhiro Tsujikawa ad369ec299 nghttpx: Use -1 as default value of --backlog 2013-12-26 21:39:00 +09:00
Tatsuhiro Tsujikawa 9cb8754d09 Rename nghttp2_session_fail_session as nghttp2_session_terminate_session 2013-12-26 00:23:07 +09:00
Tatsuhiro Tsujikawa 5bb1c653ef src: Omit \r\n sanitization on header value
This is because nghttp2 and spdylay now don't allow \r\n in header
value. Require spdylay >= 1.2.3.
2013-12-26 00:08:42 +09:00
Tatsuhiro Tsujikawa 04e496d7bd nghttpd: Use nghttp2_session_fail_session instead of nghttp2_submit_goaway 2013-12-25 00:40:57 +09:00
Tatsuhiro Tsujikawa f8356dd037 nghttp: Use nghttp2_session_fail_session instead of nghttp2_submit_goaway 2013-12-25 00:28:58 +09:00
Tatsuhiro Tsujikawa 53271e1e52 nghttp: Close fd on disconnect 2013-12-22 19:23:01 +09:00
Tatsuhiro Tsujikawa c4539046be nghttpx: No string copy if no cookie crumbling occurs 2013-12-22 15:42:12 +09:00
Tatsuhiro Tsujikawa 2af9a37643 src: Code cleanup 2013-12-22 15:33:37 +09:00
Tatsuhiro Tsujikawa e955598923 nghttpx: Remove downstream_port from location rewrite code 2013-12-21 18:35:53 +09:00
Tatsuhiro Tsujikawa 9afebcb229 nghttpx: Ignore port when rewriting location header 2013-12-21 18:26:11 +09:00
Tatsuhiro Tsujikawa ccfa13cd5b nghttpx: Rewrite location header field
We thought that this kind of rewrite can be achieved by the configuration
of the backend severs, but in some configuration, however, it may get
complicated. So we decided to implement at least location rewrite in
nghttpx.

This commit also contains a fix to the bug which prevents the http2
backend request from concatenating header fields with the same value.
2013-12-21 17:49:31 +09:00
Tatsuhiro Tsujikawa bb70cdf6ad src: Rename verbose callback functions 2013-12-20 23:48:56 +09:00
Tatsuhiro Tsujikawa 9f7b231c2c nghttpx: Code cleanup 2013-12-20 23:36:24 +09:00
Tatsuhiro Tsujikawa b38b233aa6 nghttpx: Check failure of evbuffer_* and bufferevent_* functions 2013-12-20 23:28:54 +09:00
Tatsuhiro Tsujikawa 873d457dd2 nghttpx: Fix log message 2013-12-20 22:44:30 +09:00
Tatsuhiro Tsujikawa ff2eb0de81 Update doc 2013-12-16 21:17:25 +09:00
Tatsuhiro Tsujikawa 7222f63dbd Revert 3c57327274
It may violate draft-09 section 8.1.3.1. Proxy should perseve
host header field.
2013-12-16 21:14:31 +09:00
Tatsuhiro Tsujikawa 3c57327274 nghttpx: Remove host if :authority is available on HTTP2 downstream request 2013-12-15 18:09:56 +09:00
Tatsuhiro Tsujikawa f4ae707bf2 Revert 0b7b95923e 2013-12-13 21:46:41 +09:00
Tatsuhiro Tsujikawa 0b7b95923e nghttp: Adjust relative priority with -a 2013-12-11 23:26:55 +09:00
Tatsuhiro Tsujikawa 09ba2e8c78 nghttp: Ensure that all settings can be encoded in settings_payload 2013-12-09 21:12:09 +09:00
Tatsuhiro Tsujikawa c3a361fb52 nghttpd: Create Request object in hd_before_frame_send_callback
This is pathological case, but we may get RST_STREAM to the promised
stream while we are sending PUSH_PROMISE. To handle this case,
instantiate Request object before transmission.
2013-12-09 00:22:01 +09:00
Tatsuhiro Tsujikawa ed1d7cdea4 nghttpd: Fix allow_push is not used 2013-12-09 00:04:54 +09:00
Tatsuhiro Tsujikawa 47f53940da nghttpd: Add -p, --push option to configure server push
The option syntax is <PATH>=<PUSH_PATH,...>.
Push resources PUSH_PATHs when PATH is requested. This option can be used
repeatedly to specify multiple push configurations. For example,
  -p/=/foo.png -p/doc=/bar.css
PATH and PUSH_PATHs are relative to document root.
2013-12-09 00:00:12 +09:00
Tatsuhiro Tsujikawa 658b7d0727 src: Replace MAKE_NV macros with function templates 2013-12-08 22:31:43 +09:00
Tatsuhiro Tsujikawa 6c77cec270 Remove nghttp2_submit_* API functions which has char **nv parameter
The nghttp2_submit_{request,response}2 functions are renamed as
nghttp2_submit_{request, response}.
2013-12-08 21:39:43 +09:00
Tatsuhiro Tsujikawa baa2272b0a src: Concatenate header fields with same name by NULL as delimiter
cookie and set-cookie are treated specially and won't be concatenated.
2013-12-07 00:32:14 +09:00
Tatsuhiro Tsujikawa 6ea91e57e0 Adjust struct/class alignment 2013-12-06 23:17:38 +09:00
Tatsuhiro Tsujikawa e596385fc0 src: Split NULL-separated values 2013-12-05 21:54:36 +09:00
Tatsuhiro Tsujikawa 1f0dfd4316 nghttpx: Update doc 2013-12-01 20:55:16 +09:00
Tatsuhiro Tsujikawa 93ad48fe6c nghttpx: Update usage 2013-11-29 22:59:49 +09:00
Tatsuhiro Tsujikawa d1049f389f nghttpx: Use nghttp2_submit_{request, response}2 API 2013-11-28 21:36:04 +09:00
Tatsuhiro Tsujikawa 679a389bd3 nghttpx: Code cleanup 2013-11-26 22:57:29 +09:00
Tatsuhiro Tsujikawa bbebc4ad8d nghttpx: Fix crash on CONNECT or downstream failure 2013-11-21 02:06:28 +09:00
Tatsuhiro Tsujikawa 01f7162be3 nghttpx: Add connection-level flow control window size options
This commit also changes SPDY's flow control size. Previously,
the size for SPDY is the same amount of bytes with HTTP/2.
For example, --frontend-http2-upstream-window-bits=N,
the window size is 2**N - 1. Now SPDY code uses 2**N.
2013-11-21 00:15:17 +09:00
Tatsuhiro Tsujikawa 53b3fba05b nghttpx: Add --http2-no-cookie-crumbling option 2013-11-18 00:03:55 +09:00
Tatsuhiro Tsujikawa faedc4381d nghttpx: Add options to dump HTTP headers in HTTP/2.0 upstream 2013-11-17 23:52:19 +09:00
Tatsuhiro Tsujikawa e14baf134c nghttpx: Implement cookie crumbling 2013-11-16 21:15:55 +09:00
Tatsuhiro Tsujikawa 0c669898a4 nghttp: Allow multiple same headers in -H 2013-11-16 21:13:09 +09:00
Tatsuhiro Tsujikawa a255e4efa6 nghttpx: Use same priority in frontend and backend HTTP2 2013-11-16 15:41:24 +09:00
Tatsuhiro Tsujikawa 81cf484124 Don't DIE when establishing backend HTTP2 connection failed 2013-11-16 01:31:32 +09:00
Tatsuhiro Tsujikawa d946b06e51 src/http-parser: Update to latest HEAD 2013-11-14 23:53:48 +09:00
Tatsuhiro Tsujikawa 40347487c9 Don't sort headers in library code
Remove sorting headers from library code. The application must sort
them if necessary. nghttpx and nghttpd do the sorting of the headers
in stable way if names are equal.
2013-11-13 23:56:02 +09:00
Tatsuhiro Tsujikawa 0ba2883940 nghttpx: Use initial window size in config directly 2013-11-12 11:08:43 +09:00
Tatsuhiro Tsujikawa 58beaa371d nghttpx: Support spdy/3.1, require spdylay >= 1.2.0 2013-11-12 11:03:46 +09:00
Tatsuhiro Tsujikawa b405b4bc9f src: Fix token68 decoding 2013-11-09 16:18:01 +09:00
Tatsuhiro Tsujikawa 2ae788eddd Replace nghttp2_set_option with nghttp2_session_{client,server}_new2
nghttp2_session_client_new2 and nghttp2_session_server_new2 take
additional parameters which specifies session options.
nghttp2_set_option is somewhat crumsy because of type checking.
Now we use nghttp2_opt_set, which specifies individual options with
types. We changed the value of nghttp2_opt, so this change will
require re-compile.
2013-11-08 00:12:39 +09:00
Tatsuhiro Tsujikawa e684b8149b nghttpd: Fix -c option 2013-11-06 23:32:32 +09:00
Tatsuhiro Tsujikawa be5d08647e nghttpd: Add -c, --header-table-size option 2013-11-05 23:44:20 +09:00
Tatsuhiro Tsujikawa b1905c5815 nghttpx: More replacement of spdy with http2 2013-11-04 18:22:29 +09:00
Tatsuhiro Tsujikawa 0fcd14300a nghttpx: Rename PROTO_SPDY with PROTO_HTTP2 for backend protocol name 2013-11-04 18:15:56 +09:00
Tatsuhiro Tsujikawa ba3db66cec nghttpx: Replace "spdy" in option name with "http2" 2013-11-04 18:14:05 +09:00
Tatsuhiro Tsujikawa f3d71aa5bb nghttpx: Rename Spdy{Session,DownstreamConnection} to Http2{*} 2013-11-04 17:53:57 +09:00
Tatsuhiro Tsujikawa a483105e11 nghttpx: Set read/write timeout for HTTP/2 backend as well 2013-11-04 17:22:52 +09:00
Tatsuhiro Tsujikawa 69967aeef8 nghttpx: Add --client-private-key-file and --client-cert-file options 2013-11-02 23:34:25 +09:00
Tatsuhiro Tsujikawa 5bb7066474 nghttpx: Add --verify-client-cacert option
Using --cacert to load certificate for client certificate authentication
is problematic since, --cacert is also used for client mode.
This commit adds --verify-client-cacert option which specify the CA
certficate file used only for client certificate validation.
This change also removes the default certficate load function for
client certificate validation.
2013-11-02 21:41:05 +09:00
Tatsuhiro Tsujikawa 41208950ec nghttpx: Disable push in HTTP/2 backend 2013-11-02 16:59:59 +09:00
Tatsuhiro Tsujikawa 02acfd7d70 nghttpx: Add --verify-client option
This option requires client certificate and successful verification.
Use --cacert option to add CA certificates as necessary.
2013-11-02 01:10:18 +09:00
Tatsuhiro Tsujikawa 1835bda02e nghttp, nghttpd: Add --color option to force colored log output 2013-11-01 23:06:53 +09:00
Tatsuhiro Tsujikawa d9f5451810 nghttpx: Add SETTINGS ACK timeout to HTTP/2 backend connections 2013-10-31 21:45:17 +09:00
Tatsuhiro Tsujikawa e0fe939951 nghttpx: Add SETTINGS timeout timer to Http2Upstream 2013-10-31 00:44:23 +09:00
Tatsuhiro Tsujikawa 3ea28863e4 nghttpx: Set "dconn_ is null" log in INFO 2013-10-30 01:26:28 +09:00
Tatsuhiro Tsujikawa dfa1194804 Add new API to return effective recv data/win size for connection
Using this feature, connection level flow control is now enabled
in nghttpx.
2013-10-30 00:51:01 +09:00
Tatsuhiro Tsujikawa b75455dd96 nghttpx: Remove recv data length calculation in HTTP/2 code 2013-10-30 00:10:28 +09:00
Tatsuhiro Tsujikawa 6c23c34d77 Add new API to return effective received data length and local window size 2013-10-30 00:07:35 +09:00
Tatsuhiro Tsujikawa 9b6a0e5875 nghttpx: Fix stream hang with request body
The end of request stream is not detected correct place.
Also Downstream::end_upload_data() is not called.
2013-10-30 00:00:58 +09:00
Tatsuhiro Tsujikawa 0ced4741d2 nghttpx: Remove flow control error detection code
Now flow control error detection is handled by the library
2013-10-29 22:46:38 +09:00
Tatsuhiro Tsujikawa 535329779c nghttp: Add --header-table-size option 2013-10-29 21:34:22 +09:00
Tatsuhiro Tsujikawa dc61f705df nghttp, nghttpd: Add SETTINGS timeout handling
SETTINGS timeout is 10 seconds for now.
2013-10-27 23:02:39 +09:00
Tatsuhiro Tsujikawa 5ace898392 Update error code 2013-10-27 19:31:24 +09:00
Tatsuhiro Tsujikawa a46ccdb144 Apply initiated SETTINGS changes on reception of ACK 2013-10-27 19:22:51 +09:00
Tatsuhiro Tsujikawa 2afa9f75f5 src/HttpServer: Fix compile error 2013-10-27 17:00:41 +09:00
Tatsuhiro Tsujikawa 5ca8f147f2 nghttpx: Code cleanup 2013-10-27 16:25:50 +09:00
Tatsuhiro Tsujikawa 67553d47e0 nghttpx: Use :authority and host instead of :host 2013-10-27 16:25:50 +09:00
Tatsuhiro Tsujikawa c4ae19e2a0 nghttp, nghttpd: Use :authority and host instead of :host 2013-10-27 16:25:50 +09:00
Tatsuhiro Tsujikawa 8f8c841df0 Merge branch 'master' into hpack-exp 2013-10-25 22:51:51 +09:00
Tatsuhiro Tsujikawa 896db5b24f API change: Add flags parameter to all submit_* functions
The nghttp2_submit_{request,response} family do not get this change.
2013-10-25 22:50:24 +09:00
Tatsuhiro Tsujikawa b193069110 Merge branch 'master' into hpack-exp 2013-10-23 23:23:51 +09:00
Tatsuhiro Tsujikawa 8c855c5567 src: Use std::vector to store name/value pairs 2013-10-23 23:18:24 +09:00
Tatsuhiro Tsujikawa 5add90489f Protocol ID change for HPACK experiment 2013-10-16 01:19:06 +09:00
Tatsuhiro Tsujikawa e85418f045 Fix local window size adjustments
Now shrinking local window size properly limits the amount of
WINDOW_UPDATE value so that shrinked window is honored.
2013-10-12 17:02:37 +09:00
Tatsuhiro Tsujikawa 2e7edf88bc nghttp: Add -W option to specify connection level window size bits 2013-10-10 22:04:37 +09:00
Tatsuhiro Tsujikawa 154a0014ef nghttp: Fix typo in help message 2013-10-10 21:25:53 +09:00
Tatsuhiro Tsujikawa 6249038cc0 src: Print headers in PUSH_PROMISE 2013-10-10 21:24:54 +09:00
Tatsuhiro Tsujikawa f355187176 nghttpx: Fix missing extension HTTP status code in response 2013-10-02 23:29:44 +09:00
Tatsuhiro Tsujikawa c7ce6d811e src/shrpx_config.cc: Code cleanup 2013-10-02 23:13:25 +09:00
Tatsuhiro Tsujikawa d90e0d4262 src/HtmlParser: Code cleanup 2013-10-02 23:08:47 +09:00
Tatsuhiro Tsujikawa a9ba00914e nghttpx: Log error_code when submitting RST_STREAM 2013-09-30 00:13:04 +09:00
Tatsuhiro Tsujikawa 8e9f08f81d nghttp: Assign different priority according to the resource type 2013-09-29 18:58:46 +09:00
Tatsuhiro Tsujikawa 31ae1fe660 app_helper.cc: Handle NGHTTP2_COMPRESSION_ERROR in strstatus 2013-09-28 22:57:12 +09:00
Tatsuhiro Tsujikawa bfe7a9af00 nghttp: Fix crash if attrs parameter of get_attr() is nullptr 2013-09-26 22:56:26 +09:00
Tatsuhiro Tsujikawa 55b8a0b777 shrpx_http2_upstream: Use std::unique_ptr for pre_upstream_ 2013-09-26 21:46:35 +09:00
Tatsuhiro Tsujikawa 3368c8b378 nghttpx: Fix wrong version ID in Upgrade response header field 2013-09-26 21:46:03 +09:00
Tatsuhiro Tsujikawa c5912341ad nghttpx: Fix crash on upgrade success 2013-09-26 21:39:19 +09:00
Tatsuhiro Tsujikawa 825c1bac6b shrpx_downstream.cc: Utilize std::move 2013-09-24 23:53:55 +09:00
Tatsuhiro Tsujikawa dc0af2e074 shrpx_https_upstream.cc: Code cleanup 2013-09-24 23:39:36 +09:00
Tatsuhiro Tsujikawa a0326b3f2b nghttpx: Handle error from bufferevent_socket_new and event_base_new 2013-09-24 23:17:53 +09:00
Tatsuhiro Tsujikawa 57f5730756 shrpx_http_downstream_connection.cc: Code cleanup 2013-09-24 21:42:50 +09:00
Tatsuhiro Tsujikawa 2572fb6fb4 shrpx.cc: Code cleanup 2013-09-24 21:34:59 +09:00
Tatsuhiro Tsujikawa 991f14846d shrpx_spdy_session.cc: Code cleanup 2013-09-24 21:34:04 +09:00
Tatsuhiro Tsujikawa e1dfc1cdc5 shrpx_spdy_session: Use std::unique_ptr for proxy_htp_ 2013-09-24 21:31:48 +09:00
Tatsuhiro Tsujikawa 769f560586 shrpx_https_upstream: Embed http_parser 2013-09-24 21:31:48 +09:00
Tatsuhiro Tsujikawa 811173f5c8 shrxp_worker.cc: Use std::unique_ptr for ThreadEventReceiver 2013-09-24 21:31:48 +09:00
Tatsuhiro Tsujikawa b459e42ee5 shrpx_ssl.cc: Use std::unique_ptr for ssl_locks 2013-09-24 21:31:48 +09:00
Tatsuhiro Tsujikawa cdbe6acfce shrpx_http_downstream_connection: Embed http_parser 2013-09-24 21:31:48 +09:00
Tatsuhiro Tsujikawa 3c1cad9272 shrpx_client_handler: Use std::unique_ptr for upstream_ 2013-09-24 21:31:47 +09:00
Tatsuhiro Tsujikawa ab39ae849f nghttpx: Add --npn-list option 2013-09-23 20:55:39 +09:00
Tatsuhiro Tsujikawa e5e1e9b76e shrpx_ssl.cc: Another code cleanup 2013-09-23 18:49:39 +09:00
Tatsuhiro Tsujikawa bd55f9cf2a shrxp_ssl.cc: Code cleanup 2013-09-23 18:40:17 +09:00
Tatsuhiro Tsujikawa 7d333f202a HtmlParser: Collect scripts URI as well 2013-09-19 01:19:35 +09:00
Tatsuhiro Tsujikawa 8dcaa08405 Replace steady_clock with monotonic_clock if steady_clock is not available 2013-09-17 22:48:30 +09:00
Tatsuhiro Tsujikawa 0a649e2499 src: Use std::chrono instead of gettimeofday and clock_gettime 2013-09-16 17:36:24 +09:00
Tatsuhiro Tsujikawa 04457aae62 nghttp: Code cleanup 2013-09-16 16:54:11 +09:00
Tatsuhiro Tsujikawa e2ff41c44c nghttp: Use -M as short option for --peer-max-concurrent-streams 2013-09-16 16:44:13 +09:00
Tatsuhiro Tsujikawa b14a97a273 Update .gitignore 2013-09-14 21:18:08 +09:00
Tatsuhiro Tsujikawa 99ba622fed Add NGHTTP2_OPT_PEER_MAX_CONCURRENT_STREAMS option
And utilize it in nghttp to limit initial max concurrent streams.
2013-09-14 19:41:49 +09:00
Tatsuhiro Tsujikawa c5d7d570e3 nghttpx: Code cleanup 2013-09-13 21:27:29 +09:00
Tatsuhiro Tsujikawa c48a1d7516 nghttpx: Add rate limit options 2013-09-13 21:23:55 +09:00
Tatsuhiro Tsujikawa 0f75997839 nghttpx: Share ev_token_bucket_cfg across ClientHandlers 2013-09-13 00:25:24 +09:00
Tatsuhiro Tsujikawa cbef6fd0c6 nghttpx: Replace \r\n with space when constructing HTTP/1 headers 2013-09-11 23:24:32 +09:00
Tatsuhiro Tsujikawa b7e1701f06 nghttp: Fix nghttp2_pack_settings_payload use 2013-09-09 21:25:46 +09:00
Tatsuhiro Tsujikawa 5cd1d4f0d6 Fix clang warnings 2013-09-08 23:16:08 +09:00
Tatsuhiro Tsujikawa 72802b92c5 src: Fix linker error 2013-09-08 16:29:39 +09:00
Tatsuhiro Tsujikawa cc1cfd97e3 src: Archive nghttpx sources into libnghttpx.a to reuse for tests 2013-09-08 15:52:41 +09:00
Tatsuhiro Tsujikawa 588fd3bda7 src, examples: Update .gitignore 2013-09-08 15:33:17 +09:00
Tatsuhiro Tsujikawa 1a05caf847 src: Use util::utos instead of std::to_string
Some platform (e.g., freebsd) does not define _GLIBCXX_USE_C99
and it hides std::to_string functions.
2013-09-08 14:29:18 +09:00
Tatsuhiro Tsujikawa 10f131c9d8 nghttpx: Guard ecdh use with !OPENSSL_NO_EC 2013-09-07 23:37:17 +09:00
Tatsuhiro Tsujikawa c751a6e935 Fix cosmetic errors 2013-09-07 16:38:21 +09:00
Tatsuhiro Tsujikawa 776cff3dc7 src: Use std::unique_ptr for nv 2013-09-07 01:52:46 +09:00
Tatsuhiro Tsujikawa 56f7debad6 nghttpx: Fix resource leak 2013-09-07 01:46:46 +09:00
Tatsuhiro Tsujikawa 92a6549f78 nghttp: Initialize flag to 0 2013-09-07 01:46:20 +09:00
Tatsuhiro Tsujikawa bb7361cd9b nghttp: Code cleanup 2013-09-06 00:18:43 +09:00
Tatsuhiro Tsujikawa 586533be2f nghttpx: Fix CONNECT fail on SPDY upstream 2013-09-05 23:40:48 +09:00
Tatsuhiro Tsujikawa dd4151330e nghttp: Use before_frame_send_callback to check stream_id 2013-09-03 21:27:33 +09:00
Tatsuhiro Tsujikawa d960cf8953 Add const to read-only nghttp2_frame* parameter in callbacks 2013-09-03 21:24:14 +09:00
Tatsuhiro Tsujikawa 2f26b04730 nghttpx: Code cleanup 2013-09-01 00:23:07 +09:00
Tatsuhiro Tsujikawa 9e703170cd nghttpx: Enable --honor-cipher-order automatically when --ciphers is used 2013-08-30 23:02:47 +09:00
Tatsuhiro Tsujikawa aea036c9d4 nghttpx: Support ECDHE and DHE cipher suites
Use --dh-param-file option to specify a file including DH parameters
in PEM format.

For example, you can create DH parameters with 1024 bit key using
following command:

$ openssl dhparam -outform PEM -out dhparam.pem 1024
2013-08-30 22:07:42 +09:00
Tatsuhiro Tsujikawa e818d098ec nghttp: Fix off-by-one error when allocating space for request headers 2013-08-30 21:30:04 +09:00
Tatsuhiro Tsujikawa 59286adc5e Add int return value to nghttp2_on_unknown_frame_recv_callback 2013-08-29 23:10:18 +09:00
Tatsuhiro Tsujikawa db4f519500 Add int return value to nghttp2_on_frame_recv_parse_error_callback 2013-08-29 23:07:07 +09:00
Tatsuhiro Tsujikawa 053c444769 Add int return value to nghttp2_on_request_recv_callback 2013-08-29 23:03:21 +09:00
Tatsuhiro Tsujikawa 81653c1d1b Add int return value to nghttp2_on_stream_close_callback 2013-08-29 22:58:05 +09:00
Tatsuhiro Tsujikawa 5a7f65f1f7 Add int return value to on_data_send_callback 2013-08-29 21:55:04 +09:00
Tatsuhiro Tsujikawa b9d2f9b6b0 Add int return value to on_frame_not_send_callback 2013-08-29 21:51:58 +09:00
Tatsuhiro Tsujikawa d4852b0f11 Add int return value to on_frame_send_callback 2013-08-29 21:48:34 +09:00
Tatsuhiro Tsujikawa a51cdaacfc Add int return value to nghttp2_before_frame_send_callback 2013-08-29 21:45:10 +09:00
Tatsuhiro Tsujikawa 544ac9f61f Add int return value to nghttp2_on_data_recv_callback 2013-08-29 21:41:33 +09:00
Tatsuhiro Tsujikawa 972b47d6af Add int return value to nghttp2_on_data_chunk_recv_callback 2013-08-29 21:39:32 +09:00
Tatsuhiro Tsujikawa fb7d22fcb9 Add int return value to nghttp2_on_invalid_frame_recv_callback 2013-08-29 21:37:26 +09:00
Tatsuhiro Tsujikawa a59cd3be82 Add int return value to nghttp2_on_frame_recv_callback 2013-08-29 21:33:52 +09:00
Tatsuhiro Tsujikawa 6387d18f23 nghttpx: Fix expect header field handling 2013-08-29 00:03:26 +09:00
Tatsuhiro Tsujikawa 400615ca35 nghttpd: Check disallowed headers 2013-08-28 03:14:19 +09:00
Tatsuhiro Tsujikawa 3544bfdbef src: Move pure HTTP code from shrpx_http.cc to http2.cc 2013-08-28 02:47:22 +09:00
Tatsuhiro Tsujikawa 1f3b96e233 nghttpx: Rewrite header handling 2013-08-28 00:09:46 +09:00
Tatsuhiro Tsujikawa 89cd2ff479 nghttpx: Stream error if disallowed header field in HTTP2 is received 2013-08-26 01:25:31 +09:00
Tatsuhiro Tsujikawa 33743ab832 nghttpx: Remove banned header fields in HTTP2 request and response 2013-08-26 01:09:15 +09:00
Tatsuhiro Tsujikawa 4744e90054 nghttpd: Include status code only in :status header field 2013-08-26 00:58:06 +09:00
Tatsuhiro Tsujikawa 4fb1811d18 nghttpx: Include status code only in :status header field in HTTP2 response 2013-08-25 23:28:34 +09:00
Tatsuhiro Tsujikawa 5d7b7a1691 nghttpx: Stream error if mandatory HTTP/2 request header field is missing 2013-08-25 23:21:07 +09:00
Tatsuhiro Tsujikawa 556212a602 nghttpx: Replace \r\n in the header field to SPC in http downstream 2013-08-24 23:27:45 +09:00
Tatsuhiro Tsujikawa e55abcd634 nghttpx: Fix stream hang when http2 downstream CONNECT failed 2013-08-24 01:43:05 +09:00
Tatsuhiro Tsujikawa 2764c55678 src: Code cleanup 2013-08-23 03:33:05 +09:00
Tatsuhiro Tsujikawa 5ae8605883 src: Use std::thread 2013-08-23 03:33:05 +09:00
Tatsuhiro Tsujikawa 47ee8e3c79 src: Code cleanup 2013-08-23 03:33:05 +09:00
Tatsuhiro Tsujikawa 0c9703fa2c Remove NGHTTP2_FLAG_END_FLOW_CONTROL 2013-08-23 03:33:05 +09:00
Tatsuhiro Tsujikawa c38c6cdd09 nghttpx: Fix bug writecb is nullptr for HTTP/1 connection 2013-08-23 03:32:26 +09:00
Tatsuhiro Tsujikawa b2a34c2e5b nghttpx: Fix bug content-length is removed 2013-08-23 02:49:21 +09:00
Tatsuhiro Tsujikawa 358d12a842 nghttpx: Fix bug CONNECT does not work 2013-08-22 21:28:27 +09:00
Tatsuhiro Tsujikawa b8a01f5212 nghttpx: Require content-length in HTTP2 upstream if END_STREAM flag is not set 2013-08-21 01:19:16 +09:00
Tatsuhiro Tsujikawa 823bb6c35e nghttpx: Require content-length in SPDY upstream if FIN flag is not set 2013-08-21 01:05:06 +09:00
Tatsuhiro Tsujikawa 4d51def65f nghttpx: Limit read rate on upstream-end 2013-08-21 01:00:55 +09:00
Tatsuhiro Tsujikawa aa9688b459 nghttpx: Fix possible multiple replies on HTTP2 and SPDY upstreams 2013-08-21 00:56:08 +09:00
Tatsuhiro Tsujikawa ef6ccc0d74 Update .gitignore 2013-08-15 10:41:22 +09:00
Tatsuhiro Tsujikawa 3e1aad60b7 nghttp: Remove --no-tls option and detect TLS requirement using URI scheme 2013-08-12 22:33:51 +09:00
Tatsuhiro Tsujikawa 4fac4eb92d nghttpx: HttpUpstream: Check required request headers strictly
If multiple required headers (e.g., :path) found, return HTTP 400
error.
Fix util::strieq(a,b,n) where boundary of b is not checked in the
loop.
2013-08-11 00:08:44 +09:00
Tatsuhiro Tsujikawa 989d613448 nghttpx: Save pid file after daemon() call 2013-08-10 18:55:18 +09:00
Tatsuhiro Tsujikawa c36fcf1794 src: Print opaque_data_len of GOAWAY 2013-08-10 00:46:00 +09:00
Tatsuhiro Tsujikawa 02a7182ebd src: Create strframetype to handle unknown frame types 2013-08-10 00:42:11 +09:00
Tatsuhiro Tsujikawa 47c1447030 src: Print SETTINGS string name 2013-08-10 00:37:57 +09:00
Tatsuhiro Tsujikawa d194a31e4a src: Use print_frame_hd from print_data_frame 2013-08-10 00:31:59 +09:00
Tatsuhiro Tsujikawa 19377fb3cd Allow disabling auto WINDOW_UPDATE for connection and stream individually
Now NGHTTP2_OPT_NO_AUTO_WINDOW_UPDATE is split into 2 options:
NGHTTP2_OPT_NO_AUTO_STREAM_WINDOW_UPDATE and
NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE.
This is preparation for the upcoming removal of END_FLOW_CONTROL
flag. For nghttpx, instead of using END_FLOW_CONTROL to disable
connection-level flow control, increase window size by large
enough value, which is friendly way to current chromium
implementation.
2013-08-09 01:23:39 +09:00
Tatsuhiro Tsujikawa fafec1fdb8 nghttpx: Accept incoming bytes at least initial window size 2013-08-07 21:27:08 +09:00
Tatsuhiro Tsujikawa 7f71e83c52 nghttpd: Use 100 for MAX_CONCURRENT_STREAMS 2013-08-07 01:23:43 +09:00
Tatsuhiro Tsujikawa 07814be5b2 src: HttpServer: Remove unused member variable sfd_ 2013-08-06 23:17:13 +09:00
Tatsuhiro Tsujikawa 2b71598bdf src: Reorder AM_CPPFLAGS and AM_LDFLAGS 2013-08-06 21:24:34 +09:00
Tatsuhiro Tsujikawa 1b95e23bfb Add ax_cxx_compile_stdcxx_11 to check C++11 availability and flags 2013-08-06 21:20:36 +09:00
Tatsuhiro Tsujikawa 168c5ac5b3 HttpServer: Code cleanup 2013-08-06 00:07:51 +09:00
Tatsuhiro Tsujikawa fadbdbae0b nghttp: Add -p option to specify stream priority 2013-08-04 18:55:26 +09:00
Tatsuhiro Tsujikawa 2a311b3102 src: Print flags in DATA 2013-08-04 18:44:11 +09:00
Tatsuhiro Tsujikawa 690349009d nghttp: Call on_read() to process all data in buffer after upgrade succeeded 2013-08-04 18:43:10 +09:00
Tatsuhiro Tsujikawa d4ade2d7d0 nghttpx: Return -1 if dconn_ is nullptr on push_upload_data_chunk 2013-08-03 23:45:28 +09:00
Tatsuhiro Tsujikawa f613f68a13 src: Make window size - 1
To match the -w16 to 65535, which is HTTP/2.0 default initial window
size, decrement 1 from (1 << window_bits).
2013-08-03 19:53:07 +09:00
Tatsuhiro Tsujikawa 6bcfb99cc0 nghttpx: Update help messages 2013-08-03 19:19:04 +09:00
Tatsuhiro Tsujikawa 079f867d68 nghttp: Ignore -u if --no-tls is not given 2013-08-03 19:08:52 +09:00
Tatsuhiro Tsujikawa d1bc3c89a7 nghttpx: Code cleanup 2013-08-03 19:04:44 +09:00
Tatsuhiro Tsujikawa 0150312022 nghttpx: Rename spdy_{upstream,downstream}_no_tls as {upstream,downstream}_no_tls 2013-08-03 19:01:57 +09:00
Tatsuhiro Tsujikawa 564e6b9ffc nghttpx: Rename --{front,back}end-spdy-no-tls as --{front,back}end-no-tls 2013-08-03 18:58:14 +09:00
Tatsuhiro Tsujikawa f620655d08 nghttp, nghttpx: Add HTTP Upgrade from HTTP/1.1 to HTTP/2.0
nghttpx does not perform upgrade if the request has request body.
2013-08-03 18:51:01 +09:00
Tatsuhiro Tsujikawa 5594f0ef0b nghttpx: Preserve upgrade in Connection header field 2013-08-02 00:00:33 +09:00
Tatsuhiro Tsujikawa 8fd1953b21 app_helper: Show flags in hex 2013-08-01 21:42:16 +09:00
Tatsuhiro Tsujikawa 1bbcbd365c shrpx: Cast uint8_t to uint32_t to print its decimal number 2013-08-01 20:33:04 +09:00
Tatsuhiro Tsujikawa fec566aa23 src: Send out data in output buffer before HTTP2/SPDY session tear down 2013-08-01 20:31:29 +09:00
Tatsuhiro Tsujikawa 8cb92fc277 nghttpx: Handle error from Upstream::resume_read in upgrade code 2013-07-31 22:14:25 +09:00
Tatsuhiro Tsujikawa 924b1bd61a Use unmodified http-parser
Handle HTTP Upgrade and CONNECT explicitly
2013-07-31 21:48:37 +09:00
Tatsuhiro Tsujikawa ab56cd4ea3 nghttpx: Fix bug: end marker of chunked encoding is written twice 2013-07-30 21:46:00 +09:00
Tatsuhiro Tsujikawa dc2ed7414c src: Cleanup src builds 2013-07-28 19:50:02 +09:00
Tatsuhiro Tsujikawa 9f9c0cbcd1 nghttpd: Add -F and -f option to disable connection/stream level flow control 2013-07-28 19:29:11 +09:00
Tatsuhiro Tsujikawa 56db10cb5e nghttp: Add -F and -f option to disable connection/stream level flow controls 2013-07-28 19:29:11 +09:00
Tatsuhiro Tsujikawa 60fe0337da app_helper: Print PUSH_PROMISE 2013-07-27 22:37:09 +09:00
Tatsuhiro Tsujikawa f7c0df1235 Remove :version from downstream HTTP/2.0 request 2013-07-27 18:57:33 +09:00
Tatsuhiro Tsujikawa 90b06e8572 nghttpx: Add HTTP/2.0 word in help message 2013-07-26 21:55:08 +09:00
Tatsuhiro Tsujikawa 1fca42ed2b nghttpx: Remove :version from http2 connection 2013-07-26 21:47:53 +09:00
Tatsuhiro Tsujikawa 5ccf647df9 Rename shrpx as nghttpx superficially 2013-07-26 21:42:39 +09:00
Tatsuhiro Tsujikawa 86174f537a shrpx: Send and receive client connection header 2013-07-26 21:35:14 +09:00
Tatsuhiro Tsujikawa 9b27160195 HttpServer: Fix left_connhd_len_ is not updated 2013-07-26 21:34:39 +09:00
Tatsuhiro Tsujikawa 32bd1425b4 shrpx: SPDY support in upstream connection 2013-07-26 20:12:55 +09:00
Tatsuhiro Tsujikawa 41b21f7938 fixup 2013-07-26 19:38:54 +09:00
Tatsuhiro Tsujikawa 18f450fd2a Port shrpx to nghttp2 use 2013-07-26 19:33:25 +09:00
Tatsuhiro Tsujikawa 459a269049 Define HTTP/2.0 protocol version ID 2013-07-26 01:38:04 +09:00
Tatsuhiro Tsujikawa 3cc71a707e Rename nghttp2_headers_category members
Add NGHTTP2_HCAT_PUSH_RESPONSE
2013-07-25 20:57:50 +09:00
Tatsuhiro Tsujikawa cca1d19d3d Fix WINDOW_UPDATE enum value 2013-07-23 02:08:32 +09:00
Tatsuhiro Tsujikawa 57401bfb8d src: Print PRIORITY frame in print_frame() 2013-07-23 00:29:52 +09:00
Tatsuhiro Tsujikawa 42ff5b5c04 Rename nghttp2_ssl as app_helper 2013-07-22 22:12:54 +09:00
Tatsuhiro Tsujikawa ec79d70bd0 Code cleanup 2013-07-22 22:08:52 +09:00
Tatsuhiro Tsujikawa 551ae72f3a Remove spdyd and spdycat 2013-07-22 22:06:31 +09:00
Tatsuhiro Tsujikawa 9e9a7fb160 Add nghttpd and 24 bytes client connection header support 2013-07-22 21:56:19 +09:00
Tatsuhiro Tsujikawa 6bc7e7bd0b Add nghttp client backed by libevent 2013-07-22 00:01:33 +09:00
Tatsuhiro Tsujikawa 94258cd0b8 Move NGHTTP2_PRI_* to nghttp2.h, fix too small pri data type in src 2013-07-20 01:59:43 +09:00
Tatsuhiro Tsujikawa 61bf7c6b02 Integrate new header compression 2013-07-20 00:08:14 +09:00
Tatsuhiro Tsujikawa 257bc1c924 print_frame: Show pri only when NGHTTP2_FLAG_PRIORITY flag set 2013-07-17 01:13:58 +09:00
Tatsuhiro Tsujikawa 307e13375d spdycat: Set on_data_send_callback 2013-07-17 01:10:50 +09:00
Tatsuhiro Tsujikawa 3ed5c78a2c Remove unnecessary indent in DATA frame line 2013-07-16 20:54:01 +09:00
Tatsuhiro Tsujikawa 68c072485c Remove :version existence check in spdyd 2013-07-16 20:53:29 +09:00
Tatsuhiro Tsujikawa 24cab312cf Make spdycat and spdyd barely work 2013-07-16 00:15:04 +09:00
Tatsuhiro Tsujikawa 39e0b06bfc Comment out shrpx build in Makefile for now 2013-07-13 00:45:42 +09:00
Tatsuhiro Tsujikawa 0edce70343 Rebranding nghttp2 2013-07-13 00:43:06 +09:00
Tatsuhiro Tsujikawa 7b59a11480 shrpx: Create default SSL context once 2013-06-21 23:17:46 +09:00
Tatsuhiro Tsujikawa d1b9af0268 shrpx: Fix usage doc 2013-06-09 23:09:49 +09:00
Tatsuhiro Tsujikawa e91b386422 src: Add SRC_LIBS to shrpx_unittest_LDFLAGS 2013-05-03 22:15:07 +09:00
Tatsuhiro Tsujikawa c02fefe063 spdylay_ssl.cc: Cast tv.tv_sec to long int to pass printf 2013-05-03 22:14:16 +09:00
moparisthebest aa13b9b980 Drop priveleges only after listening on possibly priveleged port 2013-04-19 07:58:58 -04:00
moparisthebest 7dfa559bc4 Add --honor-cipher-order option to mitigate BEAST attacks 2013-04-18 14:25:48 -04:00
snnn 4c238c5b36 fix building on mac os x. "error: invalid suffix on literal; C++11 requires a space between literal and identifier" 2013-04-17 14:33:55 +08:00
Tatsuhiro Tsujikawa 34e119fde2 shrpx: Remove useless backend spdy version check
It is unnecessary because spdy version at this point is always valid.
2013-03-29 22:16:50 +09:00
Tatsuhiro Tsujikawa a9f475fb88 spdycat, shrpx: TLS SNI enhancements
shrpx:
* Added an option to set the TLS SNI extension between shrpx and the
  origin on the command line

spdycat:
* If the user set an explicit host header ( using --headers ) use that
  name for the TLS SNI extension.
* Added the handshake completion time to the verbose output
* The gettimeofday call in get_time was using the incorrect structure
  ( I believe )
* In update_html_parser it was submitting the request regardless of
  the return value of add_request.

Patch from Stephen Ludin
2013-03-29 22:06:33 +09:00
Tatsuhiro Tsujikawa bdade00e68 cygwin build fix 2013-03-28 01:25:42 +09:00
Tatsuhiro Tsujikawa 7d709fa3ff shrpx: Support non-TLS SPDY in frontend connection 2013-03-24 21:03:39 +09:00
Tatsuhiro Tsujikawa 7264966bb5 shrpx: Check get_request_state() == MSG_COMPLETE when body is empty 2013-03-08 01:50:46 +09:00
Tatsuhiro Tsujikawa 4461cb24ed shrpx: Fix assertion failure in SpdyDownstreamConnection::attach_stream_data 2013-03-07 21:32:10 +09:00
Tatsuhiro Tsujikawa add067ed7e Provide timegm replacement and android build fix 2013-03-07 21:17:55 +09:00
Tatsuhiro Tsujikawa eddd48b783 shrpx: Don't issue RST_STREAM on downstream tunnel connection EOF
The RST_STREAM will be issued in spdy_data_read_callback.
2013-03-01 20:43:35 +09:00
Tatsuhiro Tsujikawa 2d23ae3741 shrpx: Fix missing delete 2013-03-01 00:07:00 +09:00
Tatsuhiro Tsujikawa cf1cfca51f shrpx: Fix not send RST_STREAM when downstream gets valid EOF 2013-03-01 00:05:57 +09:00
Tatsuhiro Tsujikawa da36fc3953 shrpx: Fix WINDOW_UPDATE may block until SpdyUpstream::send()
spdy_data_read_callback in SpdyDownstreamConnection calls
SpdyUpstream::resume_read() which submits WINDOW_UPDATE, but after
that they are not call SpdyUpstream::send(). This means that if no
pending outgoing data in upstream, then WINDOW_UPDATE is blocked until
SpdyUpstream::send() from somewhere. This change adds
SpdyUpstream::send() to resume_read() so that WINDOW_UPDATE is not
blocked.
2013-02-27 22:55:44 +09:00
Tatsuhiro Tsujikawa 7b3f57cef8 shrpx: Fix blocking upstream RST_STREAM and propagate REFUSED_STREAM
This change fixes upstream RST_STREAM is blocked until
SpdyUpstream::send() is called. Now downstream REFUSED_STREAM is
propagated to upstream client so that client can reset request.  The
RST_STREAM error code when downstream went wrong is changed from
CANCEL to INTERNAL_ERROR.
2013-02-27 22:39:44 +09:00
Tatsuhiro Tsujikawa dbb0df5c5b Remove strerror(3) from code which may run in multi-thread 2013-02-25 22:43:44 +09:00
Tatsuhiro Tsujikawa c487d152b2 shrpx: Add non-TLS SPDY backend connection support
Use --backend-spdy-no-tls to disable TLS on backend SPDY connection.
The SPDY protocol used there must be configured by
--backend-spdy-proto option.
2013-02-22 22:54:54 +09:00
Tatsuhiro Tsujikawa fc26f08af2 shrpx: Fix Proxy-Authorization is alwasy sent even if userinfo is empty
Surprisingly, field_set & UF_USERINFO is nonzero even if userinfo
component is empty string.
2013-02-22 21:23:59 +09:00
Tatsuhiro Tsujikawa 78523c6701 shrpx: Fix backend SPDY connection does not go through proxy 2013-02-22 19:30:15 +09:00
Tatsuhiro Tsujikawa 64fcac48b7 shrpx: Fix bug in building certificate lookup tree 2013-02-16 17:51:38 +09:00
Tatsuhiro Tsujikawa c8167234fa shrpx: Fix bug in certificate lookup 2013-02-16 02:33:16 +09:00
Tatsuhiro Tsujikawa abe5fd1e39 spdycat: Fix -d option in usage 2013-02-14 21:25:46 +09:00
Tatsuhiro Tsujikawa 54d5dda6c4 spdycat: Add --multiply option 2013-02-14 21:24:57 +09:00
Tatsuhiro Tsujikawa 3d2ef18afb spdycat: Fix error handling of spdylay_gzip_inflate() 2013-02-14 21:12:16 +09:00
Tatsuhiro Tsujikawa 291cbc639b shrpx: Use patricia trie for cert lookup 2013-02-14 00:28:55 +09:00
Tatsuhiro Tsujikawa e322af8a6f src: Add missing base64.h 2013-02-11 21:49:04 +09:00
Tatsuhiro Tsujikawa e28f169228 shrpx: More backend EOF handling
Now we set Downstream::set_response_connection_close(true) for
tunneled connections. Also call
Upstream::on_downstream_body_complete() callback when setting
MSG_COMPLETE in SpdySession when RST_STREAM is caught.  Clean up EOF
handling in https_downstream_readcb.
2013-02-11 17:20:52 +09:00
Tatsuhiro Tsujikawa d830e099a6 shrpx: Send pending response data before RST_STREAM in tunnel connection 2013-02-11 02:05:11 +09:00
Tatsuhiro Tsujikawa 734d7bced8 shrpx: Handle downstream response_state == MSG_RESET case in SPDY upstream 2013-02-09 23:20:29 +09:00
Tatsuhiro Tsujikawa 8b6fbbf3a6 shrpx: Update --backend-http-proxy-uri usage 2013-02-09 19:08:02 +09:00
Tatsuhiro Tsujikawa 39df51188c shrpx: Log stream ID when submitting RST_STREAM to downstream 2013-02-09 17:56:44 +09:00
Tatsuhiro Tsujikawa ceba5539a1 shrpx: Fix client mode does not work 2013-02-09 17:45:57 +09:00
Tatsuhiro Tsujikawa 18dc6384d4 shrpx: Remove x-forwarded-proto header from SPDY downstream
SPDY frame has :scheme header field, so x-forwarded-proto is not
necessary.
2013-02-09 17:22:33 +09:00
Tatsuhiro Tsujikawa b43b31c362 shrpx: Remove x-forwarded-spdy header field 2013-02-09 17:21:46 +09:00
Tatsuhiro Tsujikawa 4876412f7d shrpx: Check return value of HttpsUpstream::resume_read()
Currently, resume_read() fails if on_read() returns -1 in case that
evbuffer_add failed, which means, most likely, memory allocation
failure. ClientHandler is marked "should be closed", but if
evbuffer_add is failed, write callback will not be invoked and its
marking is not evaluated. It will eventually be deleted when the
client is disconnected or backend failure though.
2013-02-09 17:03:03 +09:00
Tatsuhiro Tsujikawa 99b687ceca shrpx: Documented --spdy-bridge 2013-02-09 16:55:49 +09:00
Tatsuhiro Tsujikawa cb8b8050b5 shprx: Add --backend-http-proxy-uri option
Specify proxy URI in the form http://[USER:PASS]PROXY:PORT. USER and
PASS are optional and if they exist they must be properly
percent-encoded. This proxy is used when the backend connection is
SPDY. First, make a CONNECT request to the proxy and it connects to
the backend on behalf of shrpx. This forms tunnel. After that, shrpx
performs SSL/TLS handshake with the downstream through the tunnel. The
timeouts when connecting and making CONNECT request can be specified
by --backend-read-timeout and --backend-write-timeout options.
2013-02-09 16:55:39 +09:00
Tatsuhiro Tsujikawa 9ba19df813 shrpx: Add --spdy-bridge option
With --spdy-bridge option, it listens SPDY/HTTPS connections from
front end and forwards them to the backend in SPDY. The usage will be
written later. This change fixes the crash when more than 2
outstanding SpdyDownstreamConnection objects are added to SpdySession
and establishing connection to SPDY backend is failed.
2013-02-08 21:46:58 +09:00
Tatsuhiro Tsujikawa 8925c58d71 shrpx: Send RST_STREAM when downstream becomes stale 2013-02-08 00:22:22 +09:00