Tatsuhiro Tsujikawa
8f40bd4675
nghttp, nghttpd, h2load: Clear OpenSSL error queue and handle renegotiation
2015-01-09 09:10:59 +09:00
Tatsuhiro Tsujikawa
7add262721
nghttpx: Detect TLS renegotiation after SSL_read and SSL_write
2015-01-09 00:49:27 +09:00
Tatsuhiro Tsujikawa
4a218f1b79
nghttpx: Clear OpenSSL error and handle limit change in read_tls
2015-01-09 00:08:34 +09:00
Tatsuhiro Tsujikawa
419c03daa2
nghttpx: Fix TLS write error
...
SSL_write requires the same arguments (buf pointer and its length) on
SSL_ERROR_WANT_READ or SSL_ERROR_WANT_WRITE. get_write_limit() may
return smaller length than previously passed to SSL_write, which
violates OpenSSL assumption. To avoid this, we keep last legnth
passed to SSL_write to tls_last_writelen_ if SSL_write indicated I/O
blocking.
2015-01-08 23:03:56 +09:00
Tatsuhiro Tsujikawa
019f1e9fc7
nghttpx: Remove useless comments
2015-01-08 22:28:30 +09:00
Tatsuhiro Tsujikawa
53604782e5
nghttpx: Clean up worker_event handling
2015-01-08 22:24:29 +09:00
Tatsuhiro Tsujikawa
689e8c0ee3
nghttpx: Don't copy ticket_keys std::shared_ptr
2015-01-08 21:49:19 +09:00
Tatsuhiro Tsujikawa
0173929538
nghttpx: Rename ListenHandler as ConnectionHandler
2015-01-08 21:48:39 +09:00
Tatsuhiro Tsujikawa
f570757701
nghttpd: Fix data race when updating cached_date
2015-01-08 21:41:26 +09:00
Tatsuhiro Tsujikawa
5473e870eb
nghttpx: Use smaller buffer for reading
2015-01-08 21:28:52 +09:00
Tatsuhiro Tsujikawa
a41b7baf81
nghttpx: Handle NEW_CONNECTION event first
2015-01-08 21:20:17 +09:00
Tatsuhiro Tsujikawa
fcddb5c06c
nghttpx: Distribute session ticket keys to workers without mutex
2015-01-08 21:15:45 +09:00
Tatsuhiro Tsujikawa
5d3544185c
nghttpx: Fix crash in SSL_CTX_set_tlsext_ticket_key_cb
...
It seems that returning 0 when enc == 0 crashes OpenSSL.
2015-01-08 20:46:35 +09:00
Tatsuhiro Tsujikawa
5dce9501a6
Fix compile error with libstdc++ and/or --disable-threads
2015-01-08 01:57:59 +09:00
Tatsuhiro Tsujikawa
08e8cc1915
nghttpx: Add --tls-ticket-key-file option
...
This option specifies files contains 48 random bytes to construct
session ticket key data. This option can be used repeatedly to
specify multiple keys, but only the first one is used to encrypt
tickets.
2015-01-08 01:26:30 +09:00
Tatsuhiro Tsujikawa
52f3572d5b
nghttpx: Enable TLS session tickets with session key rotation every 12hrs
2015-01-08 00:01:09 +09:00
Tatsuhiro Tsujikawa
90914b38f1
nghttpx: Do not limit DATA frame length
2015-01-07 01:25:43 +09:00
Tatsuhiro Tsujikawa
8bfd900be5
src, examples: Check return value
2015-01-07 00:26:17 +09:00
Tatsuhiro Tsujikawa
40e8eaf5fd
nghttpx: Fix uninitialized pointer member
2015-01-07 00:25:42 +09:00
Tatsuhiro Tsujikawa
d3a606e9d9
nghttpx: open_file_for_write: Use O_CLOEXEC flag
2015-01-07 00:25:10 +09:00
Tatsuhiro Tsujikawa
2fb3d5fd1f
nghttpx: Remove Http2Upstream::deferred_ for now
2015-01-06 23:32:58 +09:00
Tatsuhiro Tsujikawa
ba795d86f0
nghttpx: Don't cache time for logging
...
Update is done by main event loop which is stopped after graceful
shutdown is commenced, which means time is no longer update. To avoid
this situation, we just avoid caching and get time for each logging.
2015-01-06 23:17:09 +09:00
Tatsuhiro Tsujikawa
e8107b68c8
nghttpx: Avoid std::chrono::high_resolution_clock as wall clock
...
This is because std::chrono::high_resolution_clock may not be wall
clock; it may be alias of std::chrono::stead_clock.
2015-01-06 23:10:11 +09:00
Tatsuhiro Tsujikawa
94e69d5e30
nghttpx: Remove commented lines
2015-01-06 22:55:01 +09:00
Tatsuhiro Tsujikawa
d1391f1db7
nghttpx: Process buffered data first without reading additional data
2015-01-06 22:48:17 +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
a6cf6c00ea
nghttpx: Add SSL_read/write error logging
2015-01-06 22:02:24 +09:00
Tatsuhiro Tsujikawa
f6097ce6d0
nghttp: Fix compile error with openssl >= 1.0.2
2015-01-06 01:40:24 +09:00
Tatsuhiro Tsujikawa
dcdbd5ab20
h2load: Fix wrong kbytes/s value
2015-01-06 01:24:03 +09:00
Tatsuhiro Tsujikawa
cbc02bbc4c
nghttpx: Code cleanup
2015-01-06 00:51:52 +09:00
Tatsuhiro Tsujikawa
b5796c6b96
nghttp: Add missing initialization Request::res_hdidx on res_nva.clear()
2015-01-06 00:51:18 +09:00
Tatsuhiro Tsujikawa
d80952a2bc
nghttpx: Implement stream level timeout using ev_timer
2015-01-06 00:30:57 +09:00
Tatsuhiro Tsujikawa
f26d436ee6
src: http2::lookup_token: Don't need to make char lowcase
2015-01-05 18:17:52 +09:00
Tatsuhiro Tsujikawa
9854e3746f
src: Fix compile error with libstdc++
2015-01-05 16:20:35 +09:00
Tatsuhiro Tsujikawa
7a50299cb0
nghttpx: Handle connect error
2015-01-05 16:14:10 +09:00
Tatsuhiro Tsujikawa
7dba426db4
nghttpx: Use accept if accept4 is not available
2015-01-05 16:04:28 +09:00
Tatsuhiro Tsujikawa
fcf0ceeac6
nghttpd: Make use of accept4
2015-01-05 15:59:51 +09:00
Tatsuhiro Tsujikawa
e253d8f6db
h2load: Retry next address when connection cannot be established
2015-01-05 01:56:02 +09:00
Tatsuhiro Tsujikawa
8fb544523c
nghttpx: Fix HTTP/2 settings timer for HTTP/2 backend
2015-01-05 01:46:41 +09:00
Tatsuhiro Tsujikawa
3ae44ef2f3
nghttpd, nghttpx: Rework incoming header handling
2015-01-05 01:46:41 +09:00
Tatsuhiro Tsujikawa
730d47f7ad
src: Add unittest for http2::index_header
2015-01-03 22:03:00 +09:00
Tatsuhiro Tsujikawa
ea0ab938c4
src: Only index header in lowercase
2015-01-03 21:56:59 +09:00
Tatsuhiro Tsujikawa
8e3406ad20
nghttpd: Use faster request header handling
2015-01-03 00:19:41 +09:00
Tatsuhiro Tsujikawa
db6eec653b
Fix errors reported by scan-build
2015-01-03 00:19:41 +09:00
Tatsuhiro Tsujikawa
c654549d35
nghttpx: Remove commented code
2015-01-03 00:19:41 +09:00
Tatsuhiro Tsujikawa
645897503d
nghttpx: Reset buffer on empty
2015-01-03 00:19:41 +09:00
Tatsuhiro Tsujikawa
fe8f2a4603
nghttpd: Use larger write buffer
2015-01-03 00:19:41 +09:00
Tatsuhiro Tsujikawa
0a4330ee3c
nghttpd: Fix handling pending data and rename rb_ as wb_
2015-01-03 00:19:41 +09:00
Tatsuhiro Tsujikawa
d157744fb2
nghttpx: Fix handling of pending data
2015-01-03 00:19:41 +09:00
Tatsuhiro Tsujikawa
82320d6e55
nghttpd: Reset write buffer on empty
2015-01-03 00:19:41 +09:00
Tatsuhiro Tsujikawa
7db1864766
nghttpx: Add --backend-http1-connections-per-frontend option
2015-01-03 00:19:41 +09:00
Tatsuhiro Tsujikawa
a55a07940c
nghttpx: Show not implemented warning for per wroker rate limit
2015-01-03 00:19:41 +09:00
Tatsuhiro Tsujikawa
37c01a0a4d
nghttpx: Remove unused IOControl::set_lim
2015-01-03 00:19:41 +09:00
Tatsuhiro Tsujikawa
2003be8dc5
src: Fix unit tests failure
2015-01-03 00:19:41 +09:00
Tatsuhiro Tsujikawa
bfac015d61
src: Use libev for rest of the applications
2015-01-03 00:19:41 +09:00
Tatsuhiro Tsujikawa
cd7258a7cd
Use libev for nghttpd
...
Benchmark shows 10% faster with libev compared to libevent. Also
response time in high load condition is much faster.
2015-01-03 00:19:41 +09:00
Tatsuhiro Tsujikawa
ab1dd11705
nghttpd: Fix typo :host, which should be host
2014-12-25 00:49:36 +09:00
Tatsuhiro Tsujikawa
7bf5be9c17
nghttpd: Reserve 10 headers for request headers
2014-12-24 01:05:12 +09:00
Tatsuhiro Tsujikawa
ac11ba32ee
nghttpd: Use stack allocated array for headers in submit_file_response
2014-12-24 00:56:25 +09:00
Tatsuhiro Tsujikawa
a20ad03f7b
nghttpd: Use evbuffer_pullup(input, -1) cause buffer is most likely just one
2014-12-24 00:46:04 +09:00
Tatsuhiro Tsujikawa
292f219900
nghttpd: Avoid sending last 0-sized DATA
2014-12-24 00:31:21 +09:00
Tatsuhiro Tsujikawa
55e550f08f
nghttpd: Remove unused variable
2014-12-24 00:23:01 +09:00
Tatsuhiro Tsujikawa
32943a74b2
nghttpd: Just use socket send buffer and don't count our own buffer size
2014-12-24 00:19:16 +09:00
Tatsuhiro Tsujikawa
89291e4010
nghttpx: Improve priority handling in http2 upstream
2014-12-23 17:45:57 +09:00
Kazuho Oku
45d0d731eb
fill-in `data_stat` after copying the request entity into the temporary file
2014-12-22 07:26:02 +09:00
Kazuho Oku
125f62b71e
unlink the temporary file immediately after calling mkstemp
2014-12-22 07:24:36 +09:00
Kazuho Oku
eb6ba2a703
copy the request entity to temporary file if the source is stdin and if it is not a regular file
2014-12-21 14:06:44 +09:00
Tatsuhiro Tsujikawa
39eb1e4753
nghttp: Adjust priority upon upgrade
2014-12-19 23:33:13 +09:00
Tatsuhiro Tsujikawa
079682f313
deflatehd: Fix crash
2014-12-19 23:23:42 +09:00
Tatsuhiro Tsujikawa
eb8138bfbd
nghttp: Advance next stream ID only when --idle-dep is used
2014-12-17 23:36:29 +09:00
Tatsuhiro Tsujikawa
adc22ec80b
nghttp: Print failed address
2014-12-17 00:26: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
5fa9dd7cd5
nghttpx: Remove unused variable
2014-12-16 01:10:54 +09:00
Tatsuhiro Tsujikawa
b352ae03a9
src: Fix undefined reference error
2014-12-16 01:09:19 +09:00
Tatsuhiro Tsujikawa
c93da867e0
nghttpx: Fix bug SPDY upstream requires content-length if no FIN in SYN_STREAM
2014-12-15 23:42:59 +09:00
Tatsuhiro Tsujikawa
556811ec64
nghttpx: Don't connect backend if connection is not establish up front
2014-12-15 23:34:00 +09:00
Tatsuhiro Tsujikawa
403ece66e3
nghttpd: Fail if listen failed
2014-12-15 23:17:50 +09:00
Tatsuhiro Tsujikawa
9a35dbc4ab
src: Just check emptiness for value since spaces around value are stripped
2014-12-15 23:14:07 +09:00
Tatsuhiro Tsujikawa
6f70a53da6
src: http2::add_header: strip white spaces in value
2014-12-15 23:04:45 +09:00
Tatsuhiro Tsujikawa
93ee9e30d8
nghttp, h2load: Use recommended ciphers and assign sane SSL_CTX options
2014-12-13 01:37:57 +09:00
Tatsuhiro Tsujikawa
a84c319d62
src: Print stream ID in priority field as dep_stream_id
2014-12-13 01:20:58 +09:00
Tatsuhiro Tsujikawa
467b419947
nghttp: Add --dep-idle option to create anchor idle node for dependency
2014-12-13 01:19:27 +09:00
Tatsuhiro Tsujikawa
e4c59dd164
nghttpd: Fix next_session_id_ is not incremented
2014-12-10 01:21:12 +09:00
Tatsuhiro Tsujikawa
dce20c3e6a
nghttpx: Check HTTP/2 downstream connection after certain idle time
...
Previously when requests are issued to HTTP/2 downstream connection,
but it turns out that connection is down, handlers of those requests
are deleted. In some situations, we only know connection is down when
we write something to network, so we'd like to handle this kind of
situation in more robust manner. In this change, certain seconds
passed after last network activity, we first issue PING frame to
downstream connection before issuing new HTTP request. If writing
PING frame is failed, it means connection was lost. In this case,
instead of deleting handler, pending requests are migrated to new
HTTP2/ downstream connection, so that it can continue without
affecting upstream connection.
2014-12-09 21:41:29 +09:00
Tatsuhiro Tsujikawa
c0ffed7788
Support custom memory allocator
...
nghttp2_mem structure is introduced to hold custom memory allocator
functions and user supplied pointer. nghttp2_mem object can be passed
to nghttp2_session_client_new3(), nghttp2_session_server_new3(),
nghttp2_hd_deflate_new2() and nghttp2_hd_inflate_new2() to replace
standard malloc(), free(), calloc() and realloc(). nghttp2_mem
structure has user supplied pointer mem_user_data which can be used as
per session/object memory pool.
2014-12-08 00:55:55 +09:00
Tatsuhiro Tsujikawa
b607a22076
nghttpx: Support multiple HTTP/1 backend address
...
For HTTP/1 backend, -b option can be used several times to specify
multiple backend address. HTTP/2 backend does not support multiple
addresses and only uses first address even if multiple addresses are
specified.
2014-12-06 19:30:27 +09:00
Tatsuhiro Tsujikawa
b8dafbdf5e
nghttpx: Pass NI_NUMERICSERV to getnameinfo to get numeric service name
2014-12-06 01:07:05 +09:00
Tatsuhiro Tsujikawa
3b03ff626a
nghttpx: Don't log access log for blocked streams
2014-12-05 21:29:31 +09:00
Tatsuhiro Tsujikawa
9614611969
nghttpx: Limit # of downstream connections per host when h2 proxy is used
...
This commit limits the number of concurrent HTTP/1 downstream
connections to same host. By defualt, it is limited to 8 connections.
--backend-connections-per-frontend option was replaced with
--backend-http1-connections-per-host, which changes the maximum number
of connections per host. This limitation only kicks in when h2 proxy
is used (-s option).
2014-12-05 01:47:03 +09:00
Tatsuhiro Tsujikawa
f178b78816
nghttpx: Longer read timeouts
2014-12-03 23:45:44 +09:00
Tatsuhiro Tsujikawa
e180d8e594
nghttpx: Longer downstream HTTP/1 idle connection timeout
2014-12-03 23:00:53 +09:00
Tatsuhiro Tsujikawa
cbb5da5285
nghttpx: Fix --backend-http-proxy-uri does not work
2014-12-02 03:03:14 +09:00
Tatsuhiro Tsujikawa
03877c3752
asio-lib: Put ${AM_CPPFLAGS} before ${BOOST_CPPFLAGS}
2014-12-01 23:20:53 +09:00
Tatsuhiro Tsujikawa
54a3209cf5
configure.ac: Rename some variables so that they follow automake convention
2014-12-01 23:14:28 +09:00
Tatsuhiro Tsujikawa
7036859823
Do not change user variable CFLAGS in configure.ac
2014-12-01 23:06:11 +09:00
Tatsuhiro Tsujikawa
dcc7b23980
nghttpx: Remove cipher suite requirement
...
This makes the library h2-16 compatible now.
2014-11-30 22:52:34 +09:00
Tatsuhiro Tsujikawa
b9667fd209
asio: Listen to all resolved addresses
2014-11-30 22:39:16 +09:00
Tatsuhiro Tsujikawa
204ff787fa
nghttpx: Submit RST_STREAM if HEADERS appears in the middle of a stream
2014-11-28 00:23:46 +09:00
Tatsuhiro Tsujikawa
b1f807abd1
Reformat lines with clang-format-3.5
2014-11-27 23:56:30 +09:00
Tatsuhiro Tsujikawa
c67ccad74d
nghttpx: Use cached get_config()->pid in save_pid()
2014-11-27 22:41:14 +09:00
Tatsuhiro Tsujikawa
04dae32509
nghttpx: Store PID to Config again after daemon()
2014-11-27 21:32:34 +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
9bba616426
nghttpx: Add $alpn variable to accesslog formatting
...
$alpn is a variable which represents ALPN identifier of the protocol
which generates the response.
2014-11-24 15:24:09 +09:00
Tatsuhiro Tsujikawa
1fe50f272b
nghttpx: Add $pid to --accesslog-format variable
...
$pid refers to the PID of the running process.
2014-11-24 14:34:43 +09:00
Tatsuhiro Tsujikawa
93023acc6c
nghttpx: Make --accesslog-format usage doc help2man friendly
...
This is unfortunate but help2man behaves badly when there is indented
lines in help messages in commnad-line args. We removed indentations
to make help2man happy.
2014-11-24 14:16:48 +09:00
Tatsuhiro Tsujikawa
daf659c64e
nghttpx: Note the conversion made in <VAR>
2014-11-24 14:04:37 +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
6e178653a5
fixed conflict
2014-11-23 21:10:51 +00: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
74ec1d3377
nghttpx: Write accesslog when upstream connection is lost for HTTP/2 and SPDY
2014-11-23 17:24:23 +09:00
Tatsuhiro Tsujikawa
1e4f288a7c
nghttpx: Remove misleading logging
2014-11-23 16:45:36 +09:00
Tatsuhiro Tsujikawa
ecd143fcc2
nghttpx: Send RST_STREAM with NO_ERROR when closing upgraded connection
2014-11-22 23:13:29 +09:00
Tatsuhiro Tsujikawa
bd9389b956
nghttpx: Refactor http2_data_read_callback
2014-11-22 21:12:28 +09:00
Tatsuhiro Tsujikawa
1a09cef0ef
nghttpx: Avoid 0-length DATA in HTTP/2 upstream
2014-11-22 21:12:28 +09:00
Tatsuhiro Tsujikawa
bded1d1115
h2load: Support ALPN
2014-11-22 01:13:18 +09:00
Tatsuhiro Tsujikawa
fa4f03525e
nghttp: Fix compile error and warning with libc++
2014-11-22 00:37:37 +09:00
Tatsuhiro Tsujikawa
ee65dea8af
nghttp: Fix compile error without libjansson
2014-11-19 21:18:31 +09:00
Tatsuhiro Tsujikawa
27609327ee
nghttpx: Fix heap-after-free crash in https upstream
...
Add Upstream::on_handler_delete() hook to safely write log for
HttpsUpstream.
2014-11-19 01:59:09 +09: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
1d7601edfb
nghttpx: Better handling EOF from downstream connection to tunnel stream
2014-11-18 00:03:52 +09:00
Tatsuhiro Tsujikawa
8a0fdcfea9
nghttpd: Fix crash
2014-11-17 19:01:06 +09:00
Tatsuhiro Tsujikawa
75a1ad8bdb
src: format_iso8601: Fix invalid millisecond formatting
2014-11-16 17:32:35 +09:00
Tatsuhiro Tsujikawa
54232c6542
nghttp: Add --no-dep option to disable sending priority hints to server
2014-11-15 23:42:26 +09:00
Tatsuhiro Tsujikawa
ee2856f9bc
nghttp: Update doc
2014-11-15 23:34:37 +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
a2bc88f6db
nghttpx: Check max length of ALPN field
2014-11-14 23:19:16 +09:00
Tatsuhiro Tsujikawa
5ce8ae79f0
nghttpx: Disable spdy/3 and spdy/2 by default
2014-11-14 23:16:06 +09:00
Tatsuhiro Tsujikawa
d98e9a63d0
src: Refactor code around ALPN setup
2014-11-14 23:14:39 +09:00
Tatsuhiro Tsujikawa
8e30adbca0
asio: Add http2::backlog API function
2014-11-10 23:26:01 +09:00
Tatsuhiro Tsujikawa
9adfd08848
asio_http2_handler: Use util::utos instead of std::to_string
2014-11-10 22:39:20 +09:00
Tatsuhiro Tsujikawa
2e3419ccbb
nghttpd: Cache formatted date string
2014-11-10 22:35:08 +09:00
Tatsuhiro Tsujikawa
5b6b6dc1b7
src: Rewrite http_date
2014-11-10 21:53:19 +09:00
Tatsuhiro Tsujikawa
d0271a90b5
nghttpd: Use util::utos instead of slow util::to_str
2014-11-10 21:23:26 +09:00
Tatsuhiro Tsujikawa
2ba9a009fe
nghttpd: Fix resource leak
2014-11-08 23:07:40 +09:00
Tatsuhiro Tsujikawa
80b361dbb0
nghttpx: Use exit instead of abort for DIE macro
2014-11-08 21:38:57 +09:00
Tatsuhiro Tsujikawa
58254adb11
h2load: Print used SSL/TLS cipher name and parameters
2014-11-08 21:24:24 +09:00
Tatsuhiro Tsujikawa
ce71e65aee
nghttpx: Replace WARNING with WARN for consistency
2014-11-08 10:51:56 +09:00
Tatsuhiro Tsujikawa
1119701071
nghttpx: Fix -L option help message
...
WARNING should be WARN.
2014-11-08 10:45:58 +09:00
Tatsuhiro Tsujikawa
c410f4055f
Merge branch 'log_notice' of https://github.com/LPardue/nghttp2 into LPardue-log_notice
2014-11-07 21:15:02 +09:00
Tatsuhiro Tsujikawa
1e86635572
h2load: Make shutdown sequence simpler
2014-11-07 00:28:10 +09:00
Lucas Pardue
a067eb02a5
Add LOG_NOTICE level logging for application lifecycle events
2014-11-06 14:32:56 +00:00
Tatsuhiro Tsujikawa
154876a17b
nghttpx: Apply TLS record length limit to DATA frame payload
...
This is not obvious but it makes intermediaries flush and forward DATA
frame boundary without excessive buffering. Since we have different
TCP connections frontend and backend, this may not work. This is
still experimental.
2014-11-06 21:14:14 +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
03a2828fcf
src: Disable SSL_MODE_ENABLE_PARTIAL_WRITE for apps which use libevent
2014-11-05 01:15:38 +09:00
Tatsuhiro Tsujikawa
2fc0056ada
nghttp: Allow multiple -v option to increase verbosity
...
Now the number of -v option specifies verbosity level. Current all
verbose output are turned on for at lest one -v option, except for the
debug output for each data chunk which is only turned on more than one
-v options.
2014-11-05 00:42:12 +09:00
Tatsuhiro Tsujikawa
29fcd7c946
nghttpd: Use http2::Headers
2014-11-02 23:33:04 +09:00
Tatsuhiro Tsujikawa
189f122dd7
nghttpd: Perform redirect if directory is requested
2014-11-02 23:27:38 +09:00
Tatsuhiro Tsujikawa
7d282cd0bd
Code cleanup
2014-10-30 23:31:28 +09:00
Tatsuhiro Tsujikawa
4d93dd9d91
Upate to draft-15
...
* Add NGHTTP2_HTTP_1_1_REQUIRED error code
* Allow transmission of WINDOW_UPDATE on reserved (remote)
* Allow reception of WINDOW_UPDATE on reserved (local)
* Treat frame larger than MAX_FRAME_SIZE as FRAME_SIZE_ERROR
ALPN identifier is still h2-14 to continue interop, since draft-14 and
-15 are binary compatible. The new error code was added in draft-15,
but HTTP/2 allows extensions can freely add new error code, so it is
not a problem.
2014-10-30 22:40:02 +09:00
Tatsuhiro Tsujikawa
be1a513c59
nghttpx: Shut up scan-build
2014-10-30 22:36:22 +09:00
Tatsuhiro Tsujikawa
20900b133e
nghttpx: Fix heap-use-after-free in ClientHandler object
...
This bug was found by scan-build
2014-10-30 21:47:38 +09:00
Tatsuhiro Tsujikawa
0ef99b90d9
asio-lib: Make request_cb take const ref and use int64_t as http_date arg
2014-10-28 01:01:48 +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
6933e0ef54
h2load: Use Headers instead of std::vector<std::pair<>> to store custom headers
2014-10-27 21:23:36 +09:00
Tatsuhiro Tsujikawa
a9ecdca08a
h2load: Read URIs from stdin if -i- is used
2014-10-27 21:23:36 +09:00
Tatsuhiro Tsujikawa
af5bedd45f
h2load: Move code pasing URIs to separate function
2014-10-27 21:23:36 +09:00
Tatsuhiro Tsujikawa
7097a31968
h2load: Uniform handling of URIs from command-line and file
2014-10-27 21:23:36 +09:00
Tatsuhiro Tsujikawa
4122920dc6
h2load: Fix doc and remove trailing spaces
2014-10-27 21:23:36 +09:00
Lucas Pardue
9ea4905f68
Added X-Forwarded-For header stripping option to nghttpx
2014-10-27 10:23:20 +00:00
Tatsuhiro Tsujikawa
c6cfcc3c30
src: Disable insecure SSLv3
2014-10-22 23:14:07 +09:00
Tatsuhiro Tsujikawa
566a252577
Merge branch 'header_add_override' of https://github.com/kennypeng/nghttp2 into kennypeng-header_add_override
2014-10-22 21:25:53 +09:00
Kenny (kang-yen) Peng
27c766cb04
fix some comments and descriptions
2014-10-21 22:38:45 +00:00
Kenny (kang-yen) Peng
41dd6d0205
use option i to accept input URI list file
2014-10-21 22:29:36 +00:00
Kenny (kang-yen) Peng
db071ca35c
fix comments of header add/override
2014-10-21 21:25:38 +00:00
Tatsuhiro Tsujikawa
e3af9d8bd3
nghttp: Use Headers to store custom headers
2014-10-21 23:24:50 +09:00
Tatsuhiro Tsujikawa
73955f0519
nghttp: Take advantage the fact that custom headers are already lower cased
2014-10-21 23:17:53 +09:00
Tatsuhiro Tsujikawa
5df21e3683
nghttp: Add missing metavar to -H and add example
2014-10-21 22:47:24 +09:00
Kenny (kang-yen) Peng
a6e1a40c05
support uri list file input
2014-10-20 20:59:55 +00:00
Kenny Peng
dd02c4cd9b
support header add/override
2014-10-17 15:25:59 -07:00
Tatsuhiro Tsujikawa
f2aa6f4e2b
nghttp: Document prioritization with -a option
2014-10-16 23:17:19 +09:00
Tatsuhiro Tsujikawa
8fffa05513
src: Fix possible heap-use-after free for OpenSSL global locking
...
This is simply programming error, but it is interesting that using
libstdc++ does not reveal this error. With clang++-libc++, we got
std::system_error: mutex lock faild: Invalid argument. This is
because we did not give a name to lock object, so it is immediately
destructed. I think this will fix the reported crash on Mac OSX.
2014-10-14 21:47:07 +09:00
Tatsuhiro Tsujikawa
0d4120ce2c
nghttpx: Apply same fix from a225bb2
to spdy upstream
2014-10-13 21:13:45 +09:00
Tatsuhiro Tsujikawa
20de432725
nghttpx: Pool http downstream connection per thread
2014-10-13 21:09:00 +09:00
Tatsuhiro Tsujikawa
225b90eefd
Use switch-case instead of if
2014-10-10 22:52:47 +09:00
Tatsuhiro Tsujikawa
3931a0b04d
Fix bugs found by coverity scan
2014-10-10 22:50:35 +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
a225bb29df
nghttpx: Fix request is sent to backend prematurely with http2 upstream
2014-10-07 00:31:35 +09:00
Tatsuhiro Tsujikawa
7a09feebc3
h2load: Don't use std::future with --disable-threads
...
Now we don't use std::future with --disable-threads, checking
std::future in configure.ac was removed and building h2load is always
enabled.
2014-10-05 14:25:15 +09:00
Svante Signell
df875db989
Avoid PATH_MAX by using getcwd(nullptr, 0) as supported by modern glibc-based OSes.
2014-10-03 21:58:15 +09:00
Tatsuhiro Tsujikawa
4f0d03b4b9
libnghttp2_asio: Move common types and functions to nghttp2::asio_http2 ns
2014-09-28 16:54:00 +09:00
Tatsuhiro Tsujikawa
88d7abcc23
libnghttp2_asio: Add request::run_task to execute task in separate thread
2014-09-28 16:25:45 +09:00
Tatsuhiro Tsujikawa
e20d2ba9c1
nghttpx: Don't send x-forwarded-proto if -s or -p is used
2014-09-25 00:41:38 +09:00
Tatsuhiro Tsujikawa
c1be28684a
libnghttp2_asio: Add request::closed() to indicate that stream has been closed
2014-09-25 00:15:52 +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
3651467c71
src: Silence compiler warning
2014-09-24 00:57:43 +09:00
Tatsuhiro Tsujikawa
5d0bf4cc84
Add C++ library libnghttp2_asio on top of libnghttp2
...
The libnghttp2_asio library is C++ library built on top of libnghttp2.
Currently, it has server API and easily create HTTP/2 server using
node.js like API calls. See the example server source code in
examples/asio-sv.cc. The library depends on Boost::ASIO library.
2014-09-24 00:45:40 +09:00
Tatsuhiro Tsujikawa
446f8f13aa
src: Move libevent related helper functions to libevent_util
2014-09-24 00:45:40 +09:00
Tatsuhiro Tsujikawa
a9b74261b6
nghttpd: Rewrite using bufferevent (again) for simplicity
2014-09-19 00:58:32 +09:00
Tatsuhiro Tsujikawa
83309b6391
nghttpx: Reduce epoll_ctl call
2014-09-18 23:56:01 +09:00
Tatsuhiro Tsujikawa
23dd428d65
nghttpx: Reset timeouts when either read or write succeeds
...
See previous commit message why we need this.
2014-09-18 23:19:28 +09:00
Tatsuhiro Tsujikawa
b305495a75
nghttpx: Reset both timeouts when either read or write succeeds
...
Previously read and write timeouts work independently. When we are
writing response to the client, read timeout still ticks (e.g., HTTP/2
or tunneled HTTPS connection). So read timeout may occur during long
download. This commit fixes this issue. This commit only fixes the
upstream part. We need similar fix for the downstream.
2014-09-18 23:03:36 +09:00
Tatsuhiro Tsujikawa
44ac571037
nghttpx: Add more handling situation where response ends before request
2014-09-17 22:53:29 +09:00
Tatsuhiro Tsujikawa
5bff48a15a
nghttpx: Call upstream resume_read after sending pending request to backend
...
With the combination of HTTP/1 upstream and HTTP/2 downstream,
downstream tells SHRPX_NO_BUFFER while connecting to the backend
server. Previously, we did not call upstream resume_read and upload
was blocked. This commit now calls upstream resume_read to unblock.
This commit also remove pending output buffer size of Http2Session
when calculating downstream connection's buffer is full. This is
desirable since we only operate resume_read by stream basis.
2014-09-17 22:36:42 +09:00
Tatsuhiro Tsujikawa
e4751a798a
Replace auto_delete* with defer
2014-09-16 23:39:38 +09:00
Tatsuhiro Tsujikawa
d00d4d647d
Compile with android NDK r10b 32bit target
...
Android does not have _Exit. We detect this and use _exit instead.
clang-3.4 has an issue around undefined reference to
__atomic_fetch_add_4, so we stick to gcc-4.8 for now.
2014-09-14 21:32:53 +09:00
Tatsuhiro Tsujikawa
901de5fbce
Add nghttp2_option_set_recv_client_preface()
...
By default, nghttp2 library only handles HTTP/2 frames and does not
recognize first 24 bytes of client connection preface. This design
choice is done due to the fact that server may want to detect the
application protocol based on first few bytes on clear text
communication. But for simple servers which only speak HTTP/2, it is
easier for developers if nghttp2 library takes care of client
connection preface.
If this option is used with nonzero val, nghttp2 library checks first
24 bytes client connection preface. If it is not a valid one,
nghttp2_session_recv() and nghttp2_session_mem_recv() will return
error NGHTTP2_ERR_BAD_PREFACE, which is fatal error.
2014-09-13 19:50:44 +09:00
Tatsuhiro Tsujikawa
85f605f20d
src: Check availability of ENONET
2014-09-02 01:00:27 +09:00
Tatsuhiro Tsujikawa
d8c0d87c90
src: Add missing SETTINGS ID to debug output
...
SETTINGS_MAX_FRAME_SIZE and SETTINGS_MAX_HEADER_LIST_SIZE are 2
missing SETTINGS IDs and now they are shown correctly.
2014-08-29 00:14:10 +09:00
Tatsuhiro Tsujikawa
8890e593e6
src: Add util::array_size
2014-08-28 00:45:12 +09:00
Tatsuhiro Tsujikawa
f8471a5f45
nghttpx: Move --backend-http-proxy-uri to Connections section
2014-08-27 23:37:54 +09:00