Tatsuhiro Tsujikawa
e18c439a73
nghttp: Add --no-content-length option
2014-07-03 22:48:43 +09:00
Tatsuhiro Tsujikawa
545732fed8
nghttpd: Add --early-response option
...
This option is testing the client behavior when it gets response
before sending all request.
2014-07-03 22:44:27 +09:00
Tatsuhiro Tsujikawa
4b6f124b7e
Add API to check half-closed state for both direction of stream
2014-07-03 21:44:29 +09:00
Tatsuhiro Tsujikawa
119fb05cc2
nghttpx: Call on_response_headers for response header only in http2 downstream
2014-07-03 21:18:01 +09:00
Tatsuhiro Tsujikawa
e08df2840c
nghttpx: Disallow 2nd message in http downstream
2014-07-03 20:57:07 +09:00
Tatsuhiro Tsujikawa
1ce00f455c
nghttpx: Remove requirement of content-length for HTTP2 upstream POST
2014-07-03 19:59:10 +09:00
Tatsuhiro Tsujikawa
9cddb05f54
nghttpx: Use error_reply instead of RST_STREAM for http2 upstream request
2014-07-03 00:12:16 +09:00
Tatsuhiro Tsujikawa
93b3a44fb5
nghttpx: Add ability to Http2Upstream to send RST_STREAM after END_STREAM
2014-07-02 23:56:26 +09:00
Tatsuhiro Tsujikawa
acb3d4dcfc
nghttpx: Handle connection flow control for DATA not sent to frontend
2014-07-02 23:24:59 +09:00
Tatsuhiro Tsujikawa
797edae4d4
nghttpx: Handle connection flow control for DATA not sent to backend
2014-07-02 23:24:58 +09:00
Tatsuhiro Tsujikawa
4e81a34146
nghttpd: Add --dh-param-file option to support DHE ciphers
2014-06-28 15:43:06 +09:00
Tatsuhiro Tsujikawa
9fec34968b
nghttpd: Disable SSL_CTX_set_ecdh_auto for OpenSSL >= 1.0.2
2014-06-28 15:35:10 +09:00
Tatsuhiro Tsujikawa
a3334bb21c
nghttpd: Use cipher suites recommended by Mozilla
2014-06-28 15:28:19 +09:00
Tatsuhiro Tsujikawa
c1be7c734f
src: Update status code according to RFC 7231
2014-06-27 23:02:12 +09:00
Tatsuhiro Tsujikawa
303f0f3fcd
nghttpx: Return 413 if request header is too large
...
For now, if request has request body, we'll issue RST_STREAM to inform
the peer to stop sending body. RST_STREAM may be sent before error
page header or data, so peer may receive RST_STREAM only.
2014-06-27 22:54:33 +09:00
Tatsuhiro Tsujikawa
ca87b45fe4
nghttpx: Don't fail backend connection if one of backend request fails
2014-06-27 22:34:54 +09:00
Tatsuhiro Tsujikawa
31d99b3664
nghttp: Adjust header size for CONTINUATION test
2014-06-27 21:16:36 +09:00
Tatsuhiro Tsujikawa
3312df42d2
nghttpx: Use std::unique_ptr for ListenHandler::http2session_
2014-06-27 00:39:53 +09:00
Tatsuhiro Tsujikawa
68cd12ac29
nghttpx: Use std::vector instead of raw array
2014-06-27 00:26:21 +09:00
Tatsuhiro Tsujikawa
52ff158f34
h2load: Fix failed stream count is added multiple times
...
The number of failed stream is counted multiple times if several
connection attempts are made.
2014-06-26 23:20:12 +09:00
Tatsuhiro Tsujikawa
479e15469c
nghttpx: Add worker-frontend-connections option
2014-06-26 22:55:22 +09:00
Tatsuhiro Tsujikawa
ad60a18fb9
Remove BLOCKED frame
2014-06-24 00:22:41 +09:00
Tatsuhiro Tsujikawa
5aba6e6d1b
h2load: Set number of request per client explicitly
...
Previously we do not specify the number of requests each client has to
issue. The each client corresponds to 1 TCP connection. If
connection was not accepted by server or not TLS handshake is not
done, we effectively don't use that connection and the requests
supposed to be issued for those connections are done via other
established connections. If this occurs, servers which do not accept
all connections may gain good benchmark results since they don't have
to pay extra cost to handle all connections (e.g., SSL/TLS handshake).
This change explicitly set the number of requests each client has to
issue so that servers cannot *cheat*.
2014-06-22 15:03:46 +09:00
Tatsuhiro Tsujikawa
1caec7cb16
h2load: Fix memory leak detected by LeakSanitizer
2014-06-20 00:00:06 +09:00
Tatsuhiro Tsujikawa
0cd26d6f3b
nghttp: Remove garbage for deprecated per-stream compression which cause leak
2014-06-19 23:35:58 +09:00
Tatsuhiro Tsujikawa
2bfa772472
nghttpx: Update cipher suite list
2014-06-19 23:26:30 +09:00
Tatsuhiro Tsujikawa
133c3d66be
nghttpx: Remove TLSv1.0 from default TLS proto list
2014-06-19 23:21:53 +09:00
Tatsuhiro Tsujikawa
266a15ccd3
nghttpx: Remove per-connection rate limit
...
It looks like setting read-rate and read-burst to 0 makes busy loop.
It seems a bug. On the other hand, we most likely want per-thread
rate limit rather than per-connection. So we decided to drop them.
2014-06-19 23:19:14 +09:00
Tatsuhiro Tsujikawa
4ff522764c
h2load: Call session->on_write() explicitly in Client::on_connect()
2014-06-19 22:49:38 +09:00
Tatsuhiro Tsujikawa
4ab594b144
nghttpx: Fix connection preface is not read by upstream_http2_connhd_readcb
...
It seems that if readcb is not set before SSL/TLS handshake, the
incoming data already available when eventcb (BEV_EVENT_CONNECTED
event) is fired is not further notified after setting new readcb. We
knew this fact and call upstream->on_read() in eventcb, but it is
wrong for HTTP/2. We have to call upstream_http2_connhd_readcb to
check connection preface. Otherwise, we consume it by nghttp2 session
and it is treated as unknown frame and connection preface is not
detected properly.
2014-06-19 22:43:54 +09:00
Tatsuhiro Tsujikawa
a344a8f566
src: Don't build h2load if std::future is not working
2014-06-18 14:24:45 +09:00
Tatsuhiro Tsujikawa
87360b4f7d
nghttpx: Require TLSv.12 for h2
2014-06-18 12:09:30 +09:00
Tatsuhiro Tsujikawa
174e410b93
Use hex in nghttp2_error_code and nghttp2_settings_id
2014-06-18 10:48:31 +09:00
Tatsuhiro Tsujikawa
94b9c3771d
nghttpx: Throw away request and response headers when they are done
2014-06-15 17:25:24 +09:00
Tatsuhiro Tsujikawa
041cec2d97
nghttpx: Check error from SSL_set_fd
2014-06-12 23:39:58 +09:00
Tatsuhiro Tsujikawa
25b58d5e22
nghttpx: Code cleanup
2014-06-12 23:37:33 +09:00
Tatsuhiro Tsujikawa
1ee847c21a
nghttp: Code cleanup
2014-06-12 22:48:40 +09:00
Tatsuhiro Tsujikawa
1af9a9cee0
nghttpx: Don't stderr log if syslog is used
...
This change also reverts previous commits and tty is set to false if
syslog is used.
2014-06-12 21:47:00 +09:00
Tatsuhiro Tsujikawa
6a2950aef0
nghttpx: Make tty to false when daemonized
2014-06-12 00:19:46 +09:00
Tatsuhiro Tsujikawa
9b174bf5c9
Fix compile error with -Wshorten-64-to-32
...
The original patch was contributed by Alexis La Goutte
2014-06-11 23:37:16 +09:00
Tatsuhiro Tsujikawa
21c4931197
nghttpx: Get rid of openssl filter
...
Libevent Openssl filter is very inconvenient in various respect. The
most annoying thing is it somehow emits data when SSL_shutdown is
called. The reason we introduced this filter solution is drop
connection if TLS renegotiation is detected. This commit implements
renegotiation detection and drop connection without filtering.
2014-06-11 01:16:49 +09:00
Tatsuhiro Tsujikawa
24762db8f5
nghttpx: Drop connection if HTTP/2 security level is not satisfied on backend
2014-06-11 00:19:54 +09:00
Tatsuhiro Tsujikawa
492b42e6e9
nghttpx: Drop connection if HTTP/2 security level is not satisfied on frontend
2014-06-11 00:07:51 +09:00
Tatsuhiro Tsujikawa
d6b5824c9c
nghttpx: Don't check TLS requirement in ALPN cb cause cipher obj is nullptr
...
Also don't compare ALPN identifier with streq, since they are just
byte string.
2014-06-10 23:22:52 +09:00
Tatsuhiro Tsujikawa
c204861dec
nghttpx: Create NPN prefs only once
2014-06-10 23:22:23 +09:00
Tatsuhiro Tsujikawa
7b0ed5d9bd
nghttpx: Only allow DHE, ECDHE + AEAD ciphers for HTTP/2
...
Cipher suites are chosen by DHE and ECDHE ciphers + GCM (AEAD). Now
default cipher list is the one recommended by Mozilla web site. The
--honor-cipher-order option is removed and now it is always assumed.
2014-06-10 22:47:22 +09:00
Tatsuhiro Tsujikawa
5f5b5378c9
Merge branch 'master' into h2-13
...
Conflicts:
lib/nghttp2_session.c
2014-06-10 21:38:26 +09:00
Tatsuhiro Tsujikawa
dacc9b2f1c
Separate extension frames from core frames
...
ALTSVC and BLOCKED frames are now extension frames. To add new
extension frame without modifying nghttp2_frame union, which causes so
name bump, we separated extension frames from core frames.
nghttp2_frame includes generic nghttp2_extension. The payload member
of nghttp2_extension will point to the structure of extension frame
payload. The frame types of extension frames are defined in
nghttp2_ext_frame_type.
2014-06-09 23:16:54 +09:00
Tatsuhiro Tsujikawa
de14c02227
nghttpx: Code cleanup
2014-06-08 23:09:44 +09:00
Tatsuhiro Tsujikawa
e665123ebe
nghttpx: Use nullptr instead of NULL
2014-06-08 23:09:44 +09:00
Tatsuhiro Tsujikawa
db8af31e2b
nghttpx: Code cleanup
2014-06-08 23:09:44 +09:00
Tatsuhiro Tsujikawa
0fd5b2aa32
nghttpx: Use std::vector for tls_proto_list and npn_list
...
Now SSL/TLS option mask to disable particular SSL/TLS protocol
versions are pre-calculated and stored in Config.
2014-06-08 23:09:44 +09:00
Tatsuhiro Tsujikawa
1f58be423d
nghttpx: Use nullptr instead of 0
2014-06-08 21:05:36 +09:00
Tatsuhiro Tsujikawa
14b818efc8
nghttpx: Use std::unique_ptr<char[]> instead of char*
2014-06-08 21:02:40 +09:00
Tatsuhiro Tsujikawa
c46d3dafc6
Remove PAD_HIGH and Pad High field
...
CONTINUATION now doesn't have padding.
2014-06-07 18:15:36 +09:00
Tatsuhiro Tsujikawa
3db8935e20
Remove per-frame compression
2014-06-07 16:04:43 +09:00
Tatsuhiro Tsujikawa
b8ed74c1ec
nghttpx: Disable SSL_CTX_set_ecdh_auto() for now
2014-06-06 23:17:32 +09:00
Tatsuhiro Tsujikawa
fcec996925
h2load: Use 1 thread if the number of concurrent client is 1
2014-06-06 23:11:08 +09:00
Tatsuhiro Tsujikawa
7cb28e88e2
h2load: Return Stats rather than Worker from std::future
2014-06-06 23:08:32 +09:00
Tatsuhiro Tsujikawa
aea4001d73
deflatehd: Fix crash with -t option
2014-06-05 00:59:22 +09:00
Tatsuhiro Tsujikawa
7e217511bf
nghttpx: Code cleanup
...
Mainly make nested code block to rather flat style.
2014-06-01 23:44:32 +09:00
Tatsuhiro Tsujikawa
8c67bbe3a8
src: Avoid copy in evbuffer_pullup()
...
Previously, we use evbuffer_pullup(buf, -1) to linearize the memory
region and it may cause buffer copy. To avoid this, we use the return
value of evbuffer_get_contiguous_space() as 2nd parameter. According
to the libevent manual, by doing so evbuffer_pullup() will not copy or
modify any data in evbuffer.
2014-06-01 21:01:01 +09:00
Tatsuhiro Tsujikawa
cc250386df
nghttpx: Lower read watermark
2014-06-01 02:32:26 +09:00
Tatsuhiro Tsujikawa
3b7c733246
nghttpx: Fix typo
2014-06-01 02:32:15 +09:00
Tatsuhiro Tsujikawa
7e5567341f
nghttpx: Set timeout to underlying bufferevent
...
Setting write timeout to filter bufferevent does not work as intended.
It timeouts even when there is no data to write.
2014-06-01 02:25:23 +09:00
Tatsuhiro Tsujikawa
7a797b2c11
nghttpx: Reduce socket I/O buffer size
2014-05-29 22:24:15 +09:00
Tatsuhiro Tsujikawa
86ab9f33de
nghttpx: Fix regression bug that frame with stream_id = 0 not handled
2014-05-28 00:26:27 +09:00
Tatsuhiro Tsujikawa
d844b0acd0
h2load: Use std::async to dispatch parallel jobs
2014-05-26 23:29:28 +09:00
Tatsuhiro Tsujikawa
1fa5852f8f
nghttpx: Treat '*' in <HOST> parameter of --frontend as wildcard explicitly
...
It seems that specifyig '*' to node parameter in getaddrinfo() is
treated as specifying NULL, but it is not documented. So rather than
relying on this feature, we explicitly treat '*' as "wildcard" address
and specify NULL to node parameter in getaddrinfo().
Now '*,3000' is a default value of --frontend option. Specyfing '*'
binds all addresses including both IPv4 and IPv6.
2014-05-25 16:15:48 +09:00
Tatsuhiro Tsujikawa
ebf0e4d787
nghttpd, nghttpx: Check END_STREAM flag in HEADERS other than request
2014-05-24 15:02:46 +09:00
Tatsuhiro Tsujikawa
672ad82849
nghttpx: Clarify that --npn-list is used in both ALPN and NPN
2014-05-21 21:28:58 +09:00
Tatsuhiro Tsujikawa
896717f5d4
nghttpx: Make --npn-list option work in ALPN
...
Previously --npn-list option is ignored in ALPN protocol selection
callback. This change fixes this issue.
2014-05-21 21:16:44 +09:00
Tatsuhiro Tsujikawa
3f80472e0a
nghttpx: Minor tweak to buffer size
...
Simplified when to send WINDOW_UPDATE to the backend, that is we send
WINDOW_UPDATE when input buffer is empty.
2014-05-16 21:42:30 +09:00
Tatsuhiro Tsujikawa
3b5b5ce254
Update http-parser to 8d9e5db981b623fffc93657abacdc80270cbee58
2014-05-16 00:23:03 +09:00
Tatsuhiro Tsujikawa
694cd07f1d
nghttpx: Remove Connection: close header field from CONNECT response
...
It appears that some Android client does not like Connection: close in
200 CONNECT response. Browsers fine with this header field. It is
better to remove it. Squid does not emit it too.
2014-05-15 23:45:17 +09:00
Tatsuhiro Tsujikawa
2ae1da113e
src: Use C++ style comments for C++ source code
2014-05-14 23:22:23 +09:00
Tatsuhiro Tsujikawa
5b4f02dfe0
src: Rewrite util::format_hex
2014-05-14 23:09:33 +09:00
Tatsuhiro Tsujikawa
e47b976691
src: Eliminate use of snprintf
2014-05-14 22:39:28 +09:00
Tatsuhiro Tsujikawa
be4c75a7e9
src: Use gmtime_r instead of gmtime
2014-05-14 21:23:21 +09:00
Tatsuhiro Tsujikawa
7b9a8acc22
Add HPACK deflation API
2014-05-13 23:42:55 +09:00
Tatsuhiro Tsujikawa
d3fa938f1f
nghttpd: Fix compiler warning
2014-05-11 21:51:25 +09:00
Tatsuhiro Tsujikawa
74ad10c355
nghttpx: Log :authority for CONNECT request in accesslog
2014-05-10 00:55:15 +09:00
Tatsuhiro Tsujikawa
1bd43e094a
nghttp: Remove streams from HttpClient
2014-05-08 00:29:46 +09:00
Tatsuhiro Tsujikawa
e8de437d5c
Return new stream ID from nghttp2_submit_{request, headers, push_promise}
...
Previously stream ID was assigned just before HEADERS or PUSH_PROMISE
was serialized and nghttp2_submit_{request, headers, push_promise} did
not return stream ID. The application has to check assigned stream ID
using before_frame_send_callback. Now it is apparent that priority is
meant to DATA transfer only. Also application can reorder the
requests if it wants. Therefore we can assign stream ID in
nghttp2_submit_* functions and return stream ID from them. With this
change, now application does not have to check stream ID using
before_frame_send_callback and its code will be simplified.
2014-05-07 23:24:07 +09:00
Alexis La Goutte
ed63674b88
Fix GCC build with -Werror
...
timegm.h:30:8: error: C++ style comments are not allowed in ISO C90 [-Werror]
2014-05-06 17:06:40 +02:00
Tatsuhiro Tsujikawa
9228e223fa
Remove NGHTTP2_ERR_GZIP error code
2014-05-06 23:42:57 +09:00
Tatsuhiro Tsujikawa
43fb7f707f
Fix unittest build error
2014-05-06 23:42:32 +09:00
Tatsuhiro Tsujikawa
4f027c1562
libnghttp2: Remove dependency to zlib
...
We inherited gzip compression API from spdylay codebase. In spdylay,
the cost of having such API is almost free because spdylay requires
zlib for header compression. nghttp2 no longer uses gzip to header
compression. zlib dependency exists just for gzip compression API,
which is not an essential. So we decided to move gzip code to under
src and remove zlib dependency from libnghttp2 itself. As nghttp2
package, we depend on zlib to compile tools under src.
2014-05-06 23:10:50 +09:00
Tatsuhiro Tsujikawa
9125499dd0
src: Implement per-frame DATA compression
...
Currently, nghttpd server only compresses files whose extensions are
one of .html, .js, .css and .txt. nghttp advertises its support of
per-frame compression in SETTINGS frame. To implement this feature,
we added 2 public API: nghttp2_session_get_remote_settings() and
nghttp2_gzip_inflate_finished().
2014-05-03 00:02:17 +09:00
Nicholas Hurley
f3f9210dae
Add --disable-threads option for configure
...
This allows users of OS X 10.9 to run nghttpd (and friends) with
threading entirely disabled, to avoid crashes on startup related to
std::mutex.
2014-05-01 17:18:29 -07:00
Tatsuhiro Tsujikawa
660c536275
Extend namelen and valuelen in nghttp2_nv to size_t
2014-04-30 23:08:34 +09:00
Tatsuhiro Tsujikawa
abe74f869f
Ditto 7730b13e5a
2014-04-30 22:44:51 +09:00
Alexis La Goutte
7730b13e5a
Fix Address of stack memory associated with local variable 'flag' is still
...
referred to by the global variable 'long_options' upon returning to the caller.
This will be a dangling reference
Found by Clang Analyzer
2014-04-30 22:06:42 +09:00
Tatsuhiro Tsujikawa
b5d793dee6
app_helper: Remove redundant line separator after frame debug output
2014-04-30 10:01:19 +09:00
Tatsuhiro Tsujikawa
4caddec9ba
nghttp: Align NULL separated header fields
2014-04-30 09:56:33 +09:00
Tatsuhiro Tsujikawa
bc50062964
nghttp: Fix crash on PUSH_PROMISE
2014-04-29 15:08:57 +09:00
Tatsuhiro Tsujikawa
fa8b310cfd
nghttpx: Return SSL_TLSEXT_ERR_OK from servername_callback
2014-04-27 23:17:19 +09:00
Tatsuhiro Tsujikawa
6d5f402380
Add nghttp2_adjust_priority_callback
...
Callback function invoked to adjust priority value for request
HEADERS.
Since the application doesn’t know stream ID when it submits
requests, it may not be able to add correct priority value to HEADERS
frame and forced to use follwing PRIORITY frame. The purpose of this
callback is give the chance to the application to adjust priority
value with the latest information it has just before transmission so
that correct priority is included in HEADERS frame and it doesn’t
have to send additional PRIORITY frame.
2014-04-27 14:48:43 +09:00
Tatsuhiro Tsujikawa
a82b7f09c8
nghttpx: Drop HTTP/2 backend connection unless TLSv1.2 or TLSv1.1 was negotiated
2014-04-26 23:00:58 +09:00
Tatsuhiro Tsujikawa
75bfbc94dd
nghttpx: Require TLSv1.2 or TLSv1.1 for NPN as well
2014-04-26 22:51:39 +09:00
Tatsuhiro Tsujikawa
6c66bd5c7c
ALPN: Do not negotiate HTTP/2 unless TLSv1.2 or TLSv1.1 was used
2014-04-26 22:37:48 +09:00
Tatsuhiro Tsujikawa
cd69ed20c3
nghttpx: Select SPDY protocol in ALPN
2014-04-26 19:36:35 +09:00
Tatsuhiro Tsujikawa
a8a2236da9
nghttpx: Add --add-response-header option
2014-04-26 14:56:08 +09:00
Tatsuhiro Tsujikawa
293b717b04
nghttp: Fix bug that -H does not allow single letter header name
2014-04-26 14:53:03 +09:00
Tatsuhiro Tsujikawa
078b1de12e
nghttp: Fix uninitialized pri_spec
2014-04-25 21:23:47 +09:00
Tatsuhiro Tsujikawa
d84d0b8c5c
h2load: Check return of nghttp2_submit_request
2014-04-25 21:23:31 +09:00
Tatsuhiro Tsujikawa
052be3296c
Implement compressed DATA
...
The library interface supports compressed DATA. The library does not
deflate nor inflate data payload. When sending data, an application
has to compress data and set NGHTTP2_DATA_FLAG_COMPRESSED to
data_flags parameter in nghttp2_data_source_read_callback. On
receiving, flags parameter in nghttp2_on_data_chunk_recv_callback
includes NGHTTP2_FLAG_COMPRESSED. An application should check the
flags and inflate data as necessary. Since compression context is per
frame, when DATA is seen in nghttp2_on_frame_recv_callback, an
application should reset compression context.
2014-04-25 01:27:18 +09:00
Tatsuhiro Tsujikawa
6bb410d603
Implement BLOCKED frame
2014-04-25 00:38:24 +09:00
Tatsuhiro Tsujikawa
2d4b92fc2b
Merge branch 'priority'
2014-04-24 23:48:37 +09:00
Tatsuhiro Tsujikawa
80eb988511
h2load: Add -p, --no-tls-proto option to support SPDY without SSL/TLS
...
Previously h2load supports SPDY only for https URI. This is because
SPDY has no mechanism to negotiate its protocol version without NPN.
With this change, user can specify the exact protocol version to use
when http URI (without SSL/TLS) is used.
2014-04-21 21:35:45 +09:00
Tatsuhiro Tsujikawa
ac86b51e37
Implement simplified dependency based priority
2014-04-15 22:55:07 +09:00
Tatsuhiro Tsujikawa
6326aec089
nghttpx: Return std::unique_ptr from parse_config_str_list
2014-04-08 22:44:30 +09:00
Tatsuhiro Tsujikawa
f9f6cdc93d
nghttpx: Specify altsvc info in one option and allow multiple occurrences
2014-04-08 22:28:50 +09:00
Tatsuhiro Tsujikawa
d998e79549
h2load: Link with timegm
2014-04-06 17:35:00 +09:00
Tatsuhiro Tsujikawa
59c9c4511c
nghttpx: Use move to insert crumbled cookies
2014-04-05 23:45:07 +09:00
Tatsuhiro Tsujikawa
5b55874d4d
Fix static analysis error
2014-04-05 20:04:09 +09:00
Tatsuhiro Tsujikawa
c2bb9c01a6
nghttp: Update doc for -p option and improve error handling for it
2014-04-05 19:15:45 +09:00
Tatsuhiro Tsujikawa
0a527f16f5
nghttpx: Log when connection was upgraded to HTTP/2
2014-04-05 18:59:22 +09:00
Tatsuhiro Tsujikawa
8f23c0c38b
Name unnamed union in nghttp2_priority_spec so that we can be C90 compatible
2014-04-05 18:40:44 +09:00
Tatsuhiro Tsujikawa
e7ad3633c7
nghttp2_data_source_read_callback: Replace eof with uint32_t *data_flags
...
Replace int *eof with uint32_t *data_flags so that we can easily
extend functionality if we have to (but we don't do if possible).
2014-04-05 17:59:24 +09:00
Tatsuhiro Tsujikawa
d668d2448b
Hide session option from public API
...
To make adding new option easier, we decided to make the details of
option struct private and hide it from public API. We provide
functions to set individual option value.
2014-04-04 21:57:47 +09:00
Tatsuhiro Tsujikawa
2a49e164c8
nghttpx: Fix crash with HTTP/2 downstream
2014-04-03 19:14:05 +09:00
Tatsuhiro Tsujikawa
22c88af1ab
nghttpx: Resume deferred DATA after complete DATA frame arrived on backend
...
If SPDY or HTTP/2 ustream is used and HTTP/2 downstream is used, only
call {spdylay,nghttp2}_resume_data when complete DATA frame was read
in backend to avoid to transmit too small DATA frame to the upstream.
2014-04-03 18:54:15 +09:00
Tatsuhiro Tsujikawa
db6c41a219
nghttpx: Add altsvc related options
...
To advertise alternative serive, at least --altsvc-port and
--altsvc-protocol-id must be specified.
2014-04-03 13:20:50 +09:00
Tatsuhiro Tsujikawa
1d38df0a31
nghttp: Don't index authorization header field for debugging purpose
2014-04-03 11:33:15 +09:00
Tatsuhiro Tsujikawa
b1edb1f3ae
Don't index name/value pair bearing NO_INDEX flag when forwarding it
2014-04-03 11:22:11 +09:00
Tatsuhiro Tsujikawa
35a45f9d47
src: Initialize nghttp2_nv flags
2014-04-02 20:37:33 +09:00
Tatsuhiro Tsujikawa
c9f90924a9
Add flags parameter to nghttp2_on_header_callback
2014-04-02 02:10:35 +09:00
Tatsuhiro Tsujikawa
24cb90806d
Add flags to nghttp2_nv structure
...
This is preliminary change for upcoming HPACK updates. The flags are
used to determine the name/value pair is indexable or not.
2014-04-01 23:17:50 +09:00
Tatsuhiro Tsujikawa
b143039b60
src: Output debug data in GOAWAY in printable ascii
...
Non printable ascii is printed as ".".
2014-03-31 23:17:51 +09:00
Tatsuhiro Tsujikawa
f011bda377
src: Compile defaltehd and inflatehd with c++
...
This commit also fixes defaltehd always reports output length is 0.
2014-03-30 22:41:02 +09:00
Tatsuhiro Tsujikawa
34581d830d
Define NGHTTP2_CLEARTEXT_PROTO_VERSION_ID
...
This identifier string is used if HTTP/2 is used over cleartext TCP.
2014-03-30 21:30:47 +09:00
Tatsuhiro Tsujikawa
60a2c260a5
Define NGHTTP2_CLIENT_CONNECTION_PREFACE macro
...
NGHTTP2_CLIENT_CONNECTION_PREFACE has the same content with
NGHTTP2_CLIENT_CONNECTION_HEADER, which is now obsoleted by
NGHTTP2_CLIENT_CONNECTION_PREFACE.
2014-03-30 21:02:25 +09:00
Tatsuhiro Tsujikawa
ab2dc5967d
Replace HTTP/2.0 with HTTP/2
2014-03-30 19:26:37 +09:00
Tatsuhiro Tsujikawa
bd7d335d9a
src: Print padlen first
2014-03-30 01:24:17 +09:00
Tatsuhiro Tsujikawa
f7162ab702
Implement dependency based priority
2014-03-30 01:24:16 +09:00
Tatsuhiro Tsujikawa
8ccb6e463d
nghttpx: Use raw-string iteral to output help
2014-03-22 22:03:13 +09:00
Tatsuhiro Tsujikawa
e4dacb2f6f
nghttpd: Use raw-string literal to output help
2014-03-22 21:35:00 +09:00
Tatsuhiro Tsujikawa
0a80b0c1aa
nghttpd: Set write timeout for stream blocked by flow controll only
...
This change also reset read timeout when we have sent HEADERS,
PUSH_PROMISE or DATA.
2014-03-22 00:41:01 +09:00
Tatsuhiro Tsujikawa
fac42788bc
nghttpd: Rename Request as Stream
2014-03-21 23:26:53 +09:00
Tatsuhiro Tsujikawa
464fef7c6e
nghttpd: Add HTTP/2 stream read/write timeout
2014-03-21 23:07:20 +09:00
Tatsuhiro Tsujikawa
334656b704
nghttpx: Announce 2.0 in via header field
2014-03-21 19:25:46 +09:00
Tatsuhiro Tsujikawa
ba5d9d3352
nghttpx: Add x-forwarded-proto header field to downstream HTTP/2 request
2014-03-21 18:57:57 +09:00
Tatsuhiro Tsujikawa
c048ac5eff
nghttpd: Avoid to use bufferevent for connection
2014-03-18 00:09:59 +09:00
Tatsuhiro Tsujikawa
fbfa3adc42
h2load: traffic bytes data should be based on all traffic
2014-03-16 19:36:41 +09:00
Tatsuhiro Tsujikawa
775d07ace4
EvbufferBuffer: Optimize a bit
2014-03-15 16:23:12 +09:00
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