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