Lucas Pardue
ec47dfb9b8
Initial HTTP/1.1 capability. Add npn-list option to h2load. Make NPN/ALPN more runtime dependent
2015-09-17 14:49:27 +00:00
Tatsuhiro Tsujikawa
7d481db248
Merge branch 'nghttpx-proxyprotocol'
2015-09-07 23:52:39 +09:00
Tatsuhiro Tsujikawa
4f52f60b3c
src: Inline some single character categorization functions
2015-09-07 23:28:31 +09:00
Tatsuhiro Tsujikawa
026ab797eb
src: util::numeric_host: Use inet_pton instead of getaddrinfo
2015-09-07 22:40:37 +09:00
Tatsuhiro Tsujikawa
ce53bd239e
nghttpx: Implement PROXY protocol version 1
...
Use --accept-proxy-protocol to enable PROXY protocol handling
2015-09-06 21:30:19 +09:00
Tomasz Buchert
97566ce4e3
nghttpx: make early copy of stderr
2015-08-13 11:01:37 +02:00
Tomasz Buchert
900dcf4ced
nghttpx: remove Android-specific code
2015-08-12 20:17:03 +02:00
Tomasz Buchert
06a0f3480e
nghttpx: better handle /dev/stderr and /dev/stdout
2015-08-12 20:16:57 +02:00
Tatsuhiro Tsujikawa
81add96b1e
src: Fix bug in get_uint64
2015-08-11 23:42:32 +09:00
Tatsuhiro Tsujikawa
90b4b48c7e
nghttpx: Add shared session cache using memcached
2015-07-26 23:33:06 +09:00
Tatsuhiro Tsujikawa
5dc060c1a2
src: Use C++11 value-initialization, instead of memset-ing 0
2015-07-19 17:55:37 +09:00
Tatsuhiro Tsujikawa
5465cdf4a4
src: Don't use struct tm.tm_yday from strptime
2015-07-19 17:14:25 +09:00
Tatsuhiro Tsujikawa
7a3012cc1b
src: Rename timegm as nghttp2_timegm
2015-07-15 23:44:24 +09:00
Tatsuhiro Tsujikawa
51ef646678
src: Always use our own faster simpler timegm, use it to calculate gmtoff
2015-06-29 23:14:54 +09:00
Tatsuhiro Tsujikawa
0b27f005e0
Merge branch 'master' into v1.0.0
...
Conflicts:
src/HttpServer.cc
2015-05-15 23:24:19 +09:00
Tatsuhiro Tsujikawa
38cfc5c47c
Check more headers and funcs
2015-05-13 23:29:20 +09:00
Tatsuhiro Tsujikawa
1ad1fe6005
Merge branch 'master' into v1.0.0
2015-04-28 22:48:34 +09:00
Tatsuhiro Tsujikawa
eb05777d88
clang-format
2015-04-24 00:17:13 +09:00
Tatsuhiro Tsujikawa
5937b4b6f7
Merge branch 'master' into v1.0.0
2015-04-19 23:13:38 +09:00
Tatsuhiko Kubo
59f8397659
Use nullptr instead of NULL in C++.
2015-04-15 21:18:39 +09:00
Tatsuhiko Kubo
061732adf0
improved malloc error handlings.
2015-04-15 09:20:45 +09:00
Tatsuhiro Tsujikawa
3e50ef439d
Announce h2, final HTTP/2 ALPN identifier
2015-04-05 23:15:20 +09:00
Tatsuhiro Tsujikawa
4bc9afe20a
nghttpx: Add OCSP stapling feature
2015-03-30 23:58:28 +09:00
Tatsuhiro Tsujikawa
3b24be3bcd
src: Fix compile error with clang-3.6
2015-03-25 01:27:18 +09:00
Tatsuhiro Tsujikawa
94bf8dcd4e
src: Refactor util::hexdump
2015-03-24 21:43:28 +09:00
Tatsuhiro Tsujikawa
89b8039466
nghttp, nghttpd: Add --hexdump option to hexdump incoming traffic
...
The output format is similar to `hexdump -C`
2015-03-24 02:30:51 +09:00
Tatsuhiro Tsujikawa
7b90404072
nghttpx: Omit well-known port from hostport in downstream request
2015-03-14 00:09:10 +09:00
Tatsuhiro Tsujikawa
c64bb62ffe
asio: Make redirect_handler use passed uri as is and percent-encode path part
2015-03-05 23:23:17 +09:00
Tatsuhiro Tsujikawa
0cda2282dd
asio: Assign values to uri_ref directly
2015-03-05 02:12:31 +09:00
Tatsuhiro Tsujikawa
3715a89655
Merge branch 'bcard/address-nghttp2-server' of https://github.com/bcard/nghttp2 into bcard-bcard/address-nghttp2-server
...
Conflicts:
src/nghttp.cc
2015-02-27 00:02:45 +09:00
Brian Card
1bdf664f4d
Changing signature of numeric_name from numeric_name(addrinfo *addr)
...
to numeric_name(const struct sockaddr *sa, socklen_t salen) to remove
dependency on addrinfo struct.
2015-02-26 08:59:25 -05:00
Brian Card
b773d63b92
Moving nghttp's numeric_name function to util.cc and using this to generate the address name in HttpServer.cc
2015-02-24 09:50:18 -05:00
Tatsuhiro Tsujikawa
e457c9a414
src: Add util::strieq_l
2015-02-22 15:32:48 +09:00
Tatsuhiro Tsujikawa
997f9233bc
nghttpx: Support UNIX domain socket in backend connections
2015-02-22 12:27:51 +09:00
Tatsuhiro Tsujikawa
ab93a700ce
src: Announce h2 ALPN
2015-02-20 23:50:17 +09:00
Tatsuhiro Tsujikawa
73b999a662
src: Fix crash
2015-02-11 01:05:22 +09:00
Tatsuhiro Tsujikawa
f360b5c1e3
src: Prefer std::equal
2015-02-11 00:20:33 +09:00
Tatsuhiro Tsujikawa
7fa62c9904
src: Clean up string utlity functions
2015-02-10 23:16:34 +09:00
Tatsuhiro Tsujikawa
c55d7343ca
nghttpx: Support server push using Link header field
...
nghttpx server push is initiated by looking for Link header field from
backend server response. Currently we only enable server push for
HTTP/1 backend and without HTTP/2 proxy mode. The URIs which have
rel=preload are eligible to resource to be pushed.
2015-02-08 16:10:00 +09:00
Tatsuhiro Tsujikawa
33879219ff
Refactor ALPN/NPN protocol selection and introduce NGHTTP2_PROTO_ALPN macro
2015-02-06 22:35:30 +09:00
Tatsuhiro Tsujikawa
4956bdc4da
src: Use std::copy_n
2015-02-06 21:35:03 +09:00
Tatsuhiro Tsujikawa
d37fc8f3a6
src: Fix compiler warning
2015-02-02 22:40:41 +09:00
Tatsuhiro Tsujikawa
a91e0de06c
h2load: Add request stats (time for request min, max, mean and sd)
2015-01-31 23:49:30 +09:00
Tatsuhiro Tsujikawa
0a0618baac
nghttpx: Add test for util::duration_str, rename util::parse_duration_with_unit
2015-01-29 23:28:47 +09:00
Tatsuhiro Tsujikawa
93daa98608
src: Make option suggestion work with unknown option followed by '='
2015-01-28 00:58:42 +09:00
Tatsuhiro Tsujikawa
6a39de0ae5
nghttpx: Accept s or ms as unit for <T> argument
2015-01-28 00:36:44 +09:00
Tatsuhiro Tsujikawa
441f1cc282
nghttpx: Validate received response body length against content-length
2015-01-17 21:33:23 +09:00
Tatsuhiro Tsujikawa
d142830109
nghttpd: Issue RST_STREAM if content-length does not match uploaded bytes
2015-01-15 23:07:25 +09:00
Tatsuhiro Tsujikawa
956c11388c
nghttpx: Allow units (k, m, and g) in --{read,write}-{rate,burst}
...
So that you can specify --read-rate=1M --read-burst=4M
2015-01-13 21:54:53 +09:00
Tatsuhiro Tsujikawa
f7455d48cc
Compile with android NDK
...
This also fixes the bug that nghttpx's acceptor fd is blocking if
SOCK_NONBLOCK is undefined.
2015-01-11 00:28:00 +09:00
Tatsuhiro Tsujikawa
bc17f95c80
src: Move ipv6_numeric_addr to util and add test
2015-01-10 21:33:53 +09:00
Tatsuhiro Tsujikawa
b9174b828e
nghttpx: Use util::make_socket_closeonexec instead of calling fcntl
2015-01-06 22:03:44 +09:00
Tatsuhiro Tsujikawa
fcf0ceeac6
nghttpd: Make use of accept4
2015-01-05 15:59:51 +09:00
Tatsuhiro Tsujikawa
bfac015d61
src: Use libev for rest of the applications
2015-01-03 00:19:41 +09:00
Tatsuhiro Tsujikawa
d695d2ccc0
nghttp, nghttpx, nghttpd, h2load: Support h2-16 in NPN/ALPN
...
The nghttp2 library itself is still h2-14. To experiment with the
implementations to require h2-16 to test new features (e.g.,
prioritization), nghttp, nghttpx, nghttpd and h2load now support h2-16
as well as h2-14. Cleartext HTTP Upgrade is still limited to h2-14
however.
2014-12-16 22:57:58 +09:00
Tatsuhiro Tsujikawa
b1f807abd1
Reformat lines with clang-format-3.5
2014-11-27 23:56:30 +09:00
Tatsuhiro Tsujikawa
e11834d1c9
src: Add code in case struct tm.tm_gmtoff is not available
2014-11-24 18:39:35 +09:00
Tatsuhiro Tsujikawa
de2a855572
Implement faster formatting for format_iso8601 and format_common_log
2014-11-24 14:00:52 +09:00
Lucas Pardue
9cf1a0c77c
Add features to logging, client and server port,
...
time_iso8601 and request_time.
2014-11-23 20:37:51 +00:00
Tatsuhiro Tsujikawa
958cd0de64
nghttpx: Add configurable access logging format
...
This commit adds functionality to customize access logging format in
nghttpx. The format variables are inspired by nginx. The default
format is combined format.
2014-11-19 01:29:55 +09:00
Tatsuhiro Tsujikawa
75a1ad8bdb
src: format_iso8601: Fix invalid millisecond formatting
2014-11-16 17:32:35 +09:00
Tatsuhiro Tsujikawa
737cea0b38
nghttp: Add -r, --har option to output HTTP transactions in HAR format
2014-11-15 23:34:10 +09:00
Tatsuhiro Tsujikawa
d98e9a63d0
src: Refactor code around ALPN setup
2014-11-14 23:14:39 +09:00
Tatsuhiro Tsujikawa
5b6b6dc1b7
src: Rewrite http_date
2014-11-10 21:53:19 +09:00
Tatsuhiro Tsujikawa
f8c70993c0
nghttpx: Adjust TLS record size dynamically
...
Use the same behaviour the current Google server does: start with 1300
TLS record size and after transmitting 1MiB, change record size to
16384. After 1 second idle time, reset to 1300. Only applies to
HTTP/2 and SPDY upstream connections.
2014-11-06 02:36:53 +09:00
Tatsuhiro Tsujikawa
7fa0f2763e
nghttpx: Update Alt-Svc header field spec to alt-svc-04
2014-10-28 00:17:32 +09:00
Tatsuhiro Tsujikawa
bcbb2e8649
src: Use fcntl and FD_CLOEXEC if O_CLOEXEC is undefined
...
We may run into race condition if execve is called at the same time
when fcntl is called. But we just does this for now to compile
nghttp2 applications under older kernel.
2014-10-08 23:44:38 +09:00
Tatsuhiro Tsujikawa
fd07f5e142
src: Add utility APIs to asio_http2.h; add asio-sv2 example to serve files
2014-09-24 23:05:13 +09:00
Tatsuhiro Tsujikawa
446f8f13aa
src: Move libevent related helper functions to libevent_util
2014-09-24 00:45:40 +09:00
Tatsuhiro Tsujikawa
83309b6391
nghttpx: Reduce epoll_ctl call
2014-09-18 23:56:01 +09:00
Tatsuhiro Tsujikawa
86dd1519b4
nghttpx: Android specific hack for special files for logging
...
Android lacks /dev/stderr, so directly use /proc/self/fd/2 as default
errorlog-file. Android does not like O_APPEND for /proc/self/fd/1 and
/proc/self/fd/2, so omit the flag for these paths.
2014-08-17 19:01:51 +09:00
Tatsuhiro Tsujikawa
bf13d91264
nghttpx: Add hot deploy feature
...
nghttpx supports hot deploy feature using signals. The host deploy in
nghttpx is multi step process. First send USR2 signal to nghttpx
process. It will do fork and execute new executable, using same
command-line arguments and environment variables. At this point, both
current and new processes can accept requests. To gracefully shutdown
current process, send QUIT signal to current nghttpx process. When
all existing frontend connections are done, the current process will
exit. At this point, only new nghttpx process exists and serves
incoming requests.
2014-08-13 00:43:54 +09:00
Tatsuhiro Tsujikawa
bb47484667
nghttpx: Log transmission and reception of GOAWAY
2014-07-12 23:30:13 +09:00
Tatsuhiro Tsujikawa
afdc61a253
nghttpx: Remove S_IROTH when creating log file
2014-07-05 22:41:53 +09:00
Tatsuhiro Tsujikawa
0ce848a611
nghttpx: Rewrite logging system
...
This change rewrites logging system of nghttpx. Previously access log
and error log are written to stderr or syslog and there was no option
to change stderr to something else. With this change, file path of
access log and error log can be configured separately and logging to
regular file is now added. To support rotating log, if SIGUSR1 signal
is received by nghttpx, it closes the current log files and reopen it
with the same name. The format of access log is changed and has same
look of apache's. But not all columns are not supported yet.
2014-07-05 18:43:24 +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
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
ab2dc5967d
Replace HTTP/2.0 with HTTP/2
2014-03-30 19:26:37 +09:00
Tatsuhiro Tsujikawa
775d07ace4
EvbufferBuffer: Optimize a bit
2014-03-15 16:23:12 +09:00
Tatsuhiro Tsujikawa
a457d2a138
h2load, nghttp: Use SNI field for non-numeric host
2014-03-15 15:32:38 +09:00
Tatsuhiro Tsujikawa
27e161dc31
src: Add EvbufferBuffer class to simplify the code base
2014-03-05 00:23:33 +09:00
Tatsuhiro Tsujikawa
227a48cea1
src: Move http_parser_url related functions to util
2014-02-27 21:53:52 +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
59c10ea4c2
src: Make the cost of suffix matched option 0
2014-01-12 22:02:19 +09:00
Tatsuhiro Tsujikawa
90ea7ba92a
src: Add command-line option guess
2014-01-09 01:27:56 +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
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
b405b4bc9f
src: Fix token68 decoding
2013-11-09 16:18:01 +09:00
Tatsuhiro Tsujikawa
1f3b96e233
nghttpx: Rewrite header handling
2013-08-28 00:09:46 +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
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
6bc7e7bd0b
Add nghttp client backed by libevent
2013-07-22 00:01:33 +09:00
Tatsuhiro Tsujikawa
61bf7c6b02
Integrate new header compression
2013-07-20 00:08:14 +09:00
Tatsuhiro Tsujikawa
24cab312cf
Make spdycat and spdyd barely work
2013-07-16 00:15:04 +09:00
Tatsuhiro Tsujikawa
0edce70343
Rebranding nghttp2
2013-07-13 00:43:06 +09:00
Tatsuhiro Tsujikawa
add067ed7e
Provide timegm replacement and android build fix
2013-03-07 21:17:55 +09:00