Compare commits

...

1314 Commits

Author SHA1 Message Date
Tatsuhiro Tsujikawa
d13a575837 Update manual pages 2024-05-19 12:16:46 +09:00
Tatsuhiro Tsujikawa
001833c5a4 Bump package version 2024-05-19 12:14:09 +09:00
Tatsuhiro Tsujikawa
38fb5c2b3f nghttpx: Fix batch UDP QUIC packet dropped on GRO read 2024-05-19 11:37:27 +09:00
Tatsuhiro Tsujikawa
3e767d3003 Update manual pages 2024-05-13 17:31:43 +09:00
Tatsuhiro Tsujikawa
f4fc77028d Bump package and library versions 2024-05-13 17:28:12 +09:00
Tatsuhiro Tsujikawa
8573f53b18 Update AUTHORS 2024-05-13 17:26:20 +09:00
Tatsuhiro Tsujikawa
a1034c7866 Merge pull request #2190 from nghttp2/distcheck
Add dedicated distcheck buildtool parameter
2024-05-12 17:31:46 +09:00
Tatsuhiro Tsujikawa
f1deade196 Add dedicated distcheck buildtool parameter
Add dedicated distcheck buildtool parameter and run integration tests
in autotool builds.
2024-05-12 17:11:15 +09:00
Tatsuhiro Tsujikawa
0ecc418f37 Merge pull request #2189 from nghttp2/add-macos-14
Add macos 14
2024-05-12 16:24:17 +09:00
Tatsuhiro Tsujikawa
d105d660ca Always use quictls to avoid system installed openssl 2024-05-12 16:05:37 +09:00
Tatsuhiro Tsujikawa
517ffb3917 ci: Add macos-14 2024-05-12 16:05:37 +09:00
Tatsuhiro Tsujikawa
76cd830b8a Merge pull request #2188 from nghttp2/typed-nghttp2-min-max
Introduce typed nghttp2_min and nghttp2_max
2024-05-12 10:24:19 +09:00
Tatsuhiro Tsujikawa
3f9a980ecb Introduce typed nghttp2_min and nghttp2_max 2024-05-12 09:48:11 +09:00
Tatsuhiro Tsujikawa
c411e30075 Merge pull request #2187 from nghttp2/bump-llhttp
Bump llhttp to v9.2.1
2024-05-11 17:07:54 +09:00
Tatsuhiro Tsujikawa
b691353b0c Bump llhttp to v9.2.1 2024-05-11 16:46:01 +09:00
Tatsuhiro Tsujikawa
d68048165b Merge pull request #2186 from nghttp2/bump-ngtcp2
Bump ngtcp2
2024-05-09 19:36:19 +09:00
Tatsuhiro Tsujikawa
f0d827f242 SSL_get_server_tmp_key is noop in boringssl
SSL_get_server_tmp_key is noop in boringssl.  It has been deprecated
in aws-lc.
2024-05-09 19:00:53 +09:00
Tatsuhiro Tsujikawa
960c8b3a3a Bump ngtcp2 and its dependencies 2024-05-09 18:35:54 +09:00
Tatsuhiro Tsujikawa
ee96f61293 Merge pull request #2184 from nghttp2/dependabot/go_modules/github.com/quic-go/quic-go-0.43.1
build(deps): bump github.com/quic-go/quic-go from 0.43.0 to 0.43.1
2024-05-08 18:29:57 +09:00
Tatsuhiro Tsujikawa
db71b2a64c Merge pull request #2185 from alyssais/nghttp2_ssize
nghttpd: Use nghttp2_ssize
2024-05-07 21:36:33 +09:00
Alyssa Ross
70ce073eff nghttpd: Use nghttp2_ssize
Otherwise, produces compiler errors on platforms where ssize_t is not
the same type as nghttp2_ssize i.e. ptrdiff_t, e.g. s390-linux.

	HttpServer.cc:1085:15: error: ambiguating new declaration of 'nghttp2_ssize nghttp2::file_read_callback(nghttp2_session*, int32_t, uint8_t*, size_t, uint32_t*, nghttp2_data_source*, void*)'
	 1085 | nghttp2_ssize file_read_callback(nghttp2_session *session, intnghttp2> In file included from HttpServer.cc:25:
	HttpServer.h:248:9: note: old declaration 'ssize_t nghttp2::file_read_callback(nghttp2_session*, int32_t, uint8_t*, size_t, uint32_t*, nghttp2_data_source*, void*)'
	  248 | ssize_t file_read_callback(nghttp2_session *session, int32_t stream_id,
	      |         ^~~~~~~~~~~~~~~~~~
	HttpServer.cc: In function 'void nghttp2::{anonymous}::prepare_status_response(nghttp2::Stream*, nghttp2::Http2Handler*, int)':
	HttpServer.cc:1139:28: error: invalid conversion from 'ssize_t (*)(nghttp2_session*, int32_t, uint8_t*, size_t, uint32_t*, nghttp2_data_source*, void*)' {aka 'long int (*)(nghttp2_session*, int, unsigned char*, long unsigned int, unsigned int*, nghttp2_data_source*, void*)'} to 'nghttp2_data_source_read_callback2' {aka 'int (*)(nghttp2_session*, int, unsigned char*, long unsigned intnghttp2>       |                            ^~~~~~~~~~~~~~~~~~
	      |                            |
	      |                            ssize_t (*)(nghttp2_session*, int32_t, uint8_t*, size_t, uint32_t*, nghttp2_data_source*, void*) {aka long int (*)(nghttp2_session*, int, unsigned char*, long unsigned int, unsigned int*, nghttp2_data_source*, void*)}
2024-05-07 13:53:49 +02:00
dependabot[bot]
6d429874b0 build(deps): bump github.com/quic-go/quic-go from 0.43.0 to 0.43.1
Bumps [github.com/quic-go/quic-go](https://github.com/quic-go/quic-go) from 0.43.0 to 0.43.1.
- [Release notes](https://github.com/quic-go/quic-go/releases)
- [Changelog](https://github.com/quic-go/quic-go/blob/master/Changelog.md)
- [Commits](https://github.com/quic-go/quic-go/compare/v0.43.0...v0.43.1)

---
updated-dependencies:
- dependency-name: github.com/quic-go/quic-go
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-06 14:17:54 +00:00
Tatsuhiro Tsujikawa
422167b88b Merge pull request #2181 from nghttp2/dependabot/go_modules/github.com/quic-go/quic-go-0.43.0
build(deps): bump github.com/quic-go/quic-go from 0.42.0 to 0.43.0
2024-04-30 00:27:53 +09:00
dependabot[bot]
f65cfa8da2 build(deps): bump github.com/quic-go/quic-go from 0.42.0 to 0.43.0
Bumps [github.com/quic-go/quic-go](https://github.com/quic-go/quic-go) from 0.42.0 to 0.43.0.
- [Release notes](https://github.com/quic-go/quic-go/releases)
- [Changelog](https://github.com/quic-go/quic-go/blob/master/Changelog.md)
- [Commits](https://github.com/quic-go/quic-go/compare/v0.42.0...v0.43.0)

---
updated-dependencies:
- dependency-name: github.com/quic-go/quic-go
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-29 15:00:01 +00:00
Tatsuhiro Tsujikawa
e3e33a5867 Merge pull request #2180 from nghttp2/rewrite-shuffle
Rewrite util:shuffle
2024-04-28 17:42:23 +09:00
Tatsuhiro Tsujikawa
f3cdd7a348 Merge pull request #2179 from DD-L/patch-1
Update the link for the Prefix.pdf document. fix #2178
2024-04-28 17:31:30 +09:00
Tatsuhiro Tsujikawa
ad79597416 Rewrite util:shuffle 2024-04-28 17:13:56 +09:00
Tatsuhiro Tsujikawa
fc1b4a510d Merge pull request #2177 from nghttp2/remove-streq
Remove util::streq and let StringRef operator== deal with it
2024-04-28 17:13:20 +09:00
Deel
49ee93f7a4 Update the link for the Prefix.pdf document. fix #2178 2024-04-28 16:08:14 +08:00
Tatsuhiro Tsujikawa
49b7dbde8a Remove util::streq and let StringRef operator== deal with it 2024-04-28 16:45:16 +09:00
Tatsuhiro Tsujikawa
6619a6f945 Merge pull request #2176 from nghttp2/refactor-streq
Refactor streq
2024-04-27 20:07:48 +09:00
Tatsuhiro Tsujikawa
0d21d59a38 Remove util::streq_l and add streq with length of b to compare 2024-04-27 19:46:04 +09:00
Tatsuhiro Tsujikawa
1d765368f0 Remove unused util::strifind 2024-04-27 19:46:04 +09:00
Tatsuhiro Tsujikawa
f3f10ca1f5 Refactor util::streq and remove streq_l 2024-04-27 19:46:04 +09:00
Tatsuhiro Tsujikawa
34433fdcb3 Refactor util::ends_with and remove iends_with_l 2024-04-27 19:46:04 +09:00
Tatsuhiro Tsujikawa
ae678f4f30 Refactor util::starts_with and remove istarts_with_l 2024-04-27 19:46:04 +09:00
Tatsuhiro Tsujikawa
0caf2a8444 Merge pull request #2175 from nghttp2/refactor-http-utils
Refactor http utils
2024-04-27 18:27:59 +09:00
Tatsuhiro Tsujikawa
f564c30096 log_var_lookup_token now takes StringRef 2024-04-27 17:58:07 +09:00
Tatsuhiro Tsujikawa
17a211f45a option_lookup_token now takes StringRef 2024-04-27 17:58:07 +09:00
Tatsuhiro Tsujikawa
26708239aa lookup_method_token now only takes StringRef 2024-04-27 17:58:07 +09:00
Tatsuhiro Tsujikawa
3d13ef9f06 lookup_header only takes StringRef
Now lookup_header takes StringRef.  Generator is also fixed.  The
other generated functions are fixed in the later commits.
http2::add_header no longer trims white space from value because those
values are prohibited by HTTP/2.
2024-04-27 17:58:07 +09:00
Tatsuhiro Tsujikawa
77ac52137f Remove unused http3::copy_headers_to_nva 2024-04-27 17:58:07 +09:00
Tatsuhiro Tsujikawa
82276389fc Remove unused http3::check_nv 2024-04-27 17:58:07 +09:00
Tatsuhiro Tsujikawa
69e2d4d78f Merge pull request #2174 from nghttp2/http2-remove-unnecessary-namespace-qualifications
Remove unnecessary namespace qualifications
2024-04-27 17:02:06 +09:00
Tatsuhiro Tsujikawa
d51fc54f16 Merge pull request #2173 from nghttp2/http3-make-field
Add http3::make_field family functions
2024-04-27 17:01:39 +09:00
Tatsuhiro Tsujikawa
481f876653 Remove unnecessary namespace qualifications 2024-04-27 16:29:29 +09:00
Tatsuhiro Tsujikawa
a748575149 Add http3::make_field family functions
http3::make_nv family functions are removed in favor of the new
function.
2024-04-27 16:27:07 +09:00
Tatsuhiro Tsujikawa
3b63158b7b Merge pull request #2172 from nghttp2/less-conversion
make_websocket_accept_token: Lesser conversions
2024-04-27 16:23:52 +09:00
Tatsuhiro Tsujikawa
e7909d76b8 Merge pull request #2171 from nghttp2/nghttpx-fix-inherited-tcp-ports
nghttpx: Fix inherited TCP port comparison
2024-04-27 16:21:46 +09:00
Tatsuhiro Tsujikawa
9bcc5c25b3 make_websocket_accept_token: Lesser conversions 2024-04-27 16:05:30 +09:00
Tatsuhiro Tsujikawa
2585cc353f nghttpx: Fix inherited TCP port comparison 2024-04-27 12:08:58 +09:00
Tatsuhiro Tsujikawa
6d4b2c7dbf Merge pull request #2170 from nghttp2/nghttpx-refactor-quic-data-path
nghttpx: Refactor QUIC data path
2024-04-27 11:41:48 +09:00
Tatsuhiro Tsujikawa
e6f3901b51 nghttpx: Refactor QUIC data path 2024-04-27 11:27:21 +09:00
Tatsuhiro Tsujikawa
b4313ea7a0 Merge pull request #2169 from nghttp2/refactor-immutablestring
Refactor ImmutableString
2024-04-26 18:50:30 +09:00
Tatsuhiro Tsujikawa
58c1b7c37a Refactor ImmutableString 2024-04-26 18:28:12 +09:00
Tatsuhiro Tsujikawa
c013b36695 Merge pull request #2168 from nghttp2/nghttpx-gso-failover
nghttpx: Dynamic GSO failover
2024-04-26 18:11:22 +09:00
Tatsuhiro Tsujikawa
943fba4590 nghttpx: Dynamic GSO failover 2024-04-26 17:47:05 +09:00
Tatsuhiro Tsujikawa
062bc696bc Merge pull request #2167 from nghttp2/pack-more-quic-pkt
Pack more quic pkt
2024-04-26 16:12:42 +09:00
Tatsuhiro Tsujikawa
b49ce3dfda h2load: Pack more QUIC packets 2024-04-26 15:53:30 +09:00
Tatsuhiro Tsujikawa
b9890d6797 nghttpx: Pack more QUIC packets 2024-04-26 15:47:28 +09:00
Tatsuhiro Tsujikawa
8c6cc0f3b3 Merge pull request #2164 from nghttp2/optimize-stringref-comparison
Optimize StringRef comparisons against c-string
2024-04-22 22:40:31 +09:00
Tatsuhiro Tsujikawa
ee0f4fbce0 Optimize StringRef comparisons against c-string 2024-04-22 21:57:14 +09:00
Tatsuhiro Tsujikawa
44724b0750 Merge pull request #2163 from nghttp2/stringref-remove-stdstring-conversion
Remove std::string conversion operator from StringRef
2024-04-22 21:56:49 +09:00
Tatsuhiro Tsujikawa
122ae428ad Remove std::string conversion operator from StringRef 2024-04-22 21:35:37 +09:00
Tatsuhiro Tsujikawa
375753fdd1 Merge pull request #2162 from nghttp2/bump-munit
Bump munit
2024-04-22 21:27:31 +09:00
Tatsuhiro Tsujikawa
4bd5bebc46 Bump munit 2024-04-22 21:03:37 +09:00
Tatsuhiro Tsujikawa
cab280a576 Merge pull request #2161 from nghttp2/http2-make_field
Add http2::make_field family functions
2024-04-22 21:00:44 +09:00
Tatsuhiro Tsujikawa
a7f588189f Add http2::make_field family functions
http2::make_nv family functions are removed in favor of the new
function.
2024-04-22 19:47:34 +09:00
Tatsuhiro Tsujikawa
dc969cc7f9 Merge pull request #2160 from nghttp2/stringref-stdstring-implicit
Make StringRef(const std::string&) implicit
2024-04-22 19:46:17 +09:00
Tatsuhiro Tsujikawa
7d2f75abcf Make StringRef(const std::string&) implicit 2024-04-22 19:25:45 +09:00
Tatsuhiro Tsujikawa
18fafddb06 Merge pull request #2159 from nghttp2/stringref-literal
Add StringRef literal operator and remove StringRef::from_lit
2024-04-21 23:35:52 +09:00
Tatsuhiro Tsujikawa
6d281826b3 Add StringRef literal operator and remove StringRef::from_lit 2024-04-21 23:10:00 +09:00
Tatsuhiro Tsujikawa
dbff91a4f7 Merge pull request #2158 from nghttp2/stringref-refactor-c_str-and-str
Stringref refactor c str and str
2024-04-21 23:09:25 +09:00
Tatsuhiro Tsujikawa
1fbd73c51a Add StringRef to std::string conversion operator and remove str() 2024-04-21 22:54:50 +09:00
Tatsuhiro Tsujikawa
db75062d2c Rename StringRef::c_str to data because it might not be NULL-terminated 2024-04-21 22:54:50 +09:00
Tatsuhiro Tsujikawa
37f1f978f7 Merge pull request #2157 from nghttp2/refactor-stringref
Refactor StringRef
2024-04-21 20:00:07 +09:00
Tatsuhiro Tsujikawa
08cd3bf619 Refactor StringRef 2024-04-21 19:43:34 +09:00
Tatsuhiro Tsujikawa
c1c0fa6a3f Merge pull request #2156 from nghttp2/base64-decode-span
Let base64::decode return std::span
2024-04-21 18:51:21 +09:00
Tatsuhiro Tsujikawa
83cca7bc14 Let base64::decode return std::span 2024-04-21 18:30:14 +09:00
Tatsuhiro Tsujikawa
94d7782d32 Merge pull request #2155 from nghttp2/rewrite-parse_uint
Rewrite util::parse_uint
2024-04-21 18:29:44 +09:00
Tatsuhiro Tsujikawa
137d28ac13 Rewrite util::parse_uint 2024-04-21 18:09:48 +09:00
Tatsuhiro Tsujikawa
446cf420e7 Merge pull request #2154 from nghttp2/decode_hex-span
Make util::decode_hex return std::span
2024-04-21 15:58:24 +09:00
Tatsuhiro Tsujikawa
54b5029886 Make util::decode_hex return std::span 2024-04-21 15:43:21 +09:00
Tatsuhiro Tsujikawa
8ce9fbe425 Merge pull request #2153 from nghttp2/make_byte_ref-span
Make make_byte_ref return std::span
2024-04-15 19:31:21 +09:00
Tatsuhiro Tsujikawa
bdb812af16 Make make_byte_ref return std::span 2024-04-15 19:01:43 +09:00
Tatsuhiro Tsujikawa
41de3e6e65 Merge pull request #2152 from nghttp2/nghttpx-format_hex-span
src: Add util::format_hex overload functions taking std::span
2024-04-14 19:18:55 +09:00
Tatsuhiro Tsujikawa
3972c62250 src: Add util::format_hex overload functions taking std::span 2024-04-14 19:05:25 +09:00
Tatsuhiro Tsujikawa
ac53ec86aa Merge pull request #2151 from nghttp2/nghttpx-ipc_fd-span-extent
nghttpx: Add extent to ipc_fd explicitly
2024-04-14 17:54:18 +09:00
Tatsuhiro Tsujikawa
38327104b2 nghttpx: Add extent to ipc_fd explicitly 2024-04-14 16:06:27 +09:00
Tatsuhiro Tsujikawa
4ec8adda6f Merge pull request #2150 from alagoutte/cmakelist-add-build-testing
CMakListsts: Add Build Test info on summary
2024-04-14 16:03:53 +09:00
Alexis La Goutte
99de5c18a3 CMakListsts: Add Build Test info on summary 2024-04-13 12:19:47 +00:00
Tatsuhiro Tsujikawa
d43987add7 Merge pull request #2149 from nghttp2/ipc_fd-span
nghttpx: Simplify parameter declaration for ipc_fd functions
2024-04-13 20:45:55 +09:00
Tatsuhiro Tsujikawa
9c61b97a4e nghttpx: Simplify parameter declaration for ipc_fd functions 2024-04-13 17:31:25 +09:00
Tatsuhiro Tsujikawa
eb865a6b26 Merge pull request #2146 from nghttp2/nghttpx-fix-allocator
nghttpx: Fix alignment issues in BlockAllocator
2024-04-10 22:25:56 +09:00
Tatsuhiro Tsujikawa
9260e53410 nghttpx: Fix alignment issues in BlockAllocator 2024-04-10 21:35:24 +09:00
Tatsuhiro Tsujikawa
3b91cd95ea Merge pull request #2144 from nghttp2/nghttpx-response-method-head
nghttpx: Do not send error/status body when method is HEAD
2024-04-09 17:32:22 +09:00
Tatsuhiro Tsujikawa
7523afe753 nghttpx: Do not send error/status body when method is HEAD 2024-04-09 16:51:27 +09:00
Tatsuhiro Tsujikawa
88bdba7064 Merge pull request #2143 from nghttp2/dependabot/go_modules/golang.org/x/net-0.24.0
build(deps): bump golang.org/x/net from 0.22.0 to 0.24.0
2024-04-09 01:13:25 +09:00
dependabot[bot]
cccece45f8 build(deps): bump golang.org/x/net from 0.22.0 to 0.24.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.22.0 to 0.24.0.
- [Commits](https://github.com/golang/net/compare/v0.22.0...v0.24.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-08 14:15:23 +00:00
Tatsuhiro Tsujikawa
c35c119ef0 Merge pull request #2142 from nghttp2/nghttpx-endpoint-def
nghttpx: Define APIEndpoints separately
2024-04-06 19:56:46 +09:00
Tatsuhiro Tsujikawa
3793fcf9d8 nghttpx: Define APIEndpoints separately 2024-04-06 19:36:41 +09:00
Tatsuhiro Tsujikawa
b8b2efb590 Merge pull request #2141 from nghttp2/to_array
Adopt std::to_array and remove make_array
2024-04-06 17:28:16 +09:00
Tatsuhiro Tsujikawa
609d587397 Adopt std::to_array and remove make_array 2024-04-06 16:51:37 +09:00
Tatsuhiro Tsujikawa
b8f0d17f2f Merge pull request #2140 from nghttp2/bump-macos
ci: Bump macos to 13
2024-04-06 15:55:43 +09:00
Tatsuhiro Tsujikawa
0235798136 ci: Bump macos to 13
Also bump boringssl so that it can be built without Go.
2024-04-06 15:24:16 +09:00
Tatsuhiro Tsujikawa
acd8d16bd9 Merge pull request #2138 from nghttp2/require-c++20
Require C++20 compiler
2024-04-05 19:40:57 +09:00
Tatsuhiro Tsujikawa
35e1ca2039 Require C++20 compiler 2024-04-05 19:21:00 +09:00
Tatsuhiro Tsujikawa
85644ebe3a Merge pull request #2137 from nghttp2/require-c-ares-1.16
Require c-ares >= 1.16.0 for ares_getaddrinfo
2024-04-05 18:43:28 +09:00
Tatsuhiro Tsujikawa
6e2e06ac03 Require c-ares >= 1.16.0 for ares_getaddrinfo 2024-04-05 17:10:37 +09:00
Tatsuhiro Tsujikawa
6e53efc060 Merge pull request #2136 from nghttp2/nghttpx-fix-quic-stateless-reset-stack-buffer
nghttpx: Fix QUIC stateless reset stack buffer overflow
2024-04-05 17:06:42 +09:00
Tatsuhiro Tsujikawa
dcc5d44094 nghttpx: Fix QUIC stateless reset stack buffer overflow 2024-04-05 16:47:17 +09:00
Tatsuhiro Tsujikawa
8b567c597a Bump package version 2024-04-04 17:29:26 +09:00
Tatsuhiro Tsujikawa
d76b8331d1 Update bash_completion 2024-04-04 17:16:56 +09:00
Tatsuhiro Tsujikawa
0655cb3be4 Update manual pages 2024-04-04 17:16:42 +09:00
Tatsuhiro Tsujikawa
7a88a0d019 Bump package and library versions 2024-04-04 17:12:12 +09:00
Tatsuhiro Tsujikawa
086103193a Update AUTHORS 2024-04-04 17:10:22 +09:00
Tatsuhiro Tsujikawa
d71a4668c6 Add nghttp2_option_set_max_continuations 2024-04-04 17:08:46 +09:00
Tatsuhiro Tsujikawa
00201ecd8f Limit CONTINUATION frames following an incoming HEADER frame 2024-04-04 17:08:46 +09:00
Tatsuhiro Tsujikawa
605d9fdd68 Merge pull request #2134 from nghttp2/nghttpd-fix-stall
nghttpd: Fix read stall
2024-04-04 17:08:17 +09:00
Tatsuhiro Tsujikawa
749e1d8bd2 nghttpd: Fix read stall 2024-04-04 16:52:29 +09:00
Tatsuhiro Tsujikawa
c68456cc68 Merge pull request #2133 from nghttp2/nghttpx-fix-error-message
nghttpx: Fix error message
2024-04-03 20:00:44 +09:00
Tatsuhiro Tsujikawa
fe06364011 Merge pull request #2131 from nghttp2/bump-munit
Bump munit
2024-04-03 19:53:06 +09:00
Tatsuhiro Tsujikawa
68f71ad5fb nghttpx: Fix error message 2024-04-03 19:45:07 +09:00
Tatsuhiro Tsujikawa
f15e3713ad Bump munit 2024-04-03 19:36:36 +09:00
Tatsuhiro Tsujikawa
b0b14bf5b6 Merge pull request #2132 from nghttp2/nghttpx-ares-getaddrinfo
nghttpx: Migrate to ares_getaddrinfo
2024-04-03 19:36:06 +09:00
Tatsuhiro Tsujikawa
d32324658a nghttpx: Migrate to ares_getaddrinfo 2024-04-03 19:21:16 +09:00
Tatsuhiro Tsujikawa
c9c4f0bb18 Merge pull request #2129 from nghttp2/nghttpx-quic-lb
nghttpx: Allocate 3 bits for QUIC configuration in Connection ID
2024-03-31 22:34:35 +09:00
Tatsuhiro Tsujikawa
4c74be62e3 Merge pull request #2128 from jimmy-park/fix-cmake-warning
cmake: check `SSL_provide_quic_data` when `ENABLE_HTTP3` is `ON`
2024-03-31 22:26:30 +09:00
Tatsuhiro Tsujikawa
fbcb9154fc nghttpx: Allocate 3 bits for QUIC configuration in Connection ID
Allocate 3 bits for QUIC configuration in Connection ID that matches
the current QUIC LB draft.
2024-03-31 21:44:01 +09:00
Jiwoo Park
7a507f9a61 Check SSL_provide_quic_data when ENABLE_HTTP3 is ON 2024-03-31 20:54:07 +09:00
Tatsuhiro Tsujikawa
241b1973cb Merge pull request #2127 from nghttp2/bpf-drop-bad-quic-packet
bpf: Drop bad QUIC packet
2024-03-31 19:24:31 +09:00
Tatsuhiro Tsujikawa
e8c45f4bfd bpf: Drop bad QUIC packet
Drop QUIC packet if it is less than valid QUIC packet or it is coming
from one of remote ports that are known to be a UDP service that can
be used as a UDP reflection attack.
2024-03-31 19:00:15 +09:00
Tatsuhiro Tsujikawa
5483edded8 Merge pull request #2126 from nghttp2/nghttpx-worker-process-thread
nghttpx: Split thread into worker_process and thread
2024-03-31 18:55:53 +09:00
Tatsuhiro Tsujikawa
edd2070a11 nghttpx: Split thread into worker_process and thread
Split thread into worker_process and thread.  Use thread to O(1)
lookup for Worker.  This new machinery is not compatible to the
previous version.  The old instance of nghttpx must not be upgraded
with USR2 signal.  It should be restarted instead.
2024-03-31 18:07:56 +09:00
Tatsuhiro Tsujikawa
cd7d5166f1 Merge pull request #2125 from nghttp2/nghttpx-faster-worker-lookup
Nghttpx faster worker lookup
2024-03-30 18:36:49 +09:00
Tatsuhiro Tsujikawa
6e57c13727 Faster worker lookup 2024-03-30 17:31:18 +09:00
Tatsuhiro Tsujikawa
a2f8f75145 Rename iwps to lwps 2024-03-30 16:29:23 +09:00
Tatsuhiro Tsujikawa
4dea77ce39 Merge pull request #2124 from nghttp2/nghttpx-cid
nghttpx: Rework Connection ID construction
2024-03-30 11:31:28 +09:00
Tatsuhiro Tsujikawa
ab4b37afab nghttpx: Rework Connection ID construction 2024-03-30 11:09:03 +09:00
Tatsuhiro Tsujikawa
c97376d456 Merge pull request #2122 from nghttp2/nghttpx-stateless-reset
Further reduce Stateless reset emission
2024-03-28 17:35:32 +09:00
Tatsuhiro Tsujikawa
b3bb189cb8 Further reduce Stateless reset emission 2024-03-28 17:07:44 +09:00
Tatsuhiro Tsujikawa
408149ce5e Merge pull request #2120 from nghttp2/no-rfc7540-priority-fix
No rfc7540 priority fix
2024-03-25 23:39:05 +09:00
Tatsuhiro Tsujikawa
f35defd57a Remove stream from queue on deletion
Remove stream from queue on deletion.  Run on_stream_close_callback
before deallocating item in case that a frame is submitted in the
callback which is highly unusual in practice.
2024-03-25 23:15:16 +09:00
Tatsuhiro Tsujikawa
97c4b72b6a Decrement num_idle_streams when opening idle stream 2024-03-25 23:14:04 +09:00
Tatsuhiro Tsujikawa
9277c1ab40 Detach item from stream on memory allocation failure 2024-03-25 23:13:07 +09:00
Tatsuhiro Tsujikawa
cd993a9648 Merge pull request #2119 from nghttp2/nghttp-keylog
nghttp: Support SSLKEYLOGFILE
2024-03-25 17:55:51 +09:00
Tatsuhiro Tsujikawa
d5cf5621d7 nghttp: Support SSLKEYLOGFILE 2024-03-25 17:32:33 +09:00
Tatsuhiro Tsujikawa
f08e3393cb Merge pull request #2117 from nghttp2/nghttpx-discard-short-quic-pkt
nghttpx: Discard UDP datagram that is too short to be a valid QUIC packet
2024-03-23 18:50:22 +09:00
Tatsuhiro Tsujikawa
8c885ca0f4 nghttpx: Discard UDP datagram that is too short to be a valid QUIC packet 2024-03-23 18:29:03 +09:00
Tatsuhiro Tsujikawa
eecff14cf2 Merge pull request #2116 from nghttp2/stale
Add actions/stale
2024-03-23 16:43:47 +09:00
Tatsuhiro Tsujikawa
2a52b95773 Add actions/stale 2024-03-23 16:22:12 +09:00
Tatsuhiro Tsujikawa
e98df05432 Merge pull request #2115 from nghttp2/nghttpx-quic-more-prohibited-ports
nghttpx: More QUIC prohibited ports
2024-03-22 18:59:09 +09:00
Tatsuhiro Tsujikawa
d242dc8bd5 nghttpx: More QUIC prohibited ports 2024-03-22 18:44:56 +09:00
Tatsuhiro Tsujikawa
58ba3b178b Merge pull request #2114 from nghttp2/nghttpx-quic-stateless-reset-size
nghttpx: Rework QUIC stateless reset packet size
2024-03-22 18:29:09 +09:00
Tatsuhiro Tsujikawa
4c24629854 nghttpx: Rework QUIC stateless reset packet size 2024-03-22 18:16:07 +09:00
Tatsuhiro Tsujikawa
bf06b48368 Merge pull request #2113 from nghttp2/h2load-host-override
h2load: Allow host header to be overridden
2024-03-21 19:46:00 +09:00
Tatsuhiro Tsujikawa
c4d150dec6 h2load: Allow host header to be overridden
Remove :host header override which is deprecated SPDY header.
Instead, add host header to the override header list.
2024-03-21 19:26:00 +09:00
Tatsuhiro Tsujikawa
fc2ee9f41e Merge pull request #2112 from nghttp2/nghttpx-fix-port
nghttpx: Fix port byte order
2024-03-21 18:59:04 +09:00
Tatsuhiro Tsujikawa
bbddd550c6 nghttpx: Fix port byte order 2024-03-21 18:20:14 +09:00
Tatsuhiro Tsujikawa
78ab8b1330 Merge pull request #2111 from nghttp2/nghttpx-quic-port
nghttpx: Drop a UDP datagram from well-known port
2024-03-21 17:53:12 +09:00
Tatsuhiro Tsujikawa
5acd3c75f7 nghttpx: Drop a UDP datagram from well-known port 2024-03-21 17:22:26 +09:00
Tatsuhiro Tsujikawa
29b87d5434 Merge pull request #2110 from nghttp2/tar-pax
autotools: Switch to tar-pax
2024-03-20 17:25:08 +09:00
Tatsuhiro Tsujikawa
39cc6fd8b2 autotools: Switch to tar-pax 2024-03-20 17:01:56 +09:00
Tatsuhiro Tsujikawa
ab30dbaf00 Merge pull request #2109 from nghttp2/automate-release
Automate release process
2024-03-20 16:50:30 +09:00
Tatsuhiro Tsujikawa
a50f408acf Merge pull request #2108 from nghttp2/tar-ustar
autotools: Use tar-ustar automake option
2024-03-20 16:27:23 +09:00
Tatsuhiro Tsujikawa
bb0f2e822d autotools: Use tar-ustar automake option 2024-03-20 15:53:26 +09:00
Tatsuhiro Tsujikawa
c3fe715be2 Automate release process 2024-03-20 15:12:41 +09:00
Tatsuhiro Tsujikawa
747e9e676d Merge pull request #2107 from nghttp2/dependabot/go_modules/github.com/quic-go/quic-go-0.42.0
build(deps): bump github.com/quic-go/quic-go from 0.41.0 to 0.42.0
2024-03-20 14:41:05 +09:00
dependabot[bot]
d1025ea7e6 build(deps): bump github.com/quic-go/quic-go from 0.41.0 to 0.42.0
Bumps [github.com/quic-go/quic-go](https://github.com/quic-go/quic-go) from 0.41.0 to 0.42.0.
- [Release notes](https://github.com/quic-go/quic-go/releases)
- [Changelog](https://github.com/quic-go/quic-go/blob/master/Changelog.md)
- [Commits](https://github.com/quic-go/quic-go/compare/v0.41.0...v0.42.0)

---
updated-dependencies:
- dependency-name: github.com/quic-go/quic-go
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-18 14:30:24 +00:00
Tatsuhiro Tsujikawa
4bda611ee4 Merge pull request #2106 from nghttp2/nghttpx-simplify-cc-handling
nghttpx: Simplify quic connection close handling
2024-03-18 21:42:31 +09:00
Tatsuhiro Tsujikawa
ffea7c8793 nghttpx: Simplify quic connection close handling
Simplify quic connection close handling with new ngtcp2 API.
2024-03-18 21:09:22 +09:00
Tatsuhiro Tsujikawa
7d516c23c2 Merge pull request #2105 from nghttp2/bump-ngtcp2
Bump ngtcp2
2024-03-18 21:07:45 +09:00
Tatsuhiro Tsujikawa
fe9a989a39 boringssl requires C++ runtime 2024-03-18 19:31:39 +09:00
Tatsuhiro Tsujikawa
9c30ba7f35 Bump ngtcp2 2024-03-18 18:33:24 +09:00
Tatsuhiro Tsujikawa
a46950e972 Merge pull request #2103 from nghttp2/base-nossl
Switch to distroless/base-nossl
2024-03-17 19:05:41 +09:00
Tatsuhiro Tsujikawa
7c644e4982 Merge pull request #2102 from nghttp2/rewrite-hexdump
Rewrite hexdump
2024-03-17 18:58:25 +09:00
Tatsuhiro Tsujikawa
945940e131 Switch to distroless/base-nossl 2024-03-17 18:44:18 +09:00
Tatsuhiro Tsujikawa
be512f8298 Rewrite hexdump 2024-03-17 18:38:08 +09:00
Tatsuhiro Tsujikawa
061998e6cf Merge pull request #2101 from nghttp2/nghttpx-fix-header-timeout-in-conf
nghttpx: Fix frontend-header-timeout does not work in config file
2024-03-16 18:31:54 +09:00
Tatsuhiro Tsujikawa
ceccba0997 nghttpx: Fix frontend-header-timeout does not work in config file 2024-03-16 18:13:46 +09:00
Tatsuhiro Tsujikawa
a7379389f1 Merge pull request #2100 from nghttp2/nghttpx-header-idle-timeout
Nghttpx header idle timeout
2024-03-16 17:36:38 +09:00
Tatsuhiro Tsujikawa
9fbde38571 Rename frontend-*-read-timeout to frontend-*-idle-timeout
Rename frontend-*-read-timeout to frontend-*-idle-timeout so that the
name of the option suggests what it does.
2024-03-16 16:58:32 +09:00
Tatsuhiro Tsujikawa
c8e149994e nghttpx: Add frontend-header-timeout option
Add frontend-header-timeout option.  frontend-read-timeout is
deprecated and has no effect.  Use frontend-header-timeout as a
replacement.  This also fixes the bug that HTTP/3 header timeout is
not set per stream.
2024-03-16 16:58:32 +09:00
Tatsuhiro Tsujikawa
566737ccc8 Merge pull request #2099 from nghttp2/docker-copy-link
docker: Use copy --link
2024-03-15 18:13:40 +09:00
Tatsuhiro Tsujikawa
f28d385e78 docker: Use copy --link 2024-03-15 17:27:23 +09:00
Tatsuhiro Tsujikawa
208b3caa0f Merge pull request #2098 from nghttp2/llvm-workaround
Workaround llvm issue on github ubuntu runner
2024-03-15 17:26:41 +09:00
Tatsuhiro Tsujikawa
7ebd0a84ec Workaround llvm issue on github ubuntu runner 2024-03-15 17:07:35 +09:00
Tatsuhiro Tsujikawa
b922740e56 Merge pull request #2097 from nghttp2/dependabot/go_modules/golang.org/x/net-0.22.0
build(deps): bump golang.org/x/net from 0.21.0 to 0.22.0
2024-03-15 09:02:16 +09:00
dependabot[bot]
d8bb6d2afe build(deps): bump golang.org/x/net from 0.21.0 to 0.22.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.21.0 to 0.22.0.
- [Commits](https://github.com/golang/net/compare/v0.21.0...v0.22.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-11 14:45:29 +00:00
Tatsuhiro Tsujikawa
a35f3d16db Merge pull request #2092 from jonaski/cmake_static
Respect BUILD_STATIC_LIBS and add option for tests
2024-03-06 00:28:25 +09:00
Jonas Kvinge
be76c13da8 build: Add BUILD_STATIC_LIBS and BUILD_TESTING 2024-03-04 21:47:48 +01:00
Jonas Kvinge
b8a307ec63 CMake: Respect BUILD_STATIC_LIBS
Respect BUILD_STATIC_LIBS and add option for tests.

This also fixes the library conflict with MSVC by setting STATIC_LIB_SUFFIX so it's using "nghttp2_static" when both static and shared library is built, since the lib name currently conflicts with the shared when STATIC_LIB_SUFFIX was not set.

Fixes #2088
2024-03-04 21:43:48 +01:00
Tatsuhiro Tsujikawa
ebb92d2ff7 Merge pull request #2093 from jonaski/ci
Checkout with submodules
2024-03-04 18:40:15 +09:00
Jonas Kvinge
ce39c2ade0 docker: Checkout with submodules 2024-03-03 15:51:30 +01:00
Jonas Kvinge
3cf262f231 build: Checkout with submodules 2024-03-03 15:51:30 +01:00
Tatsuhiro Tsujikawa
ac2e671d80 Merge pull request #2087 from nghttp2/nghttpx-h3-trailer-shutdown-read
nghttpx: Shutdown h3 stream read with trailer as well
2024-03-02 11:57:46 +09:00
Tatsuhiro Tsujikawa
86049b7af2 nghttpx: Shutdown h3 stream read with trailer as well 2024-03-02 11:24:14 +09:00
Tatsuhiro Tsujikawa
99e7413938 Bump package version 2024-03-01 17:28:02 +09:00
Tatsuhiro Tsujikawa
c5e087b103 Update bash_completion 2024-03-01 17:04:52 +09:00
Tatsuhiro Tsujikawa
fb65839653 Update manual pages 2024-03-01 17:04:23 +09:00
Tatsuhiro Tsujikawa
1da27af832 Bump package and library versions 2024-03-01 16:59:34 +09:00
Tatsuhiro Tsujikawa
c29ac85281 Update AUTHORS 2024-03-01 16:57:31 +09:00
Tatsuhiro Tsujikawa
1b5fe4a477 clang-format 2024-02-29 17:59:42 +09:00
Tatsuhiro Tsujikawa
cdf01d1af8 Merge pull request #2086 from barracuda156/darwin
Fix build when `AI_NUMERICSERV` is undefined
2024-02-29 17:58:38 +09:00
Sergey Fedorov
2e54284906 shrpx_tls_test.cc: use AI_NUMERICSERV when defined 2024-02-29 02:29:36 +07:00
Sergey Fedorov
b13c97f04f shrpx_config.cc: if undefined, define AI_NUMERICSERV to 0 2024-02-29 02:26:33 +07:00
Tatsuhiro Tsujikawa
c817b2a3e0 Merge pull request #2085 from nghttp2/nghttpx-remove-default-udp-payload-size
nghttpx: Remove SHRPX_QUIC_MAX_UDP_PAYLOAD_SIZE
2024-02-26 18:04:06 +09:00
Tatsuhiro Tsujikawa
a354577eff nghttpx: Remove SHRPX_QUIC_MAX_UDP_PAYLOAD_SIZE
Remove SHRPX_QUIC_MAX_UDP_PAYLOAD_SIZE and just rely on the ngtcp2
default.
2024-02-26 17:41:54 +09:00
Tatsuhiro Tsujikawa
09a95983b9 Merge pull request #2084 from nghttp2/max-pktcnt-fix
src: Deal with the case that send_quantum < max_udp_payload_size
2024-02-26 17:40:29 +09:00
Tatsuhiro Tsujikawa
25d6df290e src: Deal with the case that send_quantum < max_udp_payload_size 2024-02-26 17:15:29 +09:00
Tatsuhiro Tsujikawa
bd9edc8e76 Merge pull request #2083 from nghttp2/apt-get-update
Run apt-get update before install
2024-02-26 17:12:16 +09:00
Tatsuhiro Tsujikawa
b28998694b Run apt-get update before install 2024-02-26 16:50:09 +09:00
Tatsuhiro Tsujikawa
0b5008eee3 Merge pull request #2082 from nghttp2/reuse-evp-cipher-ctx
nghttpx: Reuse EVP_CIPHER_CTX for QUIC connection ID encryption
2024-02-23 19:46:30 +09:00
Tatsuhiro Tsujikawa
a6d128836d nghttpx: Reuse EVP_CIPHER_CTX for QUIC connection ID encryption 2024-02-23 19:24:42 +09:00
Tatsuhiro Tsujikawa
ea4e5cec19 Merge pull request #2081 from nghttp2/fix-mruby-crash
mruby: Exclude mrdb gem which causes nghttpx to crash
2024-02-22 21:51:08 +09:00
Tatsuhiro Tsujikawa
bfeb1ee182 mruby: Exclude mrdb gem which causes nghttpx to crash 2024-02-22 21:35:25 +09:00
Tatsuhiro Tsujikawa
2b28011c86 Merge pull request #2080 from nghttp2/bpf-pre-expand-aes-key
bpf: Pre-expand aes key
2024-02-22 19:21:20 +09:00
Tatsuhiro Tsujikawa
66c5ea2216 bpf: Pre-expand aes key 2024-02-22 18:56:07 +09:00
Tatsuhiro Tsujikawa
66abd8cbd3 Merge pull request #2079 from nghttp2/neverbleed-gnu-source
neverbleed: Define _GNU_SOURCE for pthread_setaffinity_np
2024-02-18 20:04:28 +09:00
Tatsuhiro Tsujikawa
a142e81994 neverbleed: Define _GNU_SOURCE for pthread_setaffinity_np 2024-02-18 19:30:22 +09:00
Tatsuhiro Tsujikawa
97b7012ccd Merge pull request #2078 from nghttp2/mruby-mrbc-rename
mruby: Adopt deprecation of mrbc_ prefix
2024-02-18 19:16:59 +09:00
Tatsuhiro Tsujikawa
39d293551a mruby: Adopt deprecation of mrbc_ prefix 2024-02-18 18:53:39 +09:00
Tatsuhiro Tsujikawa
fe56b875b4 Merge pull request #2077 from nghttp2/bump-ngtcp2
Bump ngtcp2 dependencies
2024-02-18 18:37:39 +09:00
Tatsuhiro Tsujikawa
d1035d439a Bump ngtcp2 dependencies 2024-02-18 18:17:37 +09:00
Tatsuhiro Tsujikawa
532791209e Merge pull request #2076 from nghttp2/h2load-add-sni
h2load: Add --sni option
2024-02-18 17:47:07 +09:00
Tatsuhiro Tsujikawa
ed0b7864d7 h2load: Add --sni option 2024-02-18 17:26:18 +09:00
Tatsuhiro Tsujikawa
d2ca281ca1 Merge pull request #2075 from nghttp2/bump-llhttp
Bump llhttp to 48588093ca4219b5f689acfc9ebea9e4c8c37663
2024-02-16 18:50:10 +09:00
Tatsuhiro Tsujikawa
3792c573cd Bump llhttp to 48588093ca4219b5f689acfc9ebea9e4c8c37663 2024-02-16 17:58:08 +09:00
Tatsuhiro Tsujikawa
ab8ee3fbce Merge pull request #2074 from nghttp2/bump-mruby
Bump mruby to 3.3.0
2024-02-16 17:57:34 +09:00
Tatsuhiro Tsujikawa
c2cfab6d9c Bump mruby to 3.3.0 2024-02-16 17:30:53 +09:00
Tatsuhiro Tsujikawa
a99667350e Merge pull request #2073 from nghttp2/security-policy
Move security policy to GitHub standard location
2024-02-15 22:39:15 +09:00
Tatsuhiro Tsujikawa
053703eeab Move security policy to GitHub standard location 2024-02-15 22:23:10 +09:00
Tatsuhiro Tsujikawa
3a4e26247b Merge pull request #2072 from nghttp2/security
Use GitHub private vulnerability reporting
2024-02-15 21:52:11 +09:00
Tatsuhiro Tsujikawa
a25f19560c Use GitHub private vulnerability reporting 2024-02-15 21:37:55 +09:00
Tatsuhiro Tsujikawa
2af27bb921 Merge pull request #2071 from nghttp2/reconsider-ssize_t-usage-in-src
Reconsider ssize t usage in src
2024-02-15 21:18:19 +09:00
Tatsuhiro Tsujikawa
731c7c0f92 nghttpx: Reconsider ssize_t usage 2024-02-15 20:59:39 +09:00
Tatsuhiro Tsujikawa
b487cf1d19 nghttp: Use size_t where a negative value is not expected 2024-02-15 20:59:38 +09:00
Tatsuhiro Tsujikawa
41a2f6de00 h2load: Use size_t where a negative value is not expected 2024-02-15 20:59:38 +09:00
Tatsuhiro Tsujikawa
075254e5a0 Merge pull request #2070 from nghttp2/src-remove-unused
src: Remove unused functions
2024-02-15 20:03:32 +09:00
Tatsuhiro Tsujikawa
3daa0de1e6 src: Remove unused functions 2024-02-15 19:44:32 +09:00
Tatsuhiro Tsujikawa
972e372402 Merge pull request #2069 from nghttp2/apps-migrate-nghttp2_ssize
Apps migrate nghttp2 ssize
2024-02-15 19:43:16 +09:00
Tatsuhiro Tsujikawa
65c91ba729 h2load: Migrate to nghttp2_ssize API 2024-02-15 19:29:42 +09:00
Tatsuhiro Tsujikawa
3ffade5f8a nghttpx: Migrate to nghttp2_ssize API 2024-02-15 19:29:42 +09:00
Tatsuhiro Tsujikawa
33ad4cc2b8 deflatehd, inflatehd: Migrate to nghttp2_ssize API 2024-02-15 19:29:42 +09:00
Tatsuhiro Tsujikawa
f029a09cef nghttpd: Migrate to nghttp2_ssize API 2024-02-15 19:29:42 +09:00
Tatsuhiro Tsujikawa
9468b16f1e nghttp: Migrate to nghttp2_ssize API 2024-02-15 19:29:42 +09:00
Tatsuhiro Tsujikawa
d4b19d7a5a Merge pull request #2068 from nghttp2/rfc7540-priorities-api-deprecation-plan
Describe RFC 7540 priorities deprecation plan
2024-02-15 19:08:36 +09:00
Tatsuhiro Tsujikawa
632292731f Describe RFC 7540 priorities deprecation plan 2024-02-15 18:50:32 +09:00
Tatsuhiro Tsujikawa
89500e2ab3 Merge pull request #2067 from nghttp2/deprecated-warning-upfront
Move deprecated warning upfront
2024-02-15 18:50:06 +09:00
Tatsuhiro Tsujikawa
bc1c6c07b3 Move deprecated warning upfront 2024-02-15 18:34:19 +09:00
Tatsuhiro Tsujikawa
2fdb959ea1 Merge pull request #2066 from nghttp2/nghttp2_ssize
Introduce nghttp2_ssize API
2024-02-15 18:32:31 +09:00
Tatsuhiro Tsujikawa
93c4d8bc34 Introduce nghttp2_ssize API
This commit deprecates all APIs, including structs and callback
functions, that use ssize_t.  New APIs that use nghttp2_ssize are
added as a replacement.  The usage of ssize_t is problematic for
several reasons.  Some platforms do not define ssize_t.  The minimum
value of ssize_t that POSIX requires is -1 which makes nghttp2 error
code out of range.  nghttp2_ssize is an alias of ptrdiff_t that is in
C standard and covers our error code range.

New code should use new nghttp2_ssize APIs.  The existing applications
should consider migrating to new APIs.

The deprecated ssize_t APIs continue to work for backward
compatibility.

Here is the summary of the deprecated APIs and their replacements:

Callback functions:

- nghttp2_data_source_read_callback => nghttp2_data_source_read_callback2
- nghttp2_data_source_read_length_callback => nghttp2_data_source_read_length_callback2
- nghttp2_pack_extension_callback => nghttp2_pack_extension_callback2
- nghttp2_recv_callback => nghttp2_recv_callback2
- nghttp2_select_padding_callback => nghttp2_select_padding_callback2
- nghttp2_send_callback => nghttp2_send_callback2

Structs:

- nghttp2_data_provider => nghttp2_data_provider2

Functions:

- nghttp2_hd_deflate_hd => nghttp2_hd_deflate_hd2
- nghttp2_hd_deflate_hd_vec => nghttp2_hd_deflate_hd_vec2
- nghttp2_hd_inflate_hd2 => nghttp2_hd_inflate_hd3
- nghttp2_pack_settings_payload => nghttp2_pack_settings_payload2
- nghttp2_session_callbacks_set_data_source_read_length_callback =>
  nghttp2_session_callbacks_set_data_source_read_length_callback2
- nghttp2_session_callbacks_set_pack_extension_callback =>
  nghttp2_session_callbacks_set_pack_extension_callback2
- nghttp2_session_callbacks_set_recv_callback =>
  nghttp2_session_callbacks_set_recv_callback2
- nghttp2_session_callbacks_set_select_padding_callback =>
  nghttp2_session_callbacks_set_select_padding_callback2
- nghttp2_session_callbacks_set_send_callback =>
  nghttp2_session_callbacks_set_send_callback2
- nghttp2_session_mem_recv => nghttp2_session_mem_recv2
- nghttp2_session_mem_send => nghttp2_session_mem_send2
- nghttp2_submit_data => nghttp2_submit_data2
- nghttp2_submit_request => nghttp2_submit_request2
- nghttp2_submit_response => nghttp2_submit_response2

For those applications that do not want to see ssize_t in nghttp2.h
header file, define NGHTTP2_NO_SSIZE_T macro before including
nghttp2.h.  It hides all ssize_t APIs.
2024-02-15 18:19:11 +09:00
Tatsuhiro Tsujikawa
504633eadd Merge pull request #2064 from nghttp2/munit
Munit
2024-02-14 17:53:19 +09:00
Tatsuhiro Tsujikawa
3884aa166e Remove munit dependency from nghttp2_test_helper.h 2024-02-14 17:39:10 +09:00
Tatsuhiro Tsujikawa
ec7abfeabb Merge pull request #2065 from nghttp2/integration-go-omit-unused-params
integration-tests: Omit unused parameters
2024-02-12 16:04:29 +09:00
Tatsuhiro Tsujikawa
de79d05ad9 integration-tests: Omit unused parameters 2024-02-12 14:02:01 +09:00
Tatsuhiro Tsujikawa
8b4fd9bd13 cmake: Disable -Wunused-macros
Disable -Wunused-macros which makes compiling external code quite
hard.
2024-02-12 14:01:35 +09:00
Tatsuhiro Tsujikawa
be8a327258 Migrate to munit from cunit 2024-02-12 14:01:35 +09:00
Tatsuhiro Tsujikawa
58c1e2bb55 Merge pull request #2062 from nghttp2/dependabot/go_modules/golang.org/x/net-0.21.0
build(deps): bump golang.org/x/net from 0.20.0 to 0.21.0
2024-02-09 21:28:39 +09:00
dependabot[bot]
5d0a2f5fdb build(deps): bump golang.org/x/net from 0.20.0 to 0.21.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.20.0 to 0.21.0.
- [Commits](https://github.com/golang/net/compare/v0.20.0...v0.21.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-09 12:06:05 +00:00
Tatsuhiro Tsujikawa
4f5a769d01 Merge pull request #2061 from nghttp2/dependabot-gomod
Let dependabot manage go modules
2024-02-09 21:05:37 +09:00
Tatsuhiro Tsujikawa
8df2c0090d Merge pull request #2060 from nghttp2/deprecate-rfc7540-priorities
Deprecate RFC 7540 priorities (aka stream dependencies)
2024-02-09 19:43:19 +09:00
Tatsuhiro Tsujikawa
c92aabb6e6 Let dependabot manage go modules 2024-02-09 18:48:24 +09:00
Tatsuhiro Tsujikawa
c00c44abbe Deprecate RFC 7540 priorities (aka stream dependencies)
This commit just adds a warning to the related API documents.  The
actual functionality works just like before.
2024-02-09 18:31:57 +09:00
Tatsuhiro Tsujikawa
92582ce519 Merge pull request #2059 from nghttp2/libbrotli-fixup
Libbrotli fixup
2024-02-08 23:03:56 +09:00
Tatsuhiro Tsujikawa
1291b76986 Use auto 2024-02-08 21:24:20 +09:00
Tatsuhiro Tsujikawa
6d291e98e0 Fix bug that libbrotlienc is not enabled 2024-02-08 21:24:20 +09:00
Tatsuhiro Tsujikawa
68498a307c Fix missing '`' 2024-02-08 21:24:20 +09:00
Tatsuhiro Tsujikawa
a7d73d90db cmake: Add missing definitions 2024-02-08 21:24:20 +09:00
Tatsuhiro Tsujikawa
69fd5b557d Add missing : 2024-02-08 18:04:27 +09:00
Tatsuhiro Tsujikawa
3792abd447 Disable libbrotli by default 2024-02-08 18:04:27 +09:00
Tatsuhiro Tsujikawa
d55323e575 Merge pull request #2058 from nghttp2/switch-to-aws-lc
Switch to aws lc
2024-02-08 18:03:14 +09:00
Tatsuhiro Tsujikawa
96104d0895 README.rst: Switch to aws-lc 2024-02-08 17:49:52 +09:00
Tatsuhiro Tsujikawa
2f7dd5ec65 docker: Switch to aws-lc 2024-02-08 17:49:52 +09:00
Tatsuhiro Tsujikawa
8c0fe8f93f Merge pull request #2057 from nghttp2/fix-missing-newline
Fix missing newline
2024-02-07 19:42:55 +09:00
Tatsuhiro Tsujikawa
85ccbd4f95 Fix missing newline 2024-02-07 19:02:12 +09:00
Tatsuhiro Tsujikawa
f3b142293c Merge pull request #2056 from nghttp2/bssl-cert-compression
src: Certificate Compression with boringssl
2024-02-07 19:00:41 +09:00
Tatsuhiro Tsujikawa
4b34dd1965 src: Certificate Compression with boringssl 2024-02-07 18:41:01 +09:00
Tatsuhiro Tsujikawa
4ae7fe91d6 Merge pull request #2054 from nghttp2/fetch-ocsp-response-python3
Run with python3
2024-02-06 23:35:39 +09:00
Tatsuhiro Tsujikawa
41ac5f7e4e Merge pull request #2055 from nghttp2/bssl-ocsp
nghttpx: Set ocsp response to SSL in case of boringssl
2024-02-06 22:56:24 +09:00
Tatsuhiro Tsujikawa
343dbafe7d nghttpx: Set ocsp response to SSL in case of boringssl 2024-02-06 21:27:43 +09:00
Tatsuhiro Tsujikawa
5003886591 Run with python3 2024-02-06 19:42:03 +09:00
Tatsuhiro Tsujikawa
f7de260969 Merge pull request #2052 from nghttp2/dependabot/github_actions/microsoft/setup-msbuild-2
build(deps): bump microsoft/setup-msbuild from 1 to 2
2024-02-06 00:19:13 +09:00
dependabot[bot]
69daeb040c build(deps): bump microsoft/setup-msbuild from 1 to 2
Bumps [microsoft/setup-msbuild](https://github.com/microsoft/setup-msbuild) from 1 to 2.
- [Release notes](https://github.com/microsoft/setup-msbuild/releases)
- [Changelog](https://github.com/microsoft/setup-msbuild/blob/main/building-release.md)
- [Commits](https://github.com/microsoft/setup-msbuild/compare/v1...v2)

---
updated-dependencies:
- dependency-name: microsoft/setup-msbuild
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-05 14:08:27 +00:00
Tatsuhiro Tsujikawa
fdc53b1a76 Merge pull request #2051 from anthonyalayo/feat/fixingBuildInstallTrees
Fixing the build and install trees
2024-02-05 17:12:51 +09:00
Anthony Alayo
b6247f5391 Setting variables for static and shared libs 2024-02-02 18:45:32 -08:00
Anthony Alayo
40983f461e Update CMakeLists.txt 2024-02-02 18:39:04 -08:00
Anthony Alayo
80ba5ad341 Tweaking export 2024-02-02 13:19:29 -08:00
Anthony Alayo
0f3a369e12 Adding export set 2024-02-02 13:04:12 -08:00
Anthony Alayo
d9edee47aa Fixing the build and install trees 2024-02-02 12:21:13 -08:00
Tatsuhiro Tsujikawa
a65b0acd9e Merge pull request #2046 from nghttp2/dependabot/github_actions/actions/cache-4
build(deps): bump actions/cache from 3 to 4
2024-01-23 00:43:32 +09:00
dependabot[bot]
67c2c481ea build(deps): bump actions/cache from 3 to 4
Bumps [actions/cache](https://github.com/actions/cache) from 3 to 4.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-22 14:15:13 +00:00
Tatsuhiro Tsujikawa
57c1db3db4 Merge pull request #2044 from nghttp2/speed-up-git-clone
Speed up git clone
2024-01-22 17:43:45 +09:00
Tatsuhiro Tsujikawa
cc963b4862 Speed up git clone 2024-01-22 17:15:32 +09:00
Tatsuhiro Tsujikawa
2bccc5cf70 Merge pull request #2043 from nghttp2/release-speed-up-git-submodule
makerelease.sh: Speed up git submodule
2024-01-21 21:15:29 +09:00
Tatsuhiro Tsujikawa
93404696ac makerelease.sh: Speed up git submodule 2024-01-21 19:50:01 +09:00
Tatsuhiro Tsujikawa
a0fc33ecd5 Bump package version 2024-01-21 19:45:50 +09:00
Tatsuhiro Tsujikawa
4c250df318 Update bash_completion 2024-01-21 18:07:18 +09:00
Tatsuhiro Tsujikawa
53fa55655d Update manual pages 2024-01-21 18:06:56 +09:00
Tatsuhiro Tsujikawa
a3e943138a Bump package and library versions 2024-01-21 18:03:45 +09:00
Tatsuhiro Tsujikawa
f2fd137715 Update AUTHORS 2024-01-21 17:59:57 +09:00
Tatsuhiro Tsujikawa
830b3b10b0 Merge pull request #2042 from nghttp2/src-avoid-copy
src: Avoid copies
2024-01-21 17:58:18 +09:00
Tatsuhiro Tsujikawa
c5ac2f221d src: Avoid copies 2024-01-21 17:38:55 +09:00
Tatsuhiro Tsujikawa
caaa3fa293 Merge pull request #2041 from nghttp2/bump-ngtcp2
Bump ngtcp2 to v1.2.0
2024-01-21 17:01:51 +09:00
Tatsuhiro Tsujikawa
1a8456e8ff Bump ngtcp2 to v1.2.0 2024-01-21 16:31:02 +09:00
Tatsuhiro Tsujikawa
dd2b3c3f26 Merge pull request #2040 from nghttp2/bump-go-nghttp2
Bump go-nghttp2 and go mod tidy
2024-01-21 16:22:39 +09:00
Tatsuhiro Tsujikawa
4af5fc041a Bump go-nghttp2 and go mod tidy 2024-01-21 15:53:52 +09:00
Tatsuhiro Tsujikawa
0509a14c0f Merge pull request #2039 from nghttp2/bump-neverbleed
Bump neverbleed
2024-01-21 15:42:12 +09:00
Tatsuhiro Tsujikawa
c9c188ceca Bump neverbleed 2024-01-21 13:59:19 +09:00
Tatsuhiro Tsujikawa
3982bde360 Merge pull request #2038 from nghttp2/bump-gomod
Bump go modules
2024-01-21 13:58:42 +09:00
Tatsuhiro Tsujikawa
aca43d8726 Bump go modules 2024-01-21 13:32:01 +09:00
Tatsuhiro Tsujikawa
d4f07f2096 Merge pull request #2037 from nghttp2/ci-add-aws-lc-build
ci: Add aws-lc builds
2024-01-21 13:30:25 +09:00
Tatsuhiro Tsujikawa
a193fb96b8 ci: Add aws-lc builds 2024-01-21 12:48:21 +09:00
Tatsuhiro Tsujikawa
6d94f9ee16 Merge pull request #2036 from nghttp2/revert-nghttpx-h3-reset-stream
Revert "nghttpx: Shutdown h3 stream write if reset by a remote endpoint"
2024-01-18 18:26:55 +09:00
Tatsuhiro Tsujikawa
da35daab51 Revert "nghttpx: Shutdown h3 stream write if reset by a remote endpoint"
This reverts commit e103726f4d.
2024-01-18 18:00:18 +09:00
Tatsuhiro Tsujikawa
48168eacdb Merge pull request #2034 from nghttp2/add-debian-frontend
Specify DEBIAN_FRONTEND=noninteractive
2024-01-15 18:26:03 +09:00
Tatsuhiro Tsujikawa
a27d535f47 Specify DEBIAN_FRONTEND=noninteractive 2024-01-15 18:00:48 +09:00
Tatsuhiro Tsujikawa
3a173dcc1f Merge pull request #2033 from nghttp2/fix-typo
Fix typo
2024-01-15 17:49:46 +09:00
Tatsuhiro Tsujikawa
619dd15e9a Fix typo 2024-01-15 17:27:28 +09:00
Tatsuhiro Tsujikawa
6bdeed14fd Merge pull request #2032 from nghttp2/dependabot/go_modules/github.com/quic-go/quic-go-0.37.7
build(deps): bump github.com/quic-go/quic-go from 0.35.1 to 0.37.7
2024-01-11 00:37:23 +09:00
dependabot[bot]
683c1ab16d build(deps): bump github.com/quic-go/quic-go from 0.35.1 to 0.37.7
Bumps [github.com/quic-go/quic-go](https://github.com/quic-go/quic-go) from 0.35.1 to 0.37.7.
- [Release notes](https://github.com/quic-go/quic-go/releases)
- [Changelog](https://github.com/quic-go/quic-go/blob/master/Changelog.md)
- [Commits](https://github.com/quic-go/quic-go/compare/v0.35.1...v0.37.7)

---
updated-dependencies:
- dependency-name: github.com/quic-go/quic-go
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-10 15:12:00 +00:00
Tatsuhiro Tsujikawa
278b2cd004 Merge pull request #2030 from anthonyalayo/anthonyalayo-patch-cmake-3.5
Update minimum CMake version to 3.5
2024-01-09 17:12:41 +09:00
Anthony Alayo
e2b2a5a8d6 Update minimum CMake version to 3.5 2024-01-07 16:19:46 -08:00
Tatsuhiro Tsujikawa
837f0c67c7 Merge pull request #1996 from hrxi/pr_less_config
Have less stuff in config.h
2024-01-03 15:51:41 +09:00
Tatsuhiro Tsujikawa
fe1b963d38 Merge pull request #2027 from anthonyalayo/anthonyalayo-patch-1
Not finding packages when `ENABLE_LIB_ONLY` is set
2024-01-03 15:30:34 +09:00
Anthony Alayo
3bce84c0a0 Not finding packages when ENABLE_LIB_ONLY is set 2024-01-02 14:54:13 -08:00
hrxi
d002e9631c Don't get type sizes at configure time
This should speed up configuring minimally.
2023-12-29 15:12:43 +01:00
hrxi
1348b850bc <time.h> is a standard header, don't check for it 2023-12-29 15:12:43 +01:00
Tatsuhiro Tsujikawa
4998cfcf29 Merge pull request #2026 from nghttp2/h2load-header-ttfb-fix
H2load header ttfb fix
2023-12-28 14:57:19 +09:00
Tatsuhiro Tsujikawa
49d36209bf Merge pull request #2025 from nghttp2/remove-trailing-whitespace
nghttpx: Remove a trailing whitespace
2023-12-28 14:47:55 +09:00
Tatsuhiro Tsujikawa
d537e16a47 nghttpx: Remove a trailing whitespace 2023-12-28 14:11:34 +09:00
Tatsuhiro Tsujikawa
04a14ee3e2 h2load: Fix bug that ttfb is not recorded if h3 stream has no data 2023-12-27 19:49:27 +09:00
Tatsuhiro Tsujikawa
7209bff091 h2load: Consider all h2 HEADERS when counting bytes and recording ttfb 2023-12-27 19:49:21 +09:00
Tatsuhiro Tsujikawa
05b63f6126 Merge pull request #2024 from nghttp2/app-fix
App fix
2023-12-27 19:33:30 +09:00
Tatsuhiro Tsujikawa
20058af7ae h2load: Ignore 1xx status code 2023-12-27 19:06:19 +09:00
Tatsuhiro Tsujikawa
9ae86f6198 nghttpd: Free SSL_CTX on exit 2023-12-27 19:05:56 +09:00
Tatsuhiro Tsujikawa
ad199fe46d Merge pull request #2023 from nghttp2/nghttpx-set-recv-max-early-data
nghttpx: OpenSSL needs SSL_CTX_set_recv_max_early_data
2023-12-27 17:36:56 +09:00
Tatsuhiro Tsujikawa
e6713e850e nghttpx: OpenSSL needs SSL_CTX_set_recv_max_early_data
OpenSSL needs SSL_CTX_set_recv_max_early_data as well as
SSL_CTX_set_max_early_data to properly set acceptable max early data
size.
2023-12-27 17:06:24 +09:00
Tatsuhiro Tsujikawa
1544abac7a Merge pull request #2022 from nghttp2/cmake-require-openssl111
cmake: Require OpenSSL >= 1.1.1
2023-12-25 18:02:41 +09:00
Tatsuhiro Tsujikawa
87b3e5abec cmake: Require OpenSSL >= 1.1.1 2023-12-25 17:22:05 +09:00
Tatsuhiro Tsujikawa
5ba03f63c6 Merge pull request #2021 from nghttp2/remove-end-to-end-py
Remove end_to_end.py
2023-12-24 16:09:11 +09:00
Tatsuhiro Tsujikawa
684397a675 Merge pull request #2020 from nghttp2/remove-npn
Remove NPN
2023-12-24 16:08:16 +09:00
Tatsuhiro Tsujikawa
361e5d3066 Remove end_to_end.py 2023-12-24 12:38:00 +09:00
Tatsuhiro Tsujikawa
c306390c93 Add nghttp2_select_alpn and deprecate nghttp2_select_next_protocol 2023-12-24 12:29:07 +09:00
Tatsuhiro Tsujikawa
66364abf73 nghttpx: Add --alpn-list and deprecate --npn-list 2023-12-24 12:29:07 +09:00
Tatsuhiro Tsujikawa
5d68d1dc7a h2load: Add --alpn-list and deprecate --npn-list 2023-12-24 12:29:07 +09:00
Tatsuhiro Tsujikawa
6c01530ff3 Remove NPN 2023-12-24 12:29:07 +09:00
Tatsuhiro Tsujikawa
69e15e8371 Merge pull request #2019 from nghttp2/drop-old-openssl-part2
Drop old OpenSSL support part 2
2023-12-24 00:14:08 +09:00
Tatsuhiro Tsujikawa
41857be937 Drop old OpenSSL support part 2
All OpenSSLs that we support have ALPN and SSL_get_server_tmp_key.
2023-12-23 19:49:33 +09:00
Tatsuhiro Tsujikawa
51e9d0c08f Merge pull request #2017 from nghttp2/drop-old-openssl
Drop old OpenSSL support
2023-12-23 16:59:57 +09:00
Tatsuhiro Tsujikawa
841d602fc8 Drop old OpenSSL support
Drop old OpenSSL support and require OpenSSL >= 1.1.1.  For Libressl,
the reasonably recent versions are required.
2023-12-23 16:44:04 +09:00
Tatsuhiro Tsujikawa
35d76d2278 Merge pull request #2016 from nghttp2/boringssl-set-groups-list
boringssl has SSL_CTX_set1_groups_list
2023-12-19 19:30:57 +09:00
Tatsuhiro Tsujikawa
add1bcd1dc boringssl has SSL_CTX_set1_groups_list 2023-12-19 18:52:16 +09:00
Tatsuhiro Tsujikawa
db800f73f1 Merge pull request #2013 from nghttp2/support-aws-lc
src: Support building with aws-lc
2023-12-19 18:19:50 +09:00
Tatsuhiro Tsujikawa
39d093fc45 Merge pull request #2014 from nghttp2/dependabot/github_actions/actions/upload-artifact-4
build(deps): bump actions/upload-artifact from 3 to 4
2023-12-19 17:18:10 +09:00
Tatsuhiro Tsujikawa
a30fb9917e Merge pull request #2015 from nghttp2/dependabot/go_modules/golang.org/x/crypto-0.17.0
build(deps): bump golang.org/x/crypto from 0.15.0 to 0.17.0
2023-12-19 17:10:59 +09:00
dependabot[bot]
4065f9801d build(deps): bump golang.org/x/crypto from 0.15.0 to 0.17.0
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.15.0 to 0.17.0.
- [Commits](https://github.com/golang/crypto/compare/v0.15.0...v0.17.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-18 23:59:31 +00:00
dependabot[bot]
25898e4216 build(deps): bump actions/upload-artifact from 3 to 4
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-18 14:32:07 +00:00
Tatsuhiro Tsujikawa
9354d4a84f src: Support building with aws-lc 2023-12-18 19:50:57 +09:00
Tatsuhiro Tsujikawa
2bbbbe207e Merge pull request #2012 from nghttp2/do-not-detect-openssl3.2-as-quictls
Avoid detecting OpenSSL 3.2 as quictls
2023-12-16 16:45:56 +09:00
Tatsuhiro Tsujikawa
826a2a7b63 Avoid detecting OpenSSL 3.2 as quictls
Previously, SSL_is_quic is used to detect quictls.  But OpenSSL 3.2
has added it as a part of its own QUIC implementation which breaks our
script.  Use SSL_provide_quic_data to correctly identify quictls and
avoid OpenSSL 3.2.
2023-12-16 16:25:12 +09:00
Tatsuhiro Tsujikawa
4bfb33bdb4 Merge pull request #2011 from bwncp/static-msvc
cmake: bring back ENABLE_STATIC_CRT
2023-12-16 15:49:14 +09:00
Bernhard Walle
1b70b8ca3a cmake: bring back ENABLE_STATIC_CRT
While `ENABLE_STATIC_CRT` is still present in CMakeOptions.txt, it has
been removed by 81c199dd. I think this was by accident.

Add it again, otherwise our Windows builds will fail.
2023-12-14 11:44:33 +01:00
Tatsuhiro Tsujikawa
09936f47a0 Merge pull request #2010 from nghttp2/dependabot/github_actions/actions/setup-go-5
build(deps): bump actions/setup-go from 4 to 5
2023-12-14 09:05:17 +09:00
dependabot[bot]
ed9a438b62 build(deps): bump actions/setup-go from 4 to 5
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 4 to 5.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-11 14:13:04 +00:00
Tatsuhiro Tsujikawa
8b26ad55c3 Merge pull request #1997 from hrxi/pr_windows_h
Use `#include <windows.h>` instead of `#include <sysinfoapi.h>`
2023-12-09 16:26:50 +09:00
hrxi
7945e4d398 Use #include <windows.h> instead of #include <sysinfoapi.h>
This is the recommended way of including Windows headers:

https://learn.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-gettickcount64

> Header: sysinfoapi.h (include Windows.h)
2023-12-06 16:54:31 +01:00
Tatsuhiro Tsujikawa
9d030c16fa Merge pull request #2009 from nghttp2/cmake-quic-pkg-vers
cmake: Set minimum quic package versions
2023-11-26 17:21:49 +09:00
Tatsuhiro Tsujikawa
147544bbaa cmake: Set minimum quic package versions 2023-11-26 16:59:43 +09:00
Tatsuhiro Tsujikawa
6cf162b42d Merge pull request #2008 from nghttp2/http3-resp-pri
Use nghttp3_pri_parse_priority added since nghttp3 v1.1.0
2023-11-26 16:59:18 +09:00
Tatsuhiro Tsujikawa
15a9562697 Use nghttp3_pri_parse_priority added since nghttp3 v1.1.0 2023-11-26 16:43:35 +09:00
Tatsuhiro Tsujikawa
21d6bee5aa Merge pull request #2007 from nghttp2/bump-libbpf
Bump libbpf to v1.3.0
2023-11-26 16:42:56 +09:00
Tatsuhiro Tsujikawa
90f765f516 Bump libbpf to v1.3.0 2023-11-26 16:21:49 +09:00
Tatsuhiro Tsujikawa
d5e9b2efef Merge pull request #2006 from nghttp2/bump-ngtcp2
Bump ngtcp2 and nghttp3
2023-11-26 16:21:09 +09:00
Tatsuhiro Tsujikawa
5e81e58f3f Bump ngtcp2 and nghttp3 2023-11-26 15:56:57 +09:00
Tatsuhiro Tsujikawa
ba81277614 Merge pull request #2000 from nghttp2/h2load-fix-ipv6-authority
h2load: Fix IPv6 address in :authority
2023-11-22 19:54:11 +09:00
Tatsuhiro Tsujikawa
124e654af4 h2load: Fix IPv6 address in :authority 2023-11-22 19:37:17 +09:00
Tatsuhiro Tsujikawa
9fb3cffefe Merge pull request #2002 from nghttp2/cmake-remove-itprep
cmake: Remove itprep target
2023-11-22 19:36:41 +09:00
Tatsuhiro Tsujikawa
f4bdc2a23d cmake: Remove itprep target 2023-11-22 19:05:20 +09:00
Tatsuhiro Tsujikawa
c7c8b50443 Merge pull request #2001 from nghttp2/bump-go-pkgs
Bump go packages
2023-11-22 18:55:04 +09:00
Tatsuhiro Tsujikawa
86d12faf4d Bump go packages 2023-11-22 18:11:57 +09:00
Tatsuhiro Tsujikawa
d07a3d2a24 Merge pull request #1995 from nghttp2/check-clock-monotonic
Check whether CLOCK_MONOTONIC is declared
2023-11-06 19:39:06 +09:00
Tatsuhiro Tsujikawa
5d2b75964f Check whether CLOCK_MONOTONIC is declared 2023-11-06 19:07:23 +09:00
Tatsuhiro Tsujikawa
4c0d4f769f Merge pull request #1992 from nghttp2/nghttpx-propagate-backend-priority-to-frontend
nghttpx: Propagate stream priority from backend to frontend
2023-11-05 17:17:37 +09:00
Tatsuhiro Tsujikawa
ebd2555fcc nghttpx: Propagate stream priority from backend to frontend 2023-11-05 16:23:07 +09:00
Tatsuhiro Tsujikawa
9b0114e4c9 Merge pull request #1991 from nghttp2/get-and-parse-extpri
Add API to get and parse RFC 9218 priority
2023-11-05 16:22:38 +09:00
Tatsuhiro Tsujikawa
eaedf85f3e Add API to get and parse RFC 9218 priority 2023-11-05 16:02:05 +09:00
Tatsuhiro Tsujikawa
ce6b91e4de Merge pull request #1990 from nghttp2/prefer-file-name-macro
nghttpx: Prefer __FILE_NAME__ if defined
2023-11-03 18:49:32 +09:00
Tatsuhiro Tsujikawa
6b54081dc6 nghttpx: Prefer __FILE_NAME__ if defined 2023-11-03 18:00:49 +09:00
Tatsuhiro Tsujikawa
ef947bd339 Merge pull request #1989 from nghttp2/update-AX_CXX_COMPILE_STDCXX
Update ax_cxx_compile_stdcxx.m4
2023-11-02 19:35:36 +09:00
Tatsuhiro Tsujikawa
ccd6ac458f Update ax_cxx_compile_stdcxx.m4 2023-11-02 18:40:05 +09:00
Tatsuhiro Tsujikawa
884641836b Merge pull request #1988 from nghttp2/bump-quictls
Bump quictls to 3.1.4+quic
2023-10-29 18:37:53 +09:00
Tatsuhiro Tsujikawa
bd9d408f53 Merge pull request #1987 from nghttp2/bump-clang-format
Bump clang format
2023-10-29 18:00:18 +09:00
Tatsuhiro Tsujikawa
c7dd68015c Bump quictls to 3.1.4+quic 2023-10-29 17:48:20 +09:00
Tatsuhiro Tsujikawa
42579964b9 clang-format 2023-10-29 17:36:27 +09:00
Tatsuhiro Tsujikawa
241379ef2b Bump clang-format to 15 2023-10-29 17:36:27 +09:00
Tatsuhiro Tsujikawa
78d85a459c Merge pull request #1986 from nghttp2/bump-clang
Bump clang to 15
2023-10-29 17:14:41 +09:00
Tatsuhiro Tsujikawa
ddbf49bc7e Bump clang to 15 2023-10-29 16:53:55 +09:00
Tatsuhiro Tsujikawa
2643b6b0c0 Bump package version 2023-10-27 21:39:23 +09:00
Tatsuhiro Tsujikawa
e2bc59bec9 Update manual pages 2023-10-27 20:59:04 +09:00
Tatsuhiro Tsujikawa
28dc67e2c2 Bump package and library versions 2023-10-27 20:59:04 +09:00
Tatsuhiro Tsujikawa
f2beef8675 Update AUTHORS 2023-10-27 20:59:04 +09:00
Tatsuhiro Tsujikawa
c00452b686 Merge pull request #1985 from nghttp2/bump-neverbleed
Bump neverbleed
2023-10-27 20:54:15 +09:00
Tatsuhiro Tsujikawa
09832b9672 Bump neverbleed 2023-10-27 20:02:31 +09:00
Tatsuhiro Tsujikawa
8e01a772ae Merge pull request #1983 from nghttp2/bump-ngtcp2
Bump ngtcp2
2023-10-23 21:44:17 +09:00
Tatsuhiro Tsujikawa
f8670c565c Bump ngtcp2 2023-10-23 21:30:22 +09:00
Tatsuhiro Tsujikawa
d3e7e9554c Merge pull request #1981 from nghttp2/bump-neverbleed
Bump neverbleed
2023-10-20 19:19:45 +09:00
Tatsuhiro Tsujikawa
35e15efd37 Bump neverbleed 2023-10-20 18:51:53 +09:00
Tatsuhiro Tsujikawa
54a5d271d3 Merge pull request #1977 from nghttp2/fix-cygwin-build
Prefer clock_gettime if __CYGWIN__ defined
2023-10-19 00:10:30 +09:00
Tatsuhiro Tsujikawa
ba74559c04 Merge pull request #1979 from nghttp2/fix-win-map-printf-warnings
windows: Fix warnings
2023-10-18 22:02:16 +09:00
Tatsuhiro Tsujikawa
3209a0b6c7 Merge pull request #1978 from nghttp2/configure-cygwin
Configure cygwin
2023-10-18 21:49:31 +09:00
Tatsuhiro Tsujikawa
723f131f76 windows: Fix warnings 2023-10-18 21:39:24 +09:00
Tatsuhiro Tsujikawa
164ebe22bf Do not require strict c++ mode 2023-10-18 21:30:49 +09:00
Tatsuhiro Tsujikawa
ec362f77e4 tests: Define NGHTTP2_STATICLIB 2023-10-18 21:30:33 +09:00
Tatsuhiro Tsujikawa
c7536993cf Prefer clock_gettime if __CYGWIN__ defined 2023-10-18 21:13:57 +09:00
Tatsuhiro Tsujikawa
c16e5ad42e Merge pull request #1973 from nghttp2/nghttpx-stricter-transfer-encoding-check
nghttpx: Stricter transfer-encoding checks
2023-10-17 21:05:27 +09:00
Tatsuhiro Tsujikawa
56b762fa55 Merge pull request #1975 from nghttp2/refactor-char-comp
Refactor character comparison
2023-10-17 20:57:52 +09:00
Tatsuhiro Tsujikawa
0117e7f6fc nghttpx: Stricter transfer-encoding checks 2023-10-17 20:20:24 +09:00
Tatsuhiro Tsujikawa
2a37feb1eb Merge pull request #1974 from nghttp2/integration-servertester-h3
Integration servertester h3
2023-10-17 20:15:47 +09:00
Tatsuhiro Tsujikawa
475c7ed2eb integration: Enable http3 test with cmake 2023-10-17 19:42:37 +09:00
Tatsuhiro Tsujikawa
ee1ca9cd10 integration: Move serverTester http3 function to its own file 2023-10-17 19:42:37 +09:00
Tatsuhiro Tsujikawa
d555153e51 Refactor character comparison 2023-10-17 18:59:34 +09:00
Tatsuhiro Tsujikawa
e14ddc840e Merge pull request #1970 from nghttp2/bump-ngtcp2
Bump ngtcp2
2023-10-15 23:09:36 +09:00
Tatsuhiro Tsujikawa
013e46b138 bbrv2 has been removed 2023-10-15 22:45:23 +09:00
Tatsuhiro Tsujikawa
df5f1ee67b Bump ngtcp2 and nghttp3 2023-10-15 22:45:13 +09:00
Tatsuhiro Tsujikawa
4e9bca7218 Merge pull request #1956 from av223119/master
ngtcp2 has merged BBR and BBRv2 under BBR (fixes issue #1955)
2023-10-15 22:39:32 +09:00
Tatsuhiro Tsujikawa
e8bfe253ae Merge pull request #1969 from nghttp2/update-doc
Update doc
2023-10-15 15:16:31 +09:00
Tatsuhiro Tsujikawa
9585d54b31 We no longer make a release in every month 2023-10-15 12:17:45 +09:00
Tatsuhiro Tsujikawa
b25f9cc7d4 Update security procedure
We sometimes cannot follow the current procedure for some reasons,
therefore remove the relevant portion of text.
2023-10-15 12:17:45 +09:00
Tatsuhiro Tsujikawa
bd92902560 Merge pull request #1967 from vszakats/cmake-fast-warnopt-detection
cmake: speed up warning option detection
2023-10-14 22:40:46 +09:00
Viktor Szakats
10a77ce888 cmake: display WARNCXXFLAGS flags in summary 2023-10-14 10:27:17 +00:00
Viktor Szakats
81c199dd9b cmake: speed up warning option detection 2023-10-14 10:27:17 +00:00
Tatsuhiro Tsujikawa
3b82572b9e Merge pull request #1965 from nghttp2/dependabot/go_modules/golang.org/x/net-0.17.0
Bump golang.org/x/net from 0.15.0 to 0.17.0
2023-10-14 12:14:08 +09:00
dependabot[bot]
9d85ab415f Bump golang.org/x/net from 0.15.0 to 0.17.0
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.15.0 to 0.17.0.
- [Commits](https://github.com/golang/net/compare/v0.15.0...v0.17.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-11 23:10:59 +00:00
Tatsuhiro Tsujikawa
d0358c0063 Merge pull request #1964 from nghttp2/nghttpx-h3-reset-stream
nghttpx: Shutdown h3 stream write if reset by a remote endpoint
2023-10-11 19:48:29 +09:00
Tatsuhiro Tsujikawa
e103726f4d nghttpx: Shutdown h3 stream write if reset by a remote endpoint 2023-10-11 19:13:04 +09:00
Tatsuhiro Tsujikawa
4262c90148 Merge pull request #1963 from nghttp2/fix-build-error
Fix build error when both clock_gettime and GetTickCount64 are available
2023-10-11 17:49:46 +09:00
Tatsuhiro Tsujikawa
bf8f419ca9 Fix build error when both clock_gettime and GetTickCount64 are available 2023-10-11 17:19:05 +09:00
Tatsuhiro Tsujikawa
cccb6ad2c9 Bump package version 2023-10-10 23:10:21 +09:00
Tatsuhiro Tsujikawa
6f41cc7271 Update manual pages 2023-10-10 22:57:01 +09:00
Tatsuhiro Tsujikawa
9b781ca734 Bump package and library versions 2023-10-10 22:57:01 +09:00
Tatsuhiro Tsujikawa
aa0973caf5 Merge pull request #1961 from nghttp2/rework-session-mgmt
Rework session management
2023-10-10 22:55:23 +09:00
Tatsuhiro Tsujikawa
72b4af6143 Rework session management 2023-10-10 22:41:58 +09:00
Tatsuhiro Tsujikawa
d40829b133 Merge pull request #1959 from nghttp2/fix-clang-format
Fix clang-format
2023-10-05 21:37:07 +09:00
Tatsuhiro Tsujikawa
939506b68b Fix clang-format 2023-10-05 20:54:00 +09:00
Tatsuhiro Tsujikawa
e62ef924fb Merge pull request #1958 from nghttp2/nghttpx-fix
nghttpx: Fix bug that --single-process does not work
2023-10-01 15:39:23 +09:00
Tatsuhiro Tsujikawa
8bad736d48 nghttpx: Fix bug that --single-process does not work 2023-10-01 15:18:39 +09:00
Tatsuhiro Tsujikawa
e761014ca5 Merge pull request #1957 from nghttp2/apps-fix
Apps fix
2023-10-01 12:30:44 +09:00
Tatsuhiro Tsujikawa
e6ca4ff173 nghttpd: Do not read too greedy for TLS connection 2023-10-01 11:59:53 +09:00
Tatsuhiro Tsujikawa
62d58bdabc nghttpx: Fix the bug that TLS connection is not rate limited 2023-09-30 22:53:31 +09:00
Alexandr Vlasov
775e4f1bad ngtcp2 has merged BBR and BBRv2 under BBR 2023-09-29 14:07:52 +02:00
Tatsuhiro Tsujikawa
e37fe5543f Merge pull request #1945 from nghttp2/bump-quictls
Bump quictls
2023-09-23 16:25:54 +09:00
Tatsuhiro Tsujikawa
d54750b365 Merge pull request #1953 from nghttp2/nghttpx-field-name-lowercase
nghttpx: Header field name must be lowercase
2023-09-22 11:02:01 +09:00
Tatsuhiro Tsujikawa
8ebe7b10fc nghttpx: Header field name must be lowercase 2023-09-22 10:09:54 +09:00
Tatsuhiro Tsujikawa
5c1b0f261e Merge pull request #1951 from nghttp2/docker-debian12
docker: Bump base image to debian 12
2023-09-15 21:41:10 +09:00
Tatsuhiro Tsujikawa
0866ceffc7 Merge pull request #1947 from nghttp2/dependabot/github_actions/actions/upload-artifact-3
Bump actions/upload-artifact from 1 to 3
2023-09-15 20:41:41 +09:00
Tatsuhiro Tsujikawa
3c6f94258f Merge pull request #1949 from nghttp2/dependabot/github_actions/actions/checkout-4
Bump actions/checkout from 3 to 4
2023-09-15 19:36:46 +09:00
Tatsuhiro Tsujikawa
959a55f95f Merge pull request #1948 from nghttp2/dependabot/github_actions/actions/setup-go-4
Bump actions/setup-go from 3 to 4
2023-09-15 19:12:09 +09:00
dependabot[bot]
7d0d8775c9 Bump actions/setup-go from 3 to 4
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 3 to 4.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-15 09:50:01 +00:00
Tatsuhiro Tsujikawa
52cb8c35c8 Merge pull request #1950 from nghttp2/bump-golang.org/x/net
Bump golang.org/x/net to v0.15.0
2023-09-15 18:48:49 +09:00
Tatsuhiro Tsujikawa
d19bc4bb67 Bump golang.org/x/net to v0.15.0 2023-09-15 18:28:01 +09:00
Tatsuhiro Tsujikawa
1ee16fdeca docker: Bump base image to debian 12 2023-09-15 18:13:39 +09:00
dependabot[bot]
b809beacab Bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-15 08:55:19 +00:00
dependabot[bot]
8cafb048be Bump actions/upload-artifact from 1 to 3
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 1 to 3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v1...v3)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-15 08:55:00 +00:00
Tatsuhiro Tsujikawa
627b2408e5 Merge pull request #1946 from nghttp2/dependabot-actions
Add dependabot to update actions
2023-09-15 17:44:06 +09:00
Tatsuhiro Tsujikawa
0d36a2a050 Add dependabot to update actions 2023-09-15 17:13:09 +09:00
Tatsuhiro Tsujikawa
06da18089f Bump quictls 2023-09-12 18:52:06 +09:00
Tatsuhiro Tsujikawa
19697bd44a Merge pull request #1944 from nghttp2/bump-ngtcp2
Bump ngtcp2
2023-09-12 18:50:02 +09:00
Tatsuhiro Tsujikawa
2e6c8ddd15 Bump ngtcp2 2023-09-06 23:23:57 +09:00
Tatsuhiro Tsujikawa
b7f9853968 Bump package version 2023-09-04 18:32:43 +09:00
Tatsuhiro Tsujikawa
80d05fe917 Merge pull request #1943 from nghttp2/update-dockerfile
Update Dockerfile
2023-09-04 18:27:04 +09:00
Tatsuhiro Tsujikawa
08c472230a Update Dockerfile 2023-09-04 18:11:18 +09:00
Tatsuhiro Tsujikawa
47ecf35737 Update manual pages 2023-09-04 18:04:09 +09:00
Tatsuhiro Tsujikawa
b48355b67e Bump package and library versions 2023-09-03 19:45:03 +09:00
Tatsuhiro Tsujikawa
0f768bdaab Merge pull request #1942 from nghttp2/bump-libbpf
Bump libbpf to v1.2.2
2023-09-03 19:44:37 +09:00
Tatsuhiro Tsujikawa
05f93ca729 Bump libbpf to v1.2.2 2023-09-03 19:26:17 +09:00
Tatsuhiro Tsujikawa
d70f0013d6 Merge pull request #1941 from nghttp2/bump-llhttp
Bump llhttp to 926c982942eb53a13f01c1e9e6b19bd3b196e7dd
2023-09-03 19:25:50 +09:00
Tatsuhiro Tsujikawa
d5cb882e62 Bump llhttp to 926c982942eb53a13f01c1e9e6b19bd3b196e7dd 2023-09-03 19:06:33 +09:00
Tatsuhiro Tsujikawa
2a382a2ce9 Merge pull request #1940 from nghttp2/simplify-unique_ptr-release
nghttpx: Simplify std::unique_ptr get and release
2023-09-03 18:29:37 +09:00
Tatsuhiro Tsujikawa
c13b08f861 nghttpx: Simplify std::unique_ptr get and release 2023-09-03 18:11:53 +09:00
Tatsuhiro Tsujikawa
298f71ce4e Merge pull request #1939 from nghttp2/bump-ngtcp2
Bump ngtcp2 and its dependencies
2023-09-03 15:02:54 +09:00
Tatsuhiro Tsujikawa
4114507587 Bump ngtcp2 and its dependencies 2023-09-03 13:17:39 +09:00
Tatsuhiro Tsujikawa
060d0ac455 Merge pull request #1937 from nghttp2/bump-quictls
Bump quictls
2023-08-05 19:35:12 +09:00
Tatsuhiro Tsujikawa
9a3c345f60 Bump quictls 2023-08-05 18:58:27 +09:00
Tatsuhiro Tsujikawa
98eb01aa3f Merge pull request #1935 from nghttp2/cmsg-data
CMSG_DATA does not necessarily return an aligned pointer
2023-08-02 21:06:45 +09:00
Tatsuhiro Tsujikawa
de47400a48 CMSG_DATA does not necessarily return an aligned pointer 2023-08-02 18:46:39 +09:00
Tatsuhiro Tsujikawa
871cf8e5a2 Merge pull request #1934 from nghttp2/ecn
nghttpx: Rework sending and receiving ECN bits
2023-08-02 18:46:07 +09:00
Tatsuhiro Tsujikawa
6ace578e5b nghttpx: Rework sending and receiving ECN bits
Now ECN is sent along with sendmsg ancillary message.  With this
commit, ECN should work fine with the recent Mac OS.
2023-08-02 17:47:51 +09:00
Tatsuhiro Tsujikawa
7273ec17d3 Merge pull request #1931 from nghttp2/return-void
Return void
2023-07-16 16:15:49 +09:00
Tatsuhiro Tsujikawa
07b69bb06f Make session_after_frame_sent2 return void 2023-07-15 16:27:38 +09:00
Tatsuhiro Tsujikawa
98df5b59e5 frame: Make functions that always succeed return void 2023-07-15 16:15:25 +09:00
Tatsuhiro Tsujikawa
cdfb517528 Make functions that always succeed return void 2023-07-15 15:36:50 +09:00
Tatsuhiro Tsujikawa
b16d4e951e Bump library version due to the patch release 2023-07-14 22:53:52 +09:00
Tatsuhiro Tsujikawa
feb5ff560a Merge pull request #1930 from nghttp2/fix-memory-leak
Fix memory leak
2023-07-14 21:56:30 +09:00
Tatsuhiro Tsujikawa
ce385d3f55 Fix memory leak
This commit fixes memory leak that happens when PUSH_PROMISE or
HEADERS frame cannot be sent, and nghttp2_on_stream_close_callback
fails with a fatal error.  For example, if GOAWAY frame has been
received, a HEADERS frame that opens new stream cannot be sent.

This issue has already been made public via CVE-2023-35945 [1] issued
by envoyproxy/envoy project.  During embargo period, the patch to fix
this bug was accidentally submitted to nghttp2/nghttp2 repository [2].
And they decided to disclose CVE early.  I was notified just 1.5 hours
before disclosure.  I had no time to respond.

PoC described in [1] is quite simple, but I think it is not enough to
trigger this bug.  While it is true that receiving GOAWAY prevents a
client from opening new stream, and nghttp2 enters error handling
branch, in order to cause the memory leak,
nghttp2_session_close_stream function must return a fatal error.
nghttp2 defines 2 fatal error codes:

- NGHTTP2_ERR_NOMEM
- NGHTTP2_ERR_CALLBACK_FAILURE

NGHTTP2_ERR_NOMEM, as its name suggests, indicates out of memory.  It
is unlikely that a process gets short of memory with this simple PoC
scenario unless application does something memory heavy processing.

NGHTTP2_ERR_CALLBACK_FAILURE is returned from application defined
callback function (nghttp2_on_stream_close_callback, in this case),
which indicates something fatal happened inside a callback, and a
connection must be closed immediately without any further action.  As
nghttp2_on_stream_close_error_callback documentation says, any error
code other than 0 or NGHTTP2_ERR_CALLBACK_FAILURE is treated as fatal
error code.  More specifically, it is treated as if
NGHTTP2_ERR_CALLBACK_FAILURE is returned.  I guess that envoy returns
NGHTTP2_ERR_CALLBACK_FAILURE or other error code which is translated
into NGHTTP2_ERR_CALLBACK_FAILURE.

[1] https://github.com/envoyproxy/envoy/security/advisories/GHSA-jfxv-29pc-x22r
[2] https://github.com/nghttp2/nghttp2/pull/1929
2023-07-14 21:37:37 +09:00
Tatsuhiro Tsujikawa
82fc1163c6 Merge pull request #1928 from nghttp2/doc-bump-boringssl
doc: Bump boringssl
2023-07-12 18:06:28 +09:00
Tatsuhiro Tsujikawa
79d2b7f931 doc: Bump boringssl 2023-07-12 17:44:26 +09:00
Tatsuhiro Tsujikawa
4c1f1b0efc Bump package version 2023-07-12 17:25:14 +09:00
Tatsuhiro Tsujikawa
989d69be01 Update manual pages 2023-07-12 17:20:52 +09:00
Tatsuhiro Tsujikawa
2143f46f45 Bump package version 2023-07-12 17:14:02 +09:00
Tatsuhiro Tsujikawa
5bbe86a713 Merge pull request #1927 from nghttp2/bump-macos
Bump macos to 12
2023-07-11 22:54:06 +09:00
Tatsuhiro Tsujikawa
3cc152a9a5 Bump macos to 12 2023-07-11 22:24:19 +09:00
Tatsuhiro Tsujikawa
693372b695 Merge pull request #1926 from nghttp2/bump-llhttp
Bump llhttp to a0e744f850d8101a51284868ffdf745bcfe4fbcc
2023-07-11 22:13:31 +09:00
Tatsuhiro Tsujikawa
43e6a01189 Bump llhttp to a0e744f850d8101a51284868ffdf745bcfe4fbcc 2023-07-11 21:24:11 +09:00
Tatsuhiro Tsujikawa
9dc39859fc Merge pull request #1925 from nghttp2/nghttpx-randomize-initial-quic-pkt-num
nghttpx: Randomize initial QUIC packet number
2023-07-11 21:04:47 +09:00
Tatsuhiro Tsujikawa
5b350acc4c nghttpx: Randomize initial QUIC packet number 2023-07-11 20:47:30 +09:00
Tatsuhiro Tsujikawa
42140d3ade Merge pull request #1923 from nghttp2/bump-ngtcp2
Bump ngtcp2
2023-07-09 22:23:31 +09:00
Tatsuhiro Tsujikawa
dfa2a59f99 Bump ngtcp2 2023-07-09 21:09:43 +09:00
Tatsuhiro Tsujikawa
5c11ad80c0 Merge pull request #1920 from nghttp2/gro
h2load, nghttpx: Add UDP_GRO support
2023-06-25 19:35:13 +09:00
Tatsuhiro Tsujikawa
ee4de34a42 h2load, nghttpx: Add UDP_GRO support 2023-06-25 18:51:57 +09:00
Tatsuhiro Tsujikawa
892a6162ab Merge pull request #1918 from nghttp2/mruby-cross
mruby: Support cross build for autotools
2023-06-24 16:32:40 +09:00
Tatsuhiro Tsujikawa
811b3554a7 mruby: Support cross build for autotools
Support mruby cross build, but now we are unable to specify host C/C++
compiler on cross build.

Do not pass compiler and linker flags because mruby does its own.

Cross build only works with autotools.  It does not work with cmake.
2023-06-11 20:06:06 +09:00
Tatsuhiro Tsujikawa
e7f5940655 Merge pull request #1917 from nghttp2/bump-go-dep
Bump go package dependencies
2023-06-11 13:27:44 +09:00
Tatsuhiro Tsujikawa
e4ad2921e5 Bump go package dependencies 2023-06-11 13:03:34 +09:00
Tatsuhiro Tsujikawa
7872401f73 Merge pull request #1916 from nghttp2/bump-go
Bump go to 1.20
2023-06-11 13:02:50 +09:00
Tatsuhiro Tsujikawa
2277f7cc68 Bump go to 1.20 2023-06-11 12:05:55 +09:00
Tatsuhiro Tsujikawa
2c955ab76b Merge pull request #1915 from nghttp2/fix-build-without-libev
Fix build error without libev
2023-06-08 20:31:41 +09:00
Tatsuhiro Tsujikawa
9fc1f85102 Fix build error without libev
Check libev availability, and guard the usage of libev in util.h.
2023-06-08 19:33:23 +09:00
Tatsuhiro Tsujikawa
2571f78ce7 Bump package version 2023-06-07 19:01:48 +09:00
Tatsuhiro Tsujikawa
ecbb12f609 Update manual pages 2023-06-07 18:44:22 +09:00
Tatsuhiro Tsujikawa
800e379690 Bump package version 2023-06-07 18:33:34 +09:00
Tatsuhiro Tsujikawa
45467a9bc3 Merge pull request #1913 from nghttp2/avoid-copies
Avoid copies
2023-06-05 22:44:28 +09:00
Tatsuhiro Tsujikawa
dc940764d7 Avoid copies 2023-06-05 20:56:51 +09:00
Tatsuhiro Tsujikawa
d53e3728f7 Merge pull request #1912 from nghttp2/bump-libbpf
Bump libbpf to v1.2.0
2023-06-04 19:50:44 +09:00
Tatsuhiro Tsujikawa
7414f030c3 Bump libbpf to v1.2.0 2023-06-04 19:05:05 +09:00
Tatsuhiro Tsujikawa
2674d77519 Merge pull request #1911 from nghttp2/bump-ngtcp2
Bump ngtcp2 and nghttp3
2023-06-04 18:37:28 +09:00
Tatsuhiro Tsujikawa
66bbe52576 Bump ngtcp2 and nghttp3 2023-06-04 17:22:57 +09:00
Tatsuhiro Tsujikawa
5f10d43c6b Merge pull request #1910 from nghttp2/remove-unused-macro-bswap64
Remove unused macro bswap64
2023-05-29 18:54:25 +09:00
Tatsuhiro Tsujikawa
6dec3353ec Remove unused macro bswap64 2023-05-29 17:45:11 +09:00
Tatsuhiro Tsujikawa
5e2bb54ee8 Merge pull request #1907 from nghttp2/avoid-ev_now
Avoid ev_now
2023-05-18 21:15:26 +09:00
Tatsuhiro Tsujikawa
018922b0b6 nghttpx: Avoid ev_now where monotonic clock is required 2023-05-18 19:16:24 +09:00
Tatsuhiro Tsujikawa
288b08e3d8 nghttpd: Avoid ev_now where monotonic clock is required 2023-05-18 19:16:24 +09:00
Tatsuhiro Tsujikawa
dbc607cfcc h2load: Avoid ev_now 2023-05-18 19:16:24 +09:00
Tatsuhiro Tsujikawa
4e2de8808a Merge pull request #1906 from nghttp2/h2load-quic-steady-clock
h2load: Use std::chrono::steady_clock for quic timestamp
2023-05-17 22:29:21 +09:00
Tatsuhiro Tsujikawa
71932baad7 h2load: Use std::chrono::steady_clock for quic timestamp 2023-05-17 21:03:21 +09:00
Tatsuhiro Tsujikawa
483daf3701 Merge pull request #1905 from nghttp2/h2load-fix-http3-upload-stall
h2load: Fix http3 upload stall
2023-05-16 23:20:29 +09:00
Tatsuhiro Tsujikawa
1534cd8cb7 h2load: Fix http3 upload stall 2023-05-16 22:50:07 +09:00
Tatsuhiro Tsujikawa
03496a8a0b Generate PGP signatures for release tar balls 2023-05-11 17:03:06 +09:00
Tatsuhiro Tsujikawa
1a57bf110d Merge pull request #1904 from nghttp2/nghttpx-bpf-error-handling
nghttpx: Consistent error handling and use of high-level API
2023-05-10 19:35:03 +09:00
Tatsuhiro Tsujikawa
5b83573d04 nghttpx: Consistent error handling and use of high-level API 2023-05-10 19:14:10 +09:00
Tatsuhiro Tsujikawa
0a8cac68f2 Bump package version 2023-05-10 18:11:21 +09:00
Tatsuhiro Tsujikawa
ed2ccce0e8 Generate .asc files 2023-05-10 17:27:53 +09:00
Tatsuhiro Tsujikawa
7a0e16510a Update manual pages 2023-05-10 17:26:29 +09:00
Tatsuhiro Tsujikawa
f62b2b23b1 Bump package and library versions 2023-05-10 17:10:42 +09:00
Tatsuhiro Tsujikawa
5e8904e327 Merge pull request #1902 from nghttp2/bump-neverbleed
Bump neverbleed
2023-04-29 21:48:11 +09:00
Tatsuhiro Tsujikawa
26ab7c1475 Bump neverbleed 2023-04-29 21:13:57 +09:00
Tatsuhiro Tsujikawa
e392729d9f Merge pull request #1901 from nghttp2/zerofill-z_stream
Initialize z_stream completely with zeros
2023-04-29 20:56:09 +09:00
Tatsuhiro Tsujikawa
0fbfc48716 Initialize z_stream completely with zeros 2023-04-29 19:27:20 +09:00
Tatsuhiro Tsujikawa
88e03cdaf0 Merge pull request #1900 from nghttp2/nghttpx-send-new-token-on-path-change
nghttpx: Send NEW_TOKEN on path change
2023-04-26 23:30:31 +09:00
Tatsuhiro Tsujikawa
7645ab89bc nghttpx: Send NEW_TOKEN on path change 2023-04-26 23:10:31 +09:00
Tatsuhiro Tsujikawa
4f27509e67 Merge pull request #1899 from nghttp2/bump-ngtcp2
Bump ngtcp2
2023-04-26 21:08:26 +09:00
Tatsuhiro Tsujikawa
7a4e706b44 Bump ngtcp2 2023-04-26 19:10:50 +09:00
Tatsuhiro Tsujikawa
757bc3cbe9 Merge pull request #1898 from nghttp2/sfparse
Import ngtcp2/sfparse, Structured Field Values parser
2023-04-22 18:22:56 +09:00
Tatsuhiro Tsujikawa
2ee33fe8cd Import ngtcp2/sfparse, Structured Field Values parser 2023-04-22 17:42:12 +09:00
Tatsuhiro Tsujikawa
cc1402bf44 Merge pull request #1897 from nghttp2/lazy-initialize-map-table
Initialize map table lazily
2023-04-22 17:31:44 +09:00
Tatsuhiro Tsujikawa
70690ce010 Initialize map table lazily 2023-04-22 17:04:52 +09:00
Tatsuhiro Tsujikawa
56fcb73cc4 Merge pull request #1896 from nghttp2/msvc-build-check
Msvc build check
2023-04-21 18:42:46 +09:00
Tatsuhiro Tsujikawa
84eecc015c Fix implicit conversion warnings 2023-04-21 18:02:50 +09:00
Tatsuhiro Tsujikawa
4bb4ff06e3 Fix function signature 2023-04-21 18:02:33 +09:00
Tatsuhiro Tsujikawa
8610758e14 Include stdio.h to workaround error due to legacy CUnit snprintf macro 2023-04-21 17:46:06 +09:00
Tatsuhiro Tsujikawa
caf9d3abd5 Run msvc build check 2023-04-21 17:42:54 +09:00
Tatsuhiro Tsujikawa
51b0288f5d Merge pull request #1892 from nghttp2/nghttpx-h3-write-event
nghttpx: write watcher should only be started upon blocking write
2023-03-25 19:07:14 +09:00
Tatsuhiro Tsujikawa
7fb488be15 nghttpx: write watcher should only be started upon blocking write 2023-03-25 18:36:35 +09:00
Tatsuhiro Tsujikawa
251d3f8743 Merge pull request #1891 from nghttp2/bump-ngtcp2
Bump ngtcp2 to v0.14.0
2023-03-25 18:35:53 +09:00
Tatsuhiro Tsujikawa
3676eb91e3 Bump ngtcp2 to v0.14.0 2023-03-25 17:35:59 +09:00
Tatsuhiro Tsujikawa
edfc6a8530 Merge pull request #1888 from nghttp2/fix-macos-setup
Add missing if condition to MacOS setup
2023-03-16 19:51:49 +09:00
Tatsuhiro Tsujikawa
448c68ef01 Add missing if condition to MacOS setup 2023-03-16 19:31:41 +09:00
Tatsuhiro Tsujikawa
7efbcfecff Merge pull request #1887 from nghttp2/add-verify_hostname-tests
Add verify_hostname tests
2023-03-16 00:26:14 +09:00
Tatsuhiro Tsujikawa
de743aad4a Add verify_hostname tests 2023-03-15 22:47:40 +09:00
Tatsuhiro Tsujikawa
c460afc2d9 Merge pull request #1886 from nghttp2/fix-compile-errors
Fix compile errors with clang-15
2023-03-15 22:21:58 +09:00
Tatsuhiro Tsujikawa
c03cd59274 Fix compile errors with clang-15 2023-03-15 21:57:45 +09:00
Tatsuhiro Tsujikawa
83993b1dbf Merge pull request #1885 from nghttp2/nghttpx-fix-numeric-hostname-verify
nghttpx: Fix numeric hostname verification
2023-03-15 21:56:54 +09:00
Tatsuhiro Tsujikawa
cc14400096 nghttpx: Fix numeric hostname verification 2023-03-15 20:54:56 +09:00
Tatsuhiro Tsujikawa
ef7bb8ef9f Merge pull request #1881 from nghttp2/nghttpx-fix-heap-use-after-free
nghttpx: Fix heap-use-after-free
2023-03-11 12:07:50 +09:00
Tatsuhiro Tsujikawa
bc6814eb5b nghttpx: Fix heap-use-after-free
Fix heap-use-after-free introduced by
ddb667e8bf.
2023-03-11 11:51:08 +09:00
Tatsuhiro Tsujikawa
b8cb6efb37 Merge pull request #1880 from nghttp2/nghttpx-tweak-worker-process-handling
Nghttpx tweak worker process handling
2023-03-11 10:02:09 +09:00
Tatsuhiro Tsujikawa
83af9b504b nghttpx: Wait for new worker process to be ready
Wait for new worker process to be ready before sending graceful
shutdown event to the existing worker processes to avoid down time
during configuration reload.
2023-03-10 22:27:57 +09:00
Tatsuhiro Tsujikawa
ddb667e8bf nghttpx: Signal watcher should be global, not per WorkerProcess 2023-03-10 17:12:40 +09:00
Tatsuhiro Tsujikawa
704153e4cb nghttpx: Wait for all worker processes to stop before quit
When quitting, wait for all worker processes to stop.  Previously, we
just exit the event loop when the last process exits.  But the because
of the bug, it does not work as intended.
2023-03-10 16:34:40 +09:00
Tatsuhiro Tsujikawa
39f6c08187 nghttpx: Update LogConfig::pid on fork 2023-03-10 16:30:32 +09:00
Tatsuhiro Tsujikawa
7628879e79 Merge pull request #1879 from nghttp2/workflow-permissions
Set workflow permissions
2023-03-08 19:07:45 +09:00
Tatsuhiro Tsujikawa
20173a59f0 Set workflow permissions 2023-03-08 18:27:03 +09:00
Tatsuhiro Tsujikawa
1e47a1984d Merge pull request #1877 from nghttp2/sphinx-doc-enum
sphinx-doc understands :enum:
2023-03-06 17:08:47 +09:00
Tatsuhiro Tsujikawa
14268ccbaa sphinx-doc understands :enum: 2023-03-06 16:52:57 +09:00
Tatsuhiro Tsujikawa
14cc308d53 Merge pull request #1874 from nghttp2/nghttpx-llhttp-resume-after-upgrade
nghttpx: Fix bug that causes 400 response after upgrade failure
2023-02-26 23:22:13 +09:00
Tatsuhiro Tsujikawa
bb024e3d82 nghttpx: Fix bug that causes 400 response after upgrade failure 2023-02-26 23:03:41 +09:00
Tatsuhiro Tsujikawa
1c62a2a923 Merge pull request #1873 from nghttp2/bump-go-mod
Bump go modules
2023-02-26 22:24:23 +09:00
Tatsuhiro Tsujikawa
094c60db89 Bump go modules 2023-02-26 21:58:27 +09:00
Tatsuhiro Tsujikawa
dc74b50cc9 Merge pull request #1872 from nghttp2/bump-mruby
Bump mruby to 3.2.0
2023-02-26 19:31:30 +09:00
Tatsuhiro Tsujikawa
5cd87eae22 Bump mruby to 3.2.0 2023-02-26 19:12:26 +09:00
Tatsuhiro Tsujikawa
a1c7e507aa Merge pull request #1871 from nghttp2/nghttpx-h3-graceful-shutdown
nghttpx: Gracefully shutdown HTTP/3 connection
2023-02-25 00:22:19 +09:00
Tatsuhiro Tsujikawa
9526e2ff80 nghttpx: Gracefully shutdown HTTP/3 connection 2023-02-24 23:38:29 +09:00
Tatsuhiro Tsujikawa
b400bb5c15 Merge pull request #1870 from nghttp2/bump-nghttp3
Bump nghttp3 to v0.9.0
2023-02-24 21:59:51 +09:00
Tatsuhiro Tsujikawa
89cb55a62f Bump nghttp3 to v0.9.0 2023-02-24 21:42:12 +09:00
Tatsuhiro Tsujikawa
878de84feb Merge pull request #1869 from nghttp2/build-cache
Cache dependencies to speed up workflow builds
2023-02-24 20:37:36 +09:00
Tatsuhiro Tsujikawa
9862a86b31 Cache dependencies to speed up workflow builds 2023-02-24 19:39:59 +09:00
Tatsuhiro Tsujikawa
1eb91d2e50 Merge pull request #1867 from nghttp2/bump-go-mod
Bump golang.org/x/net to v0.7.0
2023-02-23 21:25:56 +09:00
Tatsuhiro Tsujikawa
50fbb76454 Bump golang.org/x/net to v0.7.0 2023-02-23 19:41:43 +09:00
Tatsuhiro Tsujikawa
5cb908b625 Bump package version 2023-02-13 21:18:34 +09:00
Tatsuhiro Tsujikawa
be0491294a Update manual pages 2023-02-13 20:59:29 +09:00
Tatsuhiro Tsujikawa
17d54064d8 Bump package version 2023-02-12 19:41:38 +09:00
Tatsuhiro Tsujikawa
d8fb86a987 Update AUTHORS 2023-02-12 19:41:38 +09:00
Tatsuhiro Tsujikawa
5967358697 Merge pull request #1862 from nghttp2/bump-quictls
Bump quictls
2023-02-12 19:35:04 +09:00
Tatsuhiro Tsujikawa
7041b41afa Bump quictls 2023-02-12 19:05:13 +09:00
Tatsuhiro Tsujikawa
c597e928f1 Merge pull request #1861 from nghttp2/simplify-uniform_int_distribution
Simplify std::uniform_int_distribution call
2023-02-11 18:50:07 +09:00
Tatsuhiro Tsujikawa
79f261edf0 Simplify std::uniform_int_distribution call 2023-02-11 18:23:06 +09:00
Tatsuhiro Tsujikawa
b082a6b3dd Merge pull request #1860 from nghttp2/bump-llhttp
Bump llhttp to f2e1914b6c59f5cd88f492abc9d8af6be246bc85
2023-02-10 22:52:01 +09:00
Tatsuhiro Tsujikawa
64b97acc33 Bump llhttp to f2e1914b6c59f5cd88f492abc9d8af6be246bc85 2023-02-10 22:23:24 +09:00
Tatsuhiro Tsujikawa
936898453d Merge pull request #1859 from nghttp2/bump-libbpf
Bump libbpf to v1.1.0
2023-02-10 21:46:14 +09:00
Tatsuhiro Tsujikawa
62802342aa Bump libbpf to v1.1.0 2023-02-10 21:19:52 +09:00
Tatsuhiro Tsujikawa
93118d76f4 Merge pull request #1858 from nghttp2/bump-ngtcp2
Bump ngtcp2 to v0.13.1
2023-02-09 23:02:11 +09:00
Tatsuhiro Tsujikawa
95b2f94671 Bump ngtcp2 to v0.13.1 2023-02-09 22:32:34 +09:00
Tatsuhiro Tsujikawa
4434fcbde1 Merge pull request #1857 from nghttp2/nghttpx-fix-tls-write-stall
nghttpx: Fix bug that stalls TLS write
2023-02-09 21:31:15 +09:00
Tatsuhiro Tsujikawa
cbcfdaa655 nghttpx: Fix bug that stalls TLS write 2023-02-06 22:27:22 +09:00
Tatsuhiro Tsujikawa
10d52f5a27 Merge pull request #1854 from nghttp2/bump-ngtcp2-dockerfile
Bump ngtcp2 in Dockerfile to v0.13.0
2023-02-02 16:06:50 +09:00
Tatsuhiro Tsujikawa
92c7593cff Bump ngtcp2 in Dockerfile to v0.13.0 2023-01-31 19:18:35 +09:00
Tatsuhiro Tsujikawa
0dbcf9c04d Merge pull request #1853 from nghttp2/bump-ngtcp2
Bump ngtcp2 to v0.13.0
2023-01-31 18:30:04 +09:00
Tatsuhiro Tsujikawa
f494e88611 Bump ngtcp2 to v0.13.0 2023-01-31 18:00:19 +09:00
Tatsuhiro Tsujikawa
0ba1718e40 Merge pull request #1852 from nghttp2/remove-sphinx-theme-bundle
Remove sphinx theme bundle
2023-01-30 22:18:47 +09:00
Tatsuhiro Tsujikawa
5c5d978abe Remove sphinx theme bundle
Remove sphinx theme bundle, and rely on the locally installed theme
(e.g., `pip install sphinx_rtd_theme`).
2023-01-30 21:24:11 +09:00
Tatsuhiro Tsujikawa
a6b0eeacc9 Merge pull request #1851 from nghttp2/bump-neverbleed
Bump neverbleed
2023-01-29 20:57:28 +09:00
Tatsuhiro Tsujikawa
6993e63ac4 Bump neverbleed 2023-01-29 19:36:57 +09:00
Tatsuhiro Tsujikawa
aea182c5a4 Merge pull request #1850 from nghttp2/fix-path-component-resolution
src: Fix path component resolution
2023-01-29 17:55:43 +09:00
Tatsuhiro Tsujikawa
c78aebf68f src: Fix path component resolution
Fix path component resolution when '.' is involved.
2023-01-29 16:20:05 +09:00
Tatsuhiro Tsujikawa
05b7929019 Merge pull request #1849 from nghttp2/remove-unused-function
Remove unused function
2022-12-26 21:31:57 +09:00
Tatsuhiro Tsujikawa
5b665b3e48 Merge pull request #1848 from nghttp2/remove-src-includes
Remove src/includes
2022-12-26 21:20:51 +09:00
Tatsuhiro Tsujikawa
5089dcd3f2 Merge pull request #1847 from nghttp2/bump-zlib
Bump zlib to 1.2.13
2022-12-26 20:52:27 +09:00
Tatsuhiro Tsujikawa
b52f96d38a Remove unused function 2022-12-26 19:49:28 +09:00
Tatsuhiro Tsujikawa
2ca0bb0a2f Remove src/includes 2022-12-26 19:45:33 +09:00
Tatsuhiro Tsujikawa
fa3d1bfc8f Bump zlib to 1.2.13 2022-12-26 19:40:26 +09:00
Tatsuhiro Tsujikawa
30bb4eb8f2 Merge pull request #1846 from nghttp2/remove-python
Remove deprecated python bindings
2022-12-26 19:38:53 +09:00
Tatsuhiro Tsujikawa
b4cb3b0090 Remove deprecated python bindings 2022-12-26 17:06:36 +09:00
Tatsuhiro Tsujikawa
2c62572ae1 Merge pull request #1844 from nghttp2/remove-libnghttp2_asio
Remove deprecated libnghttp2_asio
2022-12-26 17:05:44 +09:00
Tatsuhiro Tsujikawa
42904a586c Merge pull request #1845 from nghttp2/minor-cleanup
Minor cleanup
2022-12-25 18:00:51 +09:00
Tatsuhiro Tsujikawa
8538e1ec42 Minor cleanup 2022-12-25 17:28:08 +09:00
Tatsuhiro Tsujikawa
e6d608b522 Remove deprecated libnghttp2_asio 2022-12-24 18:41:49 +09:00
Tatsuhiro Tsujikawa
00a33281be Merge pull request #1843 from nghttp2/bump-ngtcp2
Bump ngtcp2 dependencies
2022-12-24 17:35:35 +09:00
Tatsuhiro Tsujikawa
7c7ba0586e Bump ngtcp2 dependencies 2022-12-24 16:35:11 +09:00
Tatsuhiro Tsujikawa
252c425ea6 Merge pull request #1837 from fredizzimo/fix-libevent-component
Don't use the unofficial libevent component
2022-12-23 21:35:54 +09:00
Fred Sundvik
525630ae7a Don't use the unofficial libevent component 2022-12-07 16:36:58 +02:00
Tatsuhiro Tsujikawa
5195e8be6a Merge pull request #1835 from nghttp2/integration-lint
integration: Fix lint errors
2022-11-24 19:05:51 +09:00
Tatsuhiro Tsujikawa
358c15e015 integration: Fix lint errors 2022-11-20 19:14:27 +09:00
Tatsuhiro Tsujikawa
b5b18699cb Merge pull request #1834 from nghttp2/integration-http-status-code
integration: Use HTTP status code constants
2022-11-20 19:12:43 +09:00
Tatsuhiro Tsujikawa
44e4475a31 integration: Use HTTP status code constants 2022-11-20 17:46:46 +09:00
Tatsuhiro Tsujikawa
a945c057c5 Merge pull request #1833 from nghttp2/integration-h3
Integration h3
2022-11-20 17:46:17 +09:00
Tatsuhiro Tsujikawa
babeddb649 nghttpx: HTTPS redirect should not happen with HTTP/3 upstream 2022-11-20 17:03:30 +09:00
Tatsuhiro Tsujikawa
2d790edac5 integration: Add http3 test which verifies chunked encoding ends prematurely 2022-11-20 16:55:58 +09:00
Tatsuhiro Tsujikawa
2bef60a6f4 integration: Add http3 test which verifies response ends before request 2022-11-20 16:53:34 +09:00
Tatsuhiro Tsujikawa
17e3bb4ec5 integration: Add http3 mruby tests 2022-11-20 16:35:54 +09:00
Tatsuhiro Tsujikawa
5e1b1a0883 integration: Add http3 affinity cookie test 2022-11-20 16:31:24 +09:00
Tatsuhiro Tsujikawa
5b0cbb4892 integration: Add http3 HTTPS redirect test 2022-11-20 16:28:16 +09:00
Tatsuhiro Tsujikawa
17a5ba4969 integration: Add http3 response content-length test 2022-11-20 15:12:19 +09:00
Tatsuhiro Tsujikawa
20d95edc57 integration: Add http3 via tests 2022-11-20 15:04:01 +09:00
Tatsuhiro Tsujikawa
126b5f9d2b Add the missing file 2022-11-20 15:03:41 +09:00
Tatsuhiro Tsujikawa
46602a961d Bump package version 2022-11-13 15:59:20 +09:00
Tatsuhiro Tsujikawa
00399695cb Update manual pages 2022-11-13 14:51:12 +09:00
Tatsuhiro Tsujikawa
f8e014de40 Bump package and library versions 2022-11-13 14:40:42 +09:00
Tatsuhiro Tsujikawa
172159305c Update AUTHORS 2022-11-13 14:39:10 +09:00
Tatsuhiro Tsujikawa
aa607875b0 Merge pull request #1832 from nghttp2/h3-integration-test
Add http3 integration test
2022-11-13 10:58:10 +09:00
Tatsuhiro Tsujikawa
954d49f7a0 Add http3 integration test 2022-11-12 19:39:25 +09:00
Tatsuhiro Tsujikawa
5929aeb47c Merge pull request #1831 from nghttp2/bump-ngtcp2
Bump ngtcp2
2022-11-12 18:05:29 +09:00
Tatsuhiro Tsujikawa
b990df49d6 Bump boringssl 2022-11-12 16:46:36 +09:00
Tatsuhiro Tsujikawa
2aa9d61ae2 Bump ngtcp2 to v0.11.0 2022-11-12 16:46:24 +09:00
Tatsuhiro Tsujikawa
0fb2c6f4f4 Merge pull request #1830 from nghttp2/bump-libbpf
Bump libbpf to v1.0.1
2022-11-12 16:43:19 +09:00
Tatsuhiro Tsujikawa
1c9817af0d Bump libbpf to v1.0.1 2022-11-12 16:13:03 +09:00
Tatsuhiro Tsujikawa
bea6cae0d5 Merge pull request #1829 from nghttp2/disable-python-bindings
Disable python bindings
2022-11-11 19:29:56 +09:00
Tatsuhiro Tsujikawa
804ce364bf Disable python bindings properly by default
Disable python bindings properly by default.  This commit amends
b63705384a.
2022-11-11 18:55:01 +09:00
Tatsuhiro Tsujikawa
83d7fb7fdd Revert "workflow: Disable python bindings"
This reverts commit ddd40bae06.
2022-11-11 18:52:44 +09:00
Tatsuhiro Tsujikawa
266a3d84e4 Merge pull request #1828 from nghttp2/bump-openssl
Bump OpenSSL versions
2022-11-09 18:57:52 +09:00
Tatsuhiro Tsujikawa
e91de24be6 Merge pull request #1827 from nghttp2/bump-llhttp
Bump llhttp
2022-11-09 18:48:52 +09:00
Tatsuhiro Tsujikawa
b062e9f66c Bump OpenSSL versions 2022-11-09 18:05:55 +09:00
Tatsuhiro Tsujikawa
f56448be60 Deal with llhttp incompatible changes 2022-11-09 18:05:14 +09:00
Tatsuhiro Tsujikawa
17aa7b6a61 Bump llhttp to 85dd446419966cafb5a7fdd5031e3113a0768e65 2022-11-09 18:04:54 +09:00
Tatsuhiro Tsujikawa
971d3552c7 Merge pull request #1826 from nghttp2/workflow-disable-python-bindings
workflow: Disable python bindings
2022-11-09 17:37:37 +09:00
Tatsuhiro Tsujikawa
ddd40bae06 workflow: Disable python bindings
Disable python bindings because it has been deprecated, and mac OS
build with python binding is broken.
2022-11-09 16:54:19 +09:00
Tatsuhiro Tsujikawa
cb11cfcd2c Merge pull request #1822 from vszakats/warnfix
add casts to silence implicit conversion warnings
2022-10-20 20:50:51 +09:00
Viktor Szakats
5eed83ee17 add casts to silence implicit conversion warnings
Fixes #1821
2022-10-19 11:57:31 +00:00
Tatsuhiro Tsujikawa
11632d3c2c Merge pull request #1819 from nghttp2/bump-ngtcp2
Bump ngtcp2
2022-10-18 22:35:47 +09:00
Tatsuhiro Tsujikawa
8c70d9c2e1 Bump ngtcp2 2022-10-18 21:11:14 +09:00
Tatsuhiro Tsujikawa
3b21fbaf03 Merge pull request #1818 from nghttp2/fix-nghttpx-affinity-cookie-stickiness
nghttpx: Fix affinity-cookie-stickiness parameter handling
2022-10-18 17:45:25 +09:00
Tatsuhiro Tsujikawa
5abafb4268 nghttpx: Fix affinity-cookie-stickiness parameter handling
Fix affinity-cookie-stickiness backend parameter handling.
Previously, if 3 backend options are used for the same pattern, and
the first one does not have affinity-cookie-stickiness, and the rest
of them have affinity-cookie-stickiness=strict, nghttpx wrongly
determines that they have inconsistent configurations.
2022-10-18 17:17:44 +09:00
Tatsuhiro Tsujikawa
2f71f5c3c9 Merge pull request #1816 from nghttp2/update-doc
Update doc
2022-10-16 16:49:06 +09:00
Tatsuhiro Tsujikawa
3f65ab7871 Update doc
Remove outdated text
2022-10-16 16:09:43 +09:00
Tatsuhiro Tsujikawa
8e120de5bd Merge pull request #1814 from nghttp2/workflow-bump-compilers
Workflow bump compilers
2022-10-04 21:47:39 +09:00
Tatsuhiro Tsujikawa
8a355db8d9 Fix compile error with gcc-12 2022-10-04 17:58:15 +09:00
Tatsuhiro Tsujikawa
93f1096de3 Merge pull request #1813 from nghttp2/test-fix-tz
Fix test failure on Linux if tz database is not available
2022-10-04 17:48:32 +09:00
Tatsuhiro Tsujikawa
f190afd0c0 Merge pull request #1812 from nghttp2/update-ubuntu-packages
Update Ubuntu packages based on Ubuntu 22.04
2022-10-04 17:19:54 +09:00
Tatsuhiro Tsujikawa
ebef6b5ced workflow: Bump compilers 2022-10-04 17:12:15 +09:00
Tatsuhiro Tsujikawa
6c45e943b0 Merge pull request #1811 from nghttp2/disable-python
Disable python bindings by default because it has been deprecated
2022-10-04 17:08:40 +09:00
Tatsuhiro Tsujikawa
61caf66f1b Fix test failure on Linux if tz database is not available 2022-10-04 16:47:51 +09:00
Tatsuhiro Tsujikawa
c56cda058e Update Ubuntu packages based on Ubuntu 22.04 2022-10-04 16:07:53 +09:00
Tatsuhiro Tsujikawa
b63705384a Disable python bindings by default because it has been deprecated 2022-10-04 16:04:43 +09:00
Tatsuhiro Tsujikawa
7380ff3551 Merge pull request #1809 from nghttp2/update-doc-h2-rfc
Update README to mention new HTTP/2 RFC
2022-10-02 12:53:13 +09:00
Tatsuhiro Tsujikawa
bfba6764e0 Update README to mention new HTTP/2 RFC 2022-10-02 12:18:41 +09:00
Tatsuhiro Tsujikawa
634e65df64 Merge pull request #1807 from nghttp2/nghttpx-add-missing-exit
nghttpx: Add missing DIE()
2022-09-27 23:13:25 +09:00
Tatsuhiro Tsujikawa
011fbf7f10 nghttpx: Add missing DIE() 2022-09-27 22:23:13 +09:00
Tatsuhiro Tsujikawa
0363606924 Merge pull request #1806 from nghttp2/update-android-build-doc
Update android build documentation
2022-09-26 17:50:42 +09:00
Tatsuhiro Tsujikawa
40c7922386 Update android build documentation 2022-09-26 17:12:03 +09:00
Tatsuhiro Tsujikawa
958d9ac63b Merge pull request #1805 from nghttp2/dockerfile-android-improvements
Dockerfile android improvements
2022-09-26 17:05:59 +09:00
Tatsuhiro Tsujikawa
c06f1e9974 Remove --with-xml-prefix 2022-09-26 16:24:53 +09:00
Tatsuhiro Tsujikawa
d3381233b1 Do not create OpenSSL shared library 2022-09-26 16:24:53 +09:00
Tatsuhiro Tsujikawa
6d88da58f1 PATH is required by OpenSSL only 2022-09-26 16:24:53 +09:00
Tatsuhiro Tsujikawa
77449a9477 Merge pull request #1804 from nghttp2/update-dockerfile-android
Bump NDK and others to the latest
2022-09-26 00:06:18 +09:00
Tatsuhiro Tsujikawa
116feb4a8c Bump NDK and others to the latest
The latest nghttp2 release version cannot be built with the latest
NDK.  The nghttp2 version in Dockerfile points to master for now.
2022-09-25 23:23:48 +09:00
Tatsuhiro Tsujikawa
dd63d1df42 Merge pull request #1802 from PufferBlue/patch-1
Update dependency versions for Dockerfile.android
2022-09-25 21:29:09 +09:00
PufferOverflow
c47fa08b40 Update dependency versions for Dockerfile.android 2022-09-23 10:33:56 +08:00
Tatsuhiro Tsujikawa
4bfd802937 Bump package version 2022-09-21 17:21:01 +09:00
Tatsuhiro Tsujikawa
87fef4ab71 Update manual pages 2022-09-21 16:55:07 +09:00
Tatsuhiro Tsujikawa
844af88dc1 Bump package and library versions 2022-09-21 16:47:56 +09:00
Tatsuhiro Tsujikawa
2f6ebfdf8c Update AUTHORS 2022-09-21 16:45:44 +09:00
Tatsuhiro Tsujikawa
25858d8ada Merge pull request #1800 from nghttp2/bump-ngtcp2
Bump ngtcp2
2022-09-20 18:28:51 +09:00
Tatsuhiro Tsujikawa
11d1f95412 Bump ngtcp2 2022-09-20 17:46:11 +09:00
Tatsuhiro Tsujikawa
931adb146b Merge pull request #1799 from nghttp2/dyn-dns-family
nghttpx: Respect backend-address-family on dynamic DNS lookup
2022-09-15 19:45:09 +09:00
Tatsuhiro Tsujikawa
6a513dc9fd nghttpx: Respect backend-address-family on dynamic DNS lookup 2022-09-15 19:11:13 +09:00
Tatsuhiro Tsujikawa
f13cff01bb Merge pull request #1798 from nghttp2/bump-libbpf
Bump libbpf to v1.0.0
2022-09-15 19:10:22 +09:00
Tatsuhiro Tsujikawa
2608333ce5 Bump libbpf to v1.0.0 2022-09-15 18:29:07 +09:00
Tatsuhiro Tsujikawa
9f5bf5c7dd Merge pull request #1792 from nghttp2/option-no-rfc9113-ltws-validation
Option no rfc9113 ltws validation
2022-09-07 17:08:04 +09:00
Tatsuhiro Tsujikawa
eb06e33e38 Add nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation 2022-09-07 16:34:12 +09:00
Tatsuhiro Tsujikawa
a94d2de89a Check leading white spaces in :protocol 2022-09-07 16:32:20 +09:00
Tatsuhiro Tsujikawa
921b4d027a Merge pull request #1791 from nghttp2/bump-ngtcp2
Bump ngtcp2
2022-09-06 20:55:12 +09:00
Tatsuhiro Tsujikawa
026ff48edb Bump ngtcp2 2022-09-01 22:06:41 +09:00
Tatsuhiro Tsujikawa
1340b296dd Merge pull request #1787 from heitbaum/patch-1
Fix typographic error
2022-08-29 21:22:56 +09:00
Rudi Heitbaum
fc5a020bc6 Fix typographic error 2022-08-29 22:05:58 +10:00
Tatsuhiro Tsujikawa
f919cf1a8e Bump package version 2022-08-22 21:10:20 +09:00
Tatsuhiro Tsujikawa
08676d23f9 Update manual pages 2022-08-22 20:49:37 +09:00
Tatsuhiro Tsujikawa
28fa90811c Bump package and library versions 2022-08-22 20:42:14 +09:00
Tatsuhiro Tsujikawa
56f39b30ce Update AUTHORS 2022-08-22 19:40:15 +09:00
Tatsuhiro Tsujikawa
df000cd01b Merge pull request #1784 from nghttp2/fix-covscan-errors
Fix errors reported by coverity scan
2022-08-22 19:37:29 +09:00
Tatsuhiro Tsujikawa
47b990f508 Fix errors reported by coverity scan 2022-08-22 19:06:35 +09:00
Tatsuhiro Tsujikawa
68ea085535 Merge pull request #1783 from nghttp2/bump-libbpf
Bump libbpf
2022-08-22 18:58:37 +09:00
Tatsuhiro Tsujikawa
eb397721be Bump libbpf 2022-08-22 18:27:38 +09:00
Tatsuhiro Tsujikawa
c3fa77158a Merge pull request #1782 from nghttp2/embed-km-id-in-token
nghttpx: Embed km_id in a regular token
2022-08-22 17:46:52 +09:00
Tatsuhiro Tsujikawa
7c0649d466 nghttpx: Embed km_id in a regular token 2022-08-21 23:34:32 +09:00
Tatsuhiro Tsujikawa
f02f9ff50c Merge pull request #1781 from nghttp2/token-dcidlen
nghttpx: Regular token does not require server issued DCID
2022-08-21 23:01:27 +09:00
Tatsuhiro Tsujikawa
31be334660 nghttpx: Regular token does not require server issued DCID 2022-08-21 22:40:10 +09:00
Tatsuhiro Tsujikawa
9d265e8bb8 Merge pull request #1780 from nghttp2/bump-ngtcp2
Bump ngtcp2 and nghttp3
2022-08-21 20:53:04 +09:00
Tatsuhiro Tsujikawa
1aa97d5d2c Bump ngtcp2 and nghttp3 2022-08-21 18:25:08 +09:00
Tatsuhiro Tsujikawa
42394e3342 Merge pull request #1779 from nghttp2/bump-boringssl
Bump boringssl
2022-08-20 11:36:27 +09:00
Tatsuhiro Tsujikawa
1bc1374d0c Bump boringssl 2022-08-20 11:16:44 +09:00
Tatsuhiro Tsujikawa
f2c793c75b clang-format 2022-08-10 16:57:01 +09:00
Tatsuhiro Tsujikawa
1bb4877976 Merge pull request #1770 from DavidKorczynski/dav-fuzz-1
fuzz: add frames fuzzer
2022-08-10 16:56:10 +09:00
David Korczynski
651f3bfce2 cleanup 2022-08-09 15:34:04 +01:00
Tatsuhiro Tsujikawa
8a026e18f5 clang-format fuzz 2022-08-09 21:01:42 +09:00
Tatsuhiro Tsujikawa
5164745ff9 Merge pull request #1771 from DavidKorczynski/dav-fuzz-2
fuzz: add extended fuzzer using FuzzedDataProvider
2022-08-09 20:59:50 +09:00
Tatsuhiro Tsujikawa
179ecf7ccd Merge pull request #1775 from nghttp2/src-eliminate-strtoul
Replace the use of strtoul and strtol with parse_uint
2022-08-09 20:58:52 +09:00
Tatsuhiro Tsujikawa
a4d12f2a71 Replace the use of strtoul and strtol with parse_uint
Replace the use of strtoul and strtol with parse_uint to fix the
handling of negative integer.
2022-08-09 19:56:01 +09:00
David Korczynski
0ade040a68 fuzz: add extended fuzzer using FuzzedDataProvider
Similar in nature to fuzz_target.cc but adds the difference of a random
iv constructed by way of fuzzer data.
2022-08-04 20:22:28 +01:00
David Korczynski
59be24be32 fuzz: add frames fuzzer 2022-08-04 15:24:27 +01:00
Tatsuhiro Tsujikawa
092014d5af Merge pull request #1769 from nghttp2/randomize-backend-addresses
nghttpx: Randomize backend address backend robin order per thread (2nd Ed.)
2022-08-04 19:03:53 +09:00
Tatsuhiro Tsujikawa
39d9efe4bd nghttpx: Randomize backend address backend robin order per thread (2nd Ed.)
This is the 2nd attempt to randomize backend address round robin
order.

The initial attempt of doing this was
fdcdb21c38, which has been reverted via
470f06e5f6 because it broke the session
affinity.

This time, we shuffles seq fields and avoid reordering addrs vector.
2022-08-04 18:38:23 +09:00
Tatsuhiro Tsujikawa
a3be763650 Merge pull request #1766 from nghttp2/h2load-h3-reset-stream-cb
h2load: Implement nghttp3 reset_stream callback
2022-07-26 17:39:58 +09:00
Tatsuhiro Tsujikawa
b4cf6358d4 h2load: Implement nghttp3 reset_stream callback 2022-07-26 17:05:13 +09:00
Tatsuhiro Tsujikawa
a80df35b39 Merge branch 'lemourin-coro-http' 2022-07-26 17:02:03 +09:00
Paweł Wegner
ff48a84a86 cmake: add ENABLE_DOC option.
doc subdirectory breaks Xcode generator
2022-07-26 16:42:26 +09:00
Tatsuhiro Tsujikawa
75a0d090df Merge pull request #1764 from nghttp2/h3-ignore-errors
Ignore nghttp3 errors which can be ignored
2022-07-26 00:40:11 +09:00
Tatsuhiro Tsujikawa
6418a86504 Ignore nghttp3 errors which can be ignored 2022-07-25 23:09:33 +09:00
Tatsuhiro Tsujikawa
2916208eb3 Merge pull request #1763 from nghttp2/bump-neverbleed
Bump neverbleed
2022-07-25 23:04:43 +09:00
Tatsuhiro Tsujikawa
22c88548b9 Bump neverbleed 2022-07-25 21:20:02 +09:00
Tatsuhiro Tsujikawa
c642a9f856 Merge pull request #1762 from nghttp2/bump-llhttp
Bump llhttp
2022-07-25 21:04:13 +09:00
Tatsuhiro Tsujikawa
05f8d4e8c9 Fix integration test failure 2022-07-25 20:08:58 +09:00
Tatsuhiro Tsujikawa
9d389e8744 Bump llhttp to f84c4de65875a43b683d4c0c26337b2fa5a38efa 2022-07-25 19:41:13 +09:00
Tatsuhiro Tsujikawa
d51647f37e Merge pull request #1761 from nghttp2/relocate-nghttp2-asio
libnghttp2_asio has moved to its own repository
2022-07-25 18:08:37 +09:00
Tatsuhiro Tsujikawa
c011105124 libnghttp2_asio has moved to its own repository 2022-07-25 17:33:50 +09:00
Tatsuhiro Tsujikawa
bc909d6157 Merge pull request #1759 from nghttp2/bump-quic-libs
Bump QUIC related libraries
2022-07-22 00:05:52 +09:00
Tatsuhiro Tsujikawa
5cf678cf5e Bump QUIC related libraries 2022-07-21 23:22:42 +09:00
Tatsuhiro Tsujikawa
f11be7df09 Merge pull request #1755 from vszakats/fix-win-openssl-quic-detection
cmake: fix detecting quic openssl with win32
2022-07-21 21:18:05 +09:00
Viktor Szakats
7113970ff0 cmake: fix detecting quic openssl with win32
By adding two necessary system libraries to make the QUIC test snippet
link correctly.

Before:
```
-- Looking for SSL_is_quic
-- Looking for SSL_is_quic - not found
CMake Warning at CMakeLists.txt:206 (message):
  OpenSSL in
  /[...]/openssl-quic/x64-ucrt/usr/lib/libssl.a;/[...]/openssl-quic/x64-ucrt/usr/lib/libcrypto.a
  dose not have SSL_is_quic.  HTTP/3 support cannot be enabled
```

After:
```
-- Looking for SSL_is_quic
-- Looking for SSL_is_quic - found
```

Same fix as previously merged to ngtcp2:
https://github.com/ngtcp2/ngtcp2/pull/481
2022-07-14 05:35:11 +00:00
Tatsuhiro Tsujikawa
33974fbcd7 Merge pull request #1754 from nghttp2/bump-sphinx-rtd-theme
Bump sphinx_rtd_theme
2022-07-12 22:47:51 +09:00
Tatsuhiro Tsujikawa
6eb90570f0 Bump sphinx_rtd_theme 2022-07-12 22:23:12 +09:00
Tatsuhiro Tsujikawa
014f1c510d Merge pull request #1752 from nghttp2/cross-build-fix
Cross build fix
2022-07-08 00:04:18 +09:00
Tatsuhiro Tsujikawa
db770a815a Remove missing header patch 2022-07-07 21:59:14 +09:00
Tatsuhiro Tsujikawa
aedb01a1a4 Run tests for x86_64-w64-mingw32 host only
GitHub Actions suddenly refused to install wine32 because of broken
dependencies.  In order to workaround this issue, do not run tests on
i686-w64-mingw32 host.
2022-07-07 21:54:31 +09:00
Tatsuhiro Tsujikawa
3d35558f0e Merge pull request #1751 from nghttp2/bump-quictls
Bump quictls
2022-07-06 22:58:26 +09:00
Tatsuhiro Tsujikawa
02a3a15b82 Bump quictls 2022-07-06 22:21:26 +09:00
Tatsuhiro Tsujikawa
ffe1519366 Merge pull request #1750 from nghttp2/pythonbindings-deprecation
Deprecate Python bindings
2022-07-05 20:10:24 +09:00
Tatsuhiro Tsujikawa
97a5ca584b Deprecate Python bindings 2022-07-05 19:45:14 +09:00
Tatsuhiro Tsujikawa
78cb0008d3 Merge pull request #1749 from nghttp2/libasio-deprecation
Deprecate libnghttp2_asio
2022-07-05 19:41:47 +09:00
Tatsuhiro Tsujikawa
d38cf2d11c Merge pull request #1748 from nghttp2/cross-build
Cross build
2022-07-05 19:10:28 +09:00
Tatsuhiro Tsujikawa
b7b09acb81 Deprecate libnghttp2_asio 2022-07-05 18:57:22 +09:00
Tatsuhiro Tsujikawa
83ea8e5ba5 Add build-cross 2022-07-05 18:14:22 +09:00
Tatsuhiro Tsujikawa
9a16e73813 Compile with mingw64 2022-07-05 18:10:57 +09:00
Tatsuhiro Tsujikawa
2da1713200 Define BUILDING_NGHTTP2 for tests to make linker work 2022-07-05 18:10:35 +09:00
Tatsuhiro Tsujikawa
118648ff17 Merge pull request #1747 from nghttp2/nghttpx-fix-proxy-proto
nghttpx: Fix broken PROXY-protocol
2022-07-04 22:16:57 +09:00
Tatsuhiro Tsujikawa
d9acf873ed nghttpx: Fix broken PROXY-protocol
Fix PROXY-protocol that is enabled for TLS connection.
2022-07-04 21:21:02 +09:00
Tatsuhiro Tsujikawa
e065cbccb6 Merge pull request #1745 from nghttp2/no-lws-check
No need to check pseudo header lws
2022-06-25 11:52:15 +09:00
Tatsuhiro Tsujikawa
cad6f6c3f0 Merge pull request #1744 from nghttp2/nghttpx-remove-h1-field-trailing-white-spaces
nghttpx: Remove trailing white spaces from HTTP/1.1 fields
2022-06-25 11:37:27 +09:00
Tatsuhiro Tsujikawa
fc6d064371 No need to check pseudo header lws
No need to check pseudo header lws because it is guaranteed not to
have leading white spaces.
2022-06-25 11:24:10 +09:00
Tatsuhiro Tsujikawa
501b1d4dcf nghttpx: Remove trailing white spaces from HTTP/1.1 fields 2022-06-25 11:09:35 +09:00
Tatsuhiro Tsujikawa
54848210a9 Merge pull request #1743 from nghttp2/rfc9113-field-value-validation
Add nghttp2_check_header_value_rfc9113
2022-06-24 20:52:17 +09:00
Tatsuhiro Tsujikawa
7f4c2f9ec3 Add nghttp2_check_header_value_rfc9113
Add nghttp2_check_header_value_rfc9113 which verifies the additional
rule imposed by RFC 9113, section 8.2.1, that is a field value must
not start or end with 0x20(SPC) or 0x09(HTAB).

libnghttp2 uses this new function internally.
2022-06-24 19:44:13 +09:00
Tatsuhiro Tsujikawa
af30e57c5e Bump package version 2022-06-24 18:27:00 +09:00
Tatsuhiro Tsujikawa
b5c4ba8322 Merge pull request #1742 from nghttp2/ignore-priority-in-pp
Do not parse priority header field value included in PUSH_PROMISE
2022-06-23 23:09:21 +09:00
Tatsuhiro Tsujikawa
d115f580e2 Do not parse priority header field value included in PUSH_PROMISE 2022-06-23 22:44:01 +09:00
Tatsuhiro Tsujikawa
511fea418a Update bash_completion 2022-06-23 21:13:25 +09:00
Tatsuhiro Tsujikawa
711fb1d3c3 Update manual pages 2022-06-23 21:13:03 +09:00
Tatsuhiro Tsujikawa
31b39ebc4c Bump package and library versions 2022-06-23 20:57:52 +09:00
Tatsuhiro Tsujikawa
f214519321 Merge pull request #1741 from nghttp2/gha-boringssl-build
workflow: Add BoringSSL build
2022-06-23 20:06:47 +09:00
Tatsuhiro Tsujikawa
5dfd6d22fa workflow: Add BoringSSL build 2022-06-23 19:30:30 +09:00
Tatsuhiro Tsujikawa
146ca52f26 Update BoringSSL revision which is old but matches what ngtcp2 says 2022-06-23 18:18:26 +09:00
Tatsuhiro Tsujikawa
65e7c24df7 Merge pull request #1740 from nghttp2/bump-quictls
Bump quictls
2022-06-23 00:52:28 +09:00
Tatsuhiro Tsujikawa
5ecd1372c3 Bump quictls 2022-06-23 00:28:32 +09:00
Tatsuhiro Tsujikawa
6596cce8fb Make concat_string_ref_count constexpr 2022-06-23 00:00:16 +09:00
Tatsuhiro Tsujikawa
ad7fc183d1 errno should be used to evaluate error code 2022-06-23 00:00:16 +09:00
Tatsuhiro Tsujikawa
22f8cc687f Update doc 2022-06-23 00:00:16 +09:00
Tatsuhiro Tsujikawa
294fb07750 Merge pull request #1739 from nghttp2/h2load-no-udp-segment
h2load: Send more packets without GSO per event loop
2022-06-22 22:50:02 +09:00
Tatsuhiro Tsujikawa
71f8971dde h2load: Send more packets without GSO per event loop 2022-06-22 21:05:11 +09:00
Tatsuhiro Tsujikawa
7077096162 Merge pull request #1738 from nghttp2/bump-llhttp
Bump llhttp to 75b45129db961e1fb3c56044e1b8f7721bfaee5d
2022-06-21 22:18:02 +09:00
Tatsuhiro Tsujikawa
9800934e19 Bump llhttp to 75b45129db961e1fb3c56044e1b8f7721bfaee5d 2022-06-21 21:52:03 +09:00
Tatsuhiro Tsujikawa
075142ab08 Merge pull request #1737 from nghttp2/bump-libbpf
Bump libbpf to v0.8.0
2022-06-21 21:51:31 +09:00
Tatsuhiro Tsujikawa
ab3f86ab36 Bump libbpf to v0.8.0 2022-06-21 21:31:37 +09:00
Tatsuhiro Tsujikawa
ce66ac88c8 Merge pull request #1736 from nghttp2/bump-ngtcp2
Bump ngtcp2 and nghttp3
2022-06-21 00:09:54 +09:00
Tatsuhiro Tsujikawa
3849337b42 Bump ngtcp2 and nghttp3 2022-06-20 21:52:19 +09:00
Tatsuhiro Tsujikawa
e6cf62664d Merge pull request #1735 from nghttp2/update-default-tls-ciphers
Update default TLS cipher suites
2022-06-20 00:54:58 +09:00
Tatsuhiro Tsujikawa
56ae4124b1 Update default TLS cipher suites 2022-06-20 00:32:43 +09:00
Tatsuhiro Tsujikawa
41aaa47fd0 Merge pull request #1734 from nghttp2/server-change-extpri
Allow server to override RFC 9218 stream priority
2022-06-16 20:53:12 +09:00
Tatsuhiro Tsujikawa
ffa50c12b1 Check session side first 2022-06-16 19:50:29 +09:00
Tatsuhiro Tsujikawa
41955b3878 Allow server to override RFC 9218 stream priority
Allow server to override RFC 9218 stream priority with
nghttp2_session_change_extpri_stream_priority.
2022-06-16 19:49:53 +09:00
Tatsuhiro Tsujikawa
534284477e Merge pull request #1733 from nghttp2/nghttpx-no-rfc7540-priorities
nghttpx: Disable RFC 7540 priorities
2022-06-16 18:39:34 +09:00
Tatsuhiro Tsujikawa
b646c0a351 Merge pull request #1732 from nghttp2/stream-priority-doc
Document how to change stream prioritization scheme
2022-06-16 08:34:01 +09:00
Tatsuhiro Tsujikawa
6429551272 nghttpx: Disable RFC 7540 priorities
Disable RFC 7540 priorities in nghttpx.  It enables RFC 9218
extensible prioritization scheme.  It also enables a mechanism for
server to fallback to RFC 7540 in order to handle the existing clients
which do not implement SETTINGS_NO_RFC7540_PRIORITIES.
2022-06-15 23:43:03 +09:00
Tatsuhiro Tsujikawa
ae2a9695f0 Document how to change stream prioritization scheme 2022-06-15 23:10:44 +09:00
Tatsuhiro Tsujikawa
9698bd530b Merge pull request #1731 from nghttp2/fallback-rfc7540-pri
Add a server option to fallback to RFC 7540 priorities
2022-06-15 08:34:58 +09:00
Tatsuhiro Tsujikawa
8c2386c221 Add a server option to fallback to RFC 7540 priorities
Add nghttp2_option_set_server_fallback_rfc7540_priorities.  If it is
set to nonzero, and server submits SETTINGS_NO_RFC7540_PRIORITIES = 1,
but it does not receive SETTINGS_NO_RFC7540_PRIORITIES from client,
server falls back to RFC 7540 priorities.  Only minimal set of
features are enabled in this fallback case.
2022-06-14 23:47:42 +09:00
Tatsuhiro Tsujikawa
d1e07ab6b7 Merge pull request #1729 from nghttp2/rfc9218-priority-update-frame
Add PRIORITY_UPDATE frame support
2022-06-13 21:15:43 +09:00
Tatsuhiro Tsujikawa
b0fbb93022 Add PRIORITY_UPDATE frame support
This commit adds PRIORITY_UPDATE frame support.  Applying incoming
PRIORITY_UPDATE frame to server push stream is not implemented.

Client can send PRIORITY_UPDATE frame by calling
nghttp2_submit_priority_update.

Server opts to receive PRIORITY_UPDATE frame by the call
nghttp2_option_set_builtin_recv_extension_type(option,
NGHTTP2_PRIORITY_UPDATE), and passing the option to
nghttp2_session_server_new2 or nghttp2_session_server_new3.
2022-06-13 20:04:30 +09:00
Tatsuhiro Tsujikawa
c44caa0580 Merge pull request #1728 from nghttp2/rfc9218-ext-priority
Implement RFC 9218 extensible prioritization scheme
2022-06-12 17:32:23 +09:00
Tatsuhiro Tsujikawa
c10a55588b Implement RFC 9218 extensible prioritization scheme
This commit implements RFC 9218 extensible prioritization scheme.  It
is enabled when a local endpoint submits
SETTINGS_NO_RFC7540_PRIORITIES = 1.  This commit only handles priority
signal in HTTP request header field.  Priority header field in
PUSH_PROMISE is not supported.

HTTP messaging must be enabled to take advantage of this
prioritization scheme because HTTP fields are not parsed if HTTP
messaging is disabled.
2022-06-12 16:06:04 +09:00
Tatsuhiro Tsujikawa
4ffb63a737 nghttp2_pq_init never fail 2022-06-11 17:36:48 +09:00
Tatsuhiro Tsujikawa
ac3f846f29 Merge pull request #1727 from nghttp2/host-in-resp-field-section
Do not verify host field specific characters for response field
2022-06-11 17:33:44 +09:00
Tatsuhiro Tsujikawa
73b5daddbc Merge pull request #1725 from nghttp2/no-rfc7540-priorities
No rfc7540 priorities
2022-06-11 17:18:24 +09:00
Tatsuhiro Tsujikawa
a26bad3324 Do not verify host field specific characters for response field
Do not verify host field specific characters for response field
section because host field in response field section is undefined.
2022-06-11 17:08:51 +09:00
Tatsuhiro Tsujikawa
2c73de5292 Exclude macos + cmake build because of include path issue 2022-06-11 16:50:07 +09:00
Tatsuhiro Tsujikawa
9812a0bc81 Add SETTINGS_NO_RFC7540_PRIORITIES
Add SETTINGS_NO_RFC7540_PRIORITIES to disable RFC7540 priorities.  If
disabled, streams are served in FIFO.
2022-06-11 16:50:07 +09:00
Tatsuhiro Tsujikawa
8d48686cec Merge pull request #1724 from nghttp2/compile-with-libressl-3.5
Compile with libressl 3.5
2022-06-08 21:28:03 +09:00
Tatsuhiro Tsujikawa
f38d9f8cf6 Compile with libressl >= 3.5 2022-06-08 19:58:12 +09:00
Tatsuhiro Tsujikawa
0d1894ecbb Disable neverbleed for macos
Disable neverbleed for macos because it does not work with libressl
installed on github actions.
2022-06-08 19:46:22 +09:00
Tatsuhiro Tsujikawa
d801a23f91 Merge pull request #1719 from nghttp2/go-update
Go update
2022-05-24 22:29:57 +09:00
Tatsuhiro Tsujikawa
24d27977bd Rearrange imports 2022-05-24 21:56:38 +09:00
Tatsuhiro Tsujikawa
8bbd0363e9 Remove redundant select 2022-05-24 21:53:15 +09:00
Tatsuhiro Tsujikawa
c67dc7ff1d Refactor serverTester constructor 2022-05-24 21:47:24 +09:00
Tatsuhiro Tsujikawa
0287024e85 Wrap error 2022-05-24 18:53:08 +09:00
Tatsuhiro Tsujikawa
31b5eb597d Avoid io/ioutil 2022-05-24 18:52:30 +09:00
Tatsuhiro Tsujikawa
26ef62d613 Move runs-on under strategy 2022-05-22 12:22:32 +09:00
Tatsuhiro Tsujikawa
3977be938f Merge pull request #1718 from nghttp2/bump-ubuntu
Bump ubuntu
2022-05-22 11:54:13 +09:00
Tatsuhiro Tsujikawa
fac4dcfc31 Bump ubuntu 2022-05-22 11:23:40 +09:00
Tatsuhiro Tsujikawa
4cd95470d6 IPV6_PMTUDISC_DO 2022-05-19 22:57:34 +09:00
Tatsuhiro Tsujikawa
e224ef45a4 Merge pull request #1716 from nghttp2/optimize-gso
Better pack UDP packets in one GSO write
2022-05-16 22:45:11 +09:00
Tatsuhiro Tsujikawa
aacc48662a Merge pull request #1715 from nghttp2/parallel-build
Parallel build
2022-05-16 22:05:36 +09:00
Tatsuhiro Tsujikawa
0c77d6b943 Better pack UDP packets in one GSO write 2022-05-16 22:03:20 +09:00
Tatsuhiro Tsujikawa
9d159596a4 Merge pull request #1714 from nghttp2/bump-ngtcp2
Bump ngtcp2 and nghttp3
2022-05-16 21:52:09 +09:00
Tatsuhiro Tsujikawa
de8eaf6468 Parallel build 2022-05-16 21:40:08 +09:00
Tatsuhiro Tsujikawa
205e956883 Bump ngtcp2 and nghttp3 2022-05-16 21:22:22 +09:00
Tatsuhiro Tsujikawa
d5733b6beb Merge pull request #1712 from nghttp2/extra-dist-mruby
EXTRA_DIST: List mruby files explicitly
2022-05-15 19:31:03 +09:00
Tatsuhiro Tsujikawa
4cbe74235d EXTRA_DIST: List mruby files explicitly 2022-05-15 19:05:24 +09:00
Tatsuhiro Tsujikawa
974a614020 Merge pull request #1711 from nghttp2/fix-nproc
nproc is not available on macos
2022-05-15 18:11:04 +09:00
Tatsuhiro Tsujikawa
267ce93a7e nproc is not available on macos 2022-05-15 17:36:53 +09:00
Tatsuhiro Tsujikawa
ae1de00c91 Bump actions/checkout to v3 2022-05-15 15:39:03 +09:00
Tatsuhiro Tsujikawa
a144dc0e59 Merge pull request #1710 from nghttp2/quic-error-handling
Quic error handling
2022-05-15 12:45:35 +09:00
Tatsuhiro Tsujikawa
516cf851c3 h2load: Deal with error from ngtcp2_conn_submit_crypto_data 2022-05-15 12:01:07 +09:00
Tatsuhiro Tsujikawa
59d6828848 Slightly simplified error handling for ngtcp2_conn_read_pkt 2022-05-15 11:57:00 +09:00
Tatsuhiro Tsujikawa
76ffd6bf96 nghttpx: Fix build error without mruby 2022-05-14 17:44:53 +09:00
Tatsuhiro Tsujikawa
8ad8d70f62 Merge pull request #1709 from nghttp2/bump-mruby
Bump mruby to 3.1.0
2022-05-14 10:36:45 +09:00
Tatsuhiro Tsujikawa
9da4449025 Merge pull request #1708 from nghttp2/bump-neverbleed
Bump neverbleed based on the latest head
2022-05-13 23:33:44 +09:00
Tatsuhiro Tsujikawa
0a3e55031d Bump mruby to 3.1.0 2022-05-13 23:08:27 +09:00
Tatsuhiro Tsujikawa
be9bcdf36e Bump neverbleed based on the latest head 2022-05-13 22:57:17 +09:00
Tatsuhiro Tsujikawa
c8a032b6f4 Merge pull request #1707 from nghttp2/fix-nghttpd-tls-read-stall
nghttpd: Fix TLS read stall
2022-05-08 18:25:58 +09:00
Tatsuhiro Tsujikawa
55cf5ff3da nghttpd: Fix TLS read stall 2022-05-08 17:52:19 +09:00
Tatsuhiro Tsujikawa
a93cac525e Merge pull request #1706 from nghttp2/tls13-default-enabled
TLSv1.3 is enabled by default
2022-05-08 12:23:22 +09:00
Tatsuhiro Tsujikawa
a20cc23a78 Merge pull request #1705 from nghttp2/nghttp-ktls-fix
nghttp: Fix ktls support
2022-05-08 11:56:53 +09:00
Tatsuhiro Tsujikawa
854ef0e839 Merge pull request #1704 from nghttp2/h2load-ktls
h2load: Add ktls support
2022-05-08 11:39:16 +09:00
Tatsuhiro Tsujikawa
317e80c239 h2load: Add ktls support 2022-05-08 11:08:34 +09:00
Tatsuhiro Tsujikawa
6f3ba6940e TLSv1.3 is enabled by default 2022-05-08 11:08:05 +09:00
Tatsuhiro Tsujikawa
7858997c8f nghttp: Fix ktls support 2022-05-08 11:07:33 +09:00
Tatsuhiro Tsujikawa
1ce55d23a3 Merge pull request #1703 from nghttp2/client-tls-handshake
nghttpx: Client always uses simpler TLS handshake
2022-05-08 11:05:57 +09:00
Tatsuhiro Tsujikawa
c13a66d26f nghttpx: Client always uses simpler TLS handshake 2022-05-08 10:31:55 +09:00
Tatsuhiro Tsujikawa
992181a0de Merge pull request #1702 from nghttp2/ktls
nghttp, nghttpd, nghttpx: Add ktls support
2022-05-07 20:59:11 +09:00
Tatsuhiro Tsujikawa
09344eb1ad nghttp, nghttpd, nghttpx: Add ktls support 2022-05-07 18:53:59 +09:00
Tatsuhiro Tsujikawa
0f1cba2af5 Bump ngtcp2 and nghttp3 in Dockerfile 2022-05-07 11:22:23 +09:00
Tatsuhiro Tsujikawa
cf78f476b8 Merge pull request #1701 from nghttp2/bump-quictls
Bump quictls
2022-05-07 11:20:56 +09:00
Tatsuhiro Tsujikawa
846b0c076f Bump quictls 2022-05-07 10:54:51 +09:00
Tatsuhiro Tsujikawa
f5757aa18d Merge pull request #1698 from nghttp2/bump-ngtcp2
Bump ngtcp2 and nghttp3
2022-04-25 23:18:30 +09:00
Tatsuhiro Tsujikawa
80c09ea4db Run build on PR 2022-04-25 22:54:18 +09:00
Tatsuhiro Tsujikawa
6b33fa3417 Bump ngtcp2 and nghttp3 2022-04-25 22:52:21 +09:00
Tatsuhiro Tsujikawa
9ba95c9706 Merge pull request #1697 from nghttp2/add-go-mod
Add go.mod
2022-04-25 22:51:54 +09:00
Tatsuhiro Tsujikawa
7b14706f03 Add go.mod 2022-04-25 22:28:14 +09:00
Tatsuhiro Tsujikawa
bfd08a46ec Merge pull request #1695 from nghttp2/fix-perf-regression
nghttpx, h2load: Fix QUIC performance regression
2022-04-06 21:08:45 +09:00
Tatsuhiro Tsujikawa
3b84147f45 nghttpx, h2load: Fix QUIC performance regression 2022-04-06 19:42:01 +09:00
Tatsuhiro Tsujikawa
f277dafe1e Bump macos 2022-04-03 22:03:34 +09:00
Tatsuhiro Tsujikawa
aca0573bed Bump clang-format to 14 2022-04-03 22:03:34 +09:00
Tatsuhiro Tsujikawa
8d4c9e4345 Merge pull request #1693 from nghttp2/bump-ngtcp2
Bump ngtcp2 and nghttp3
2022-04-03 22:02:21 +09:00
Tatsuhiro Tsujikawa
80a93ddaf8 Bump ngtcp2 and nghttp3 2022-04-03 21:27:40 +09:00
Tatsuhiro Tsujikawa
3ab7cf375c Merge pull request #1689 from nghttp2/bump-quictls
Bump quictls
2022-03-25 21:49:16 +09:00
Tatsuhiro Tsujikawa
a3fbd5ad73 Bump quictls 2022-03-25 21:28:31 +09:00
Tatsuhiro Tsujikawa
f2d1cc1a7a Merge pull request #1685 from nghttp2/nghttpx-affinity-cookie-stickiness
nghttpx: Add affinity-cookie-stickiness backend parameter
2022-03-21 18:24:45 +09:00
Tatsuhiro Tsujikawa
5ded01e288 nghttpx: Add affinity-cookie-stickiness backend parameter 2022-03-20 11:30:32 +09:00
Tatsuhiro Tsujikawa
3ec588bb54 Merge pull request #1683 from nghttp2/nghttpx-fix-session-affinity
nghttpx: Fix broken session affinity
2022-03-15 21:07:40 +09:00
Tatsuhiro Tsujikawa
470f06e5f6 nghttpx: Fix broken session affinity
Session affinity has been broken since
fdcdb21c38.  This commit reverts the
relevant part of the commit to fix the session affinity.
2022-03-15 19:35:49 +09:00
Tatsuhiro Tsujikawa
a10bb832fd Merge pull request #1680 from nghttp2/fix-stream-stall
Fix stream stall when initial window size is decreased
2022-03-13 19:24:32 +09:00
Tatsuhiro Tsujikawa
be16a24fcc Merge pull request #1682 from nghttp2/http3-amplification
nghttpx: Limit CONNECTION_CLOSE and Retry under server amplification …
2022-03-13 18:27:20 +09:00
Tatsuhiro Tsujikawa
2f5ec66a65 nghttpx: Limit CONNECTION_CLOSE and Retry under server amplification limit 2022-03-12 19:48:31 +09:00
Tatsuhiro Tsujikawa
7c3e9152ce Merge pull request #1681 from nghttp2/no-app-libs-check
Do not check application libraries if --enable-lib-only is given
2022-03-12 19:44:45 +09:00
Tatsuhiro Tsujikawa
37ad3462d2 Do not check application libraries if --enable-lib-only is given 2022-03-12 19:24:04 +09:00
Tatsuhiro Tsujikawa
129daeff6f Fix stream stall when initial window size is decreased
Fix the bug that causes a stream to stall when a receiver, which
enables nghttp2_option_set_no_auto_window_update() option on, sends
SETTINGS_INITIAL_WINDOW_SIZE with the value that is less than or equal
to the amount of data received.  Previously, in this particular case,
when SETTINGS is acknowledged by the sender, the receiver does not try
to send WINDOW_UPDATE frame.  The sender is unable to send more data
because its stream-level window size is smaller than or equal to the
amount of data it has sent.
2022-03-12 17:05:42 +09:00
Tatsuhiro Tsujikawa
072784c9ee Bump ngtcp2 2022-02-28 19:07:33 +09:00
Tatsuhiro Tsujikawa
89431f1727 Bump package version to 1.48.0-DEV 2022-02-23 17:15:04 +09:00
Tatsuhiro Tsujikawa
d9f580c3cb Update doc
Bring back clang because we need it to compile bpf program.
2022-02-23 17:08:04 +09:00
Tatsuhiro Tsujikawa
f6b05a0111 Update doc 2022-02-23 17:01:00 +09:00
Tatsuhiro Tsujikawa
0353da4605 Update bash_completion 2022-02-23 16:49:24 +09:00
Tatsuhiro Tsujikawa
039ff29a2f Update manual pages 2022-02-23 16:49:04 +09:00
Tatsuhiro Tsujikawa
385a28c7f1 Update doc
rlimit-memlock is not required anymore.
2022-02-23 16:46:56 +09:00
Tatsuhiro Tsujikawa
89e49f1066 Dockerfile: Pin ngtcp2 and nghttp3 versions 2022-02-23 16:41:17 +09:00
Tatsuhiro Tsujikawa
abd6bb6818 Bump package and library versions 2022-02-23 16:25:44 +09:00
Tatsuhiro Tsujikawa
ad2fbea087 Update AUTHORS 2022-02-23 16:23:58 +09:00
Tatsuhiro Tsujikawa
47cc36969a Bump libbpf in Dockerfile 2022-02-21 22:18:25 +09:00
Tatsuhiro Tsujikawa
830cf1e294 Bump libbpf to v0.7.0 and turn on all strict features 2022-02-21 22:06:30 +09:00
Tatsuhiro Tsujikawa
a22f2cfcc8 Bump ngtcp2 and nghttp3 2022-02-19 18:14:18 +09:00
Tatsuhiro Tsujikawa
f3d4b4f846 nghttpx: Fix bug that h3 stream ends prematurely 2022-02-18 23:08:47 +09:00
Tatsuhiro Tsujikawa
a6537cb9ce Fix compile error 2022-02-12 11:45:24 +09:00
Tatsuhiro Tsujikawa
79524471b4 nghttpx: Add --require-http-scheme option 2022-02-12 11:39:52 +09:00
Tatsuhiro Tsujikawa
a67822b382 Bump llhttp to v6.0.6 2022-02-10 21:53:23 +09:00
Tatsuhiro Tsujikawa
79da3fdedc Revert "Bump llhttp to 836430e892862ed6462f6197417eba8e17378956"
This reverts commit b5d74d7c9d.
2022-02-10 21:51:18 +09:00
Tatsuhiro Tsujikawa
b5d74d7c9d Bump llhttp to 836430e892862ed6462f6197417eba8e17378956 2022-02-10 21:34:15 +09:00
Tatsuhiro Tsujikawa
385abf10f7 nghttpx: Add support QUIC BBR2 2022-02-10 19:45:30 +09:00
Tatsuhiro Tsujikawa
f3206b12d5 Update doc 2022-02-10 19:38:23 +09:00
Tatsuhiro Tsujikawa
b70fdca9ac h2load: Handle EAGAIN/EWOULDBLOCK from sendmsg 2022-02-10 19:35:50 +09:00
Tatsuhiro Tsujikawa
bd3cc94a36 Use nullptr for C++ code 2022-02-10 18:56:19 +09:00
Tatsuhiro Tsujikawa
02f2336ab1 Bump libbpf to v0.6.1 2022-02-09 19:03:13 +09:00
Tatsuhiro Tsujikawa
832d811982 Remove appveyor.yml 2022-02-08 20:21:23 +09:00
Tatsuhiro Tsujikawa
637f3d7b33 Windows build on GitHub Actions 2022-02-08 19:16:32 +09:00
Tatsuhiro Tsujikawa
254f2b3c42 Remove macos + gcc ci build to speed up ci build time 2022-02-08 19:14:45 +09:00
Tatsuhiro Tsujikawa
633691e164 Remove .travis.yml 2022-02-08 19:13:50 +09:00
Tatsuhiro Tsujikawa
01bcc72f66 nghttpx: Handle EAGAIN/EWOULDBLOCK from sendmsg 2022-02-03 22:20:58 +09:00
Tatsuhiro Tsujikawa
7ca255ff54 Fix docker build error 2022-02-02 22:55:19 +09:00
Tatsuhiro Tsujikawa
6430c98e86 Compile with the latest ngtcp2 2022-02-02 19:19:00 +09:00
Tatsuhiro Tsujikawa
32c2557bb7 Bump nghttp3 2022-01-26 22:58:50 +09:00
Tatsuhiro Tsujikawa
3122a83900 h2load: Set quic error code based on error from ngtcp2_conn_read_pkt 2022-01-23 23:47:40 +09:00
Tatsuhiro Tsujikawa
75272a817e h2load: Fix ngtcp2 callback error code 2022-01-23 23:47:29 +09:00
Tatsuhiro Tsujikawa
809d5af43e nghttpx: Fix invalid error code 2022-01-23 22:30:46 +09:00
Tatsuhiro Tsujikawa
3b549caf90 clang-format 2022-01-23 22:30:46 +09:00
Tatsuhiro Tsujikawa
42b659354d nghttpx: Support h3 trailer fields 2022-01-23 22:30:46 +09:00
Tatsuhiro Tsujikawa
2275327794 nghttpx: Fix the issue that forwarded h3 GET request always has chunked TE 2022-01-23 21:36:35 +09:00
Tatsuhiro Tsujikawa
02a5649343 Require ngtcp2 >= 0.1.0 and nghttp3 >= 0.1.0 2022-01-23 18:34:59 +09:00
Tatsuhiro Tsujikawa
3b0b9a458c Build docker image with ngtcp2 v0.1.0 2022-01-22 18:17:30 +09:00
Tatsuhiro Tsujikawa
6e6388e7c2 Depend on nghttp3 v0.1.1 2022-01-22 18:17:09 +09:00
Tatsuhiro Tsujikawa
ea6f0c641d Merge pull request #1643 from nwtgck/fix-example-quotes
fix quotes in --altsvc example
2022-01-19 19:01:53 +09:00
Tatsuhiro Tsujikawa
c883b18f2d Pin quic dependency 2022-01-16 22:00:27 +09:00
Tatsuhiro Tsujikawa
97e69f7416 Merge branch 'rex4539-typos' 2022-01-16 21:54:15 +09:00
Dimitris Apostolou
ad0c9eebf7 Fix typos 2022-01-16 21:53:44 +09:00
Tatsuhiro Tsujikawa
8a552631b4 Merge pull request #1667 from nghttp2/keep-hd-table-size
Fix decoder table size update
2022-01-11 20:53:08 +09:00
Tatsuhiro Tsujikawa
cff8106908 Merge pull request #1665 from c0bw3b/cleanup/spdy
Remove SPDY option for CMake
2022-01-11 20:14:37 +09:00
Tatsuhiro Tsujikawa
4eb49ac28e Merge pull request #1666 from Kludex/patch-1
Update nghttp2.pyx
2022-01-11 20:13:43 +09:00
Tatsuhiro Tsujikawa
deb390cf85 Fix decoder table size update
When applying new header table size acknowledged with SETTINGS ACK by
an encoder, change the header table size on a decoder only when it
strictly lowers the current maximum table size set by Dynamic Table
Size Update from the encoder or the default size 4096 if no Dynamic
Table Size Update is received.

Previously, the header table size on a decoder is always changed.  If
a maximum size in SETTINGS are increased (e.g., 4096 -> 8192), and
then decreased to the previous value, the decoder incorrectly requires
Dynamic Table Size Update from an encoder.
2022-01-11 19:50:45 +09:00
Tatsuhiro Tsujikawa
d91ae6987d Compile with the latest ngtcp2 2022-01-11 19:40:26 +09:00
Marcelo Trylesinski
8ddb2273b9 Update nghttp2.pyx 2022-01-01 19:18:14 +01:00
Renaud
e1446fd57a Remove SPDY option for CMake
SPDY feature removed in #1091 and release v1.29.0
2022-01-01 15:21:59 +01:00
Tatsuhiro Tsujikawa
02e6cad121 Bump quictls/openssl versions 2021-12-19 20:44:45 +09:00
Tatsuhiro Tsujikawa
0b053e06d8 Merge pull request #1657 from nwtgck/patch-2
Make Docker speak HTTP/3
2021-12-13 18:00:18 +09:00
Ryo Ota
c3c0403dfa Make Docker speak HTTP/3 2021-12-12 23:16:10 +09:00
Ryo Ota
abc15c696d fix quotes in --altsvc example 2021-11-18 09:12:05 +09:00
Tatsuhiro Tsujikawa
344d300cf9 Fix cmake CI build 2021-11-16 22:09:48 +09:00
Tatsuhiro Tsujikawa
dec233b9ef cmake: Disable libbpf build by default 2021-11-16 22:03:30 +09:00
Tatsuhiro Tsujikawa
f695dc999b Merge branch 'robaho-robaho/issue1639' 2021-11-14 16:43:23 +09:00
robaho
f92f81c05a allow setting max frame size for h2load 2021-11-14 16:43:01 +09:00
Tatsuhiro Tsujikawa
3c4449c046 nghttpx: Use nghttp3 error code 2021-11-10 19:18:48 +09:00
Tatsuhiro Tsujikawa
918e4ea46b Compile with the latest ngtcp2 2021-11-09 15:44:06 +09:00
Tatsuhiro Tsujikawa
d14d97ab68 Rename send_stop_sending to stop_sending 2021-11-09 11:13:23 +09:00
Tatsuhiro Tsujikawa
2aed077761 Merge fd_set_recv_ecn to create_quic_server_socket and handle errors 2021-11-06 17:19:02 +09:00
Tatsuhiro Tsujikawa
68b2295f4e nghttpx: Set IP_PMTUDISC_DO explicitly 2021-11-06 17:12:43 +09:00
Tatsuhiro Tsujikawa
528d177847 nghttpx: Fix compile error 2021-11-06 00:16:53 +09:00
Tatsuhiro Tsujikawa
deae6c95b1 nghttpx: Send ECN 2021-11-05 23:23:00 +09:00
Tatsuhiro Tsujikawa
7eb179069d Remove useless assignments 2021-11-05 22:51:36 +09:00
Tatsuhiro Tsujikawa
47c33b8d03 nghttpx: Receive ECN 2021-11-05 20:57:24 +09:00
Tatsuhiro Tsujikawa
94372fbe2a Merge branch 'bagder-version-h3-too' 2021-11-05 18:39:09 +09:00
Daniel Stenberg
9e154297ff shrpx: make nghttpx -v show ngtcp2 and nghttp3 version as well
... if HTTP/3 support is built in.
2021-11-05 18:38:39 +09:00
Tatsuhiro Tsujikawa
c4828dbd7c h2load: Fix assertion failure with the latest ngtcp2 2021-11-03 21:23:26 +09:00
Tatsuhiro Tsujikawa
0d16db2c65 Use quictls 1.1.1l for now because 3.0.0 is much slower 2021-10-30 18:09:18 +09:00
Tatsuhiro Tsujikawa
fb63ef305d Update doc 2021-10-30 18:09:06 +09:00
Tatsuhiro Tsujikawa
089fc81d72 Change qlog file extension to .sqlog
Change qlog file extension to .sqlog because upstream ngtcp2 moves to
JSON-SEQ streaming qlog format.
2021-10-29 21:59:54 +09:00
Tatsuhiro Tsujikawa
c20d175ff2 Guard RLIMIT_MEMLOCK usage 2021-10-29 21:39:17 +09:00
Tatsuhiro Tsujikawa
3985957c4d Merge pull request #1625 from codebytere/fix-unreachable-return
chore: fix `-Wunreachable-code-return`
2021-10-29 21:35:44 +09:00
Tatsuhiro Tsujikawa
845a20b582 Bump version number to 1.47.0-DEV 2021-10-19 18:59:58 +09:00
Tatsuhiro Tsujikawa
7af0c508be Update manual pages 2021-10-19 18:29:19 +09:00
Tatsuhiro Tsujikawa
f8474b25f0 nghttpx: Reduce dgram size if sendmsg fails with EINVAL or EMSGSIZE 2021-10-18 22:37:16 +09:00
Tatsuhiro Tsujikawa
15a8d913ea examples/client: Enable ALPN 2021-10-17 17:25:18 +09:00
Tatsuhiro Tsujikawa
65d3c9047f Replace TLSv23_method with TLS_method 2021-10-17 17:21:09 +09:00
Tatsuhiro Tsujikawa
8c36971ea9 Compile with OPENSSL_NO_DEPRECATED and fix memory leaks 2021-10-17 17:12:14 +09:00
Tatsuhiro Tsujikawa
ba1dff187b Update bash_completion 2021-10-17 14:52:55 +09:00
Tatsuhiro Tsujikawa
8ecacc8ed2 Update manual pages 2021-10-17 14:52:36 +09:00
Tatsuhiro Tsujikawa
9d41896663 nghttpx: Rename --frontend-quic-server-id to --quic-server-id 2021-10-17 14:48:46 +09:00
Tatsuhiro Tsujikawa
18d4a9e4ff Update bash_completion 2021-10-17 14:30:27 +09:00
Tatsuhiro Tsujikawa
1745a30644 Update manual pages 2021-10-17 14:30:27 +09:00
Tatsuhiro Tsujikawa
0cc7c598ff src: TLS_DEFAULT_CIPHERSUITES was deprecated in OpenSSL 3.0.0 2021-10-17 14:30:27 +09:00
Tatsuhiro Tsujikawa
8c4fbb86d8 Bump version number to 1.46.0, LT revision to 35:1:21 2021-10-17 14:00:37 +09:00
Tatsuhiro Tsujikawa
693431312c Fix cmake build 2021-10-15 23:39:44 +09:00
Tatsuhiro Tsujikawa
f3fca2a19a Update doc 2021-10-15 23:24:23 +09:00
Tatsuhiro Tsujikawa
1ce9efc644 nghttpx: Set SCT data when built with boringssl 2021-10-15 23:06:24 +09:00
Tatsuhiro Tsujikawa
7055501efd src: Enable HTTP/3 with boringssl 2021-10-15 22:50:34 +09:00
Tatsuhiro Tsujikawa
c790ee64a4 src: Prefer #ifdef for a single condition 2021-10-15 22:50:26 +09:00
Tatsuhiro Tsujikawa
9fb05d5ea2 Fix compile error under mac os 2021-10-15 19:54:08 +09:00
Tatsuhiro Tsujikawa
3742acaf39 nghttpx: Fix wrong SSL_CTX object usage 2021-10-15 18:19:07 +09:00
Tatsuhiro Tsujikawa
d8282de229 nghttpx: Respect !tls-no-postpone-early-data with boringssl 2021-10-15 00:13:49 +09:00
Tatsuhiro Tsujikawa
3a721a9dd5 nghttpx: Send session ticket after handshake with boringssl 2021-10-15 00:13:49 +09:00
Tatsuhiro Tsujikawa
0b6092446b src: Compile with boringssl for non-http3 build 2021-10-14 23:44:27 +09:00
Shelley Vohr
59a76c6d39 chore: fix -Wunreachable-code-return 2021-10-11 12:56:23 +02:00
Tatsuhiro Tsujikawa
fa7a916ef3 nghttpx: Store initial_rtt in ev_tstamp for consistency 2021-10-10 17:34:58 +09:00
Tatsuhiro Tsujikawa
69c4187100 nghttpx: Add --frontend-quic-initial-rtt option 2021-10-10 17:24:02 +09:00
Tatsuhiro Tsujikawa
07128719c4 Workaround broken version check in AX_PYTHON_DEVEL 2021-10-10 16:52:05 +09:00
Tatsuhiro Tsujikawa
7471fa627d Update ax_python_devel.m4 2021-10-10 16:08:49 +09:00
Tatsuhiro Tsujikawa
d7af5924ff nghttpx: Extend QUIC server ID to 4 bytes 2021-10-10 16:05:48 +09:00
Tatsuhiro Tsujikawa
a48e9d3d80 Add bpf to clang-format 2021-10-06 21:29:15 +09:00
Tatsuhiro Tsujikawa
474a6db00c Compile with gcc 2021-10-06 21:28:17 +09:00
Tatsuhiro Tsujikawa
cb6aea9aa9 Compile with -DNDEBUG 2021-10-06 21:28:00 +09:00
Tatsuhiro Tsujikawa
f4290c6497 Fix compile error 2021-10-04 23:23:03 +09:00
Tatsuhiro Tsujikawa
086b85b8f9 nghttpx: Unload BPF program after setting up all QUIC listeners 2021-10-04 22:39:31 +09:00
Tatsuhiro Tsujikawa
abee658a60 nghttpx: Make sure that ngtcp2_conn_update_pkt_tx_time is called 2021-10-02 19:22:53 +09:00
Tatsuhiro Tsujikawa
87bdc21667 nghttpx: Add --worker-process-grace-shutdown-period option 2021-10-02 18:55:51 +09:00
Tatsuhiro Tsujikawa
3e25ee8181 256k memlock is not enough when reloading happens 2021-09-29 22:16:39 +09:00
Tatsuhiro Tsujikawa
0266c458a3 nghttpx: Add --max-worker-processes option 2021-09-29 22:12:10 +09:00
Tatsuhiro Tsujikawa
d9c7631dcb Fix compile error 2021-09-29 21:05:46 +09:00
Tatsuhiro Tsujikawa
df064fa2ba nghttpx: Unload BPF objects on reload to avoid running out of memlock 2021-09-29 19:33:16 +09:00
Tatsuhiro Tsujikawa
318e0c8447 Guard msghdr_get_local_addr with ENABLE_HTTP3 macro 2021-09-28 22:35:53 +09:00
Tatsuhiro Tsujikawa
17d5503bf2 Update doc 2021-09-28 18:07:31 +09:00
Tatsuhiro Tsujikawa
19b4da6401 nghttpx: Support h3-29 2021-09-26 16:00:47 +09:00
Tatsuhiro Tsujikawa
886dc93f18 nghttpx: Fail h3 connection attempt if no ALPN is negotiated 2021-09-26 16:00:47 +09:00
Tatsuhiro Tsujikawa
407df2822e Remove check for UDP_SEGMENT
Check for UDP_SEGMENT is for debian 10, but now that we have debian
11, remove the check because it breaks cross-build.
2021-09-26 10:29:05 +09:00
Tatsuhiro Tsujikawa
f6da0d342a nghttpx: Fix crash if no keying materials are specified in file 2021-09-24 18:19:01 +09:00
Tatsuhiro Tsujikawa
7271537a15 nghttpx: Add --rlimit-memlock option 2021-09-24 18:13:38 +09:00
Tatsuhiro Tsujikawa
d0e8efac4d nghttpx: Fix bug that reading QUIC secret file fails without line separator 2021-09-24 17:50:28 +09:00
Tatsuhiro Tsujikawa
27e6d56d83 Update doc 2021-09-23 12:02:19 +09:00
Tatsuhiro Tsujikawa
c5122c12cb Update bash_completion 2021-09-23 11:45:23 +09:00
Tatsuhiro Tsujikawa
282050c596 Update manual pages 2021-09-23 11:45:10 +09:00
Tatsuhiro Tsujikawa
308c73bfa2 nghttpx: Read QUIC keying materials from file
Add --frontend-quic-secret-file to read QUIC keying materials from
file.  --frontend-quic-connection-id-encryption-key was removed in
favor of this new option.
2021-09-23 11:18:07 +09:00
Tatsuhiro Tsujikawa
c40309ae8e nghttpx: optarg should be allocated per configuration 2021-09-23 11:01:01 +09:00
Tatsuhiro Tsujikawa
1c7a4ecc7f nghttpx: Rename generate_encrypted_quic_connection_id to generate_quic_connection_id 2021-09-21 23:09:03 +09:00
Tatsuhiro Tsujikawa
80cc623eb2 nghttpx: Allocate server id in Connection ID 2021-09-21 23:08:55 +09:00
Tatsuhiro Tsujikawa
89457fd991 More https 2021-09-21 20:40:57 +09:00
Tatsuhiro Tsujikawa
257043b8fb Fix issue that libev cannot be found with autotools under mac osx 2021-09-21 19:49:56 +09:00
Tatsuhiro Tsujikawa
657d94b992 Fix compile error with libressl 2021-09-21 19:48:38 +09:00
Tatsuhiro Tsujikawa
06dc7d5964 Make sure that nghttp2 can be built from tar archive 2021-09-21 19:48:34 +09:00
Tatsuhiro Tsujikawa
b50079524b Always include optional files to EXTRA_DIST 2021-09-21 19:26:28 +09:00
Tatsuhiro Tsujikawa
cdf1f269ff Add missing cmake files to EXTRA_DIST 2021-09-21 17:53:15 +09:00
Tatsuhiro Tsujikawa
738b562f39 Bump up version number to 1.46.0-DEV 2021-09-20 17:52:07 +09:00
Tatsuhiro Tsujikawa
58499f256b Update bash_completion 2021-09-20 17:07:58 +09:00
Tatsuhiro Tsujikawa
afb455ef80 python3 2021-09-20 17:07:44 +09:00
Tatsuhiro Tsujikawa
f4515e9034 Update manual pages 2021-09-20 17:02:54 +09:00
Tatsuhiro Tsujikawa
aab07d00d7 Bump version number to 1.45.0, LT revision to 35:0:21 2021-09-20 16:58:28 +09:00
Tatsuhiro Tsujikawa
32ecfc6a86 Use https 2021-09-20 16:54:47 +09:00
Tatsuhiro Tsujikawa
e866f9fae7 Update AUTHORS 2021-09-20 16:53:55 +09:00
Tatsuhiro Tsujikawa
a029f6ed2c Rename sphinxcontrib to rubydomain to avoid module loading error
Rename sphinxcontrib to rubydomain to avoid module loading error when
sphinx-build docker image is used.
2021-09-20 13:43:40 +09:00
Tatsuhiro Tsujikawa
5b6e2cb5e0 Allow SPHINXBUILD to be overridden by environment variable 2021-09-20 12:19:26 +09:00
Tatsuhiro Tsujikawa
0264847a37 bpf: Use LINUX_KERNEL_VERSION extern variable 2021-09-19 21:07:40 +09:00
Tatsuhiro Tsujikawa
d276ca0adc Update doc 2021-09-18 19:28:03 +09:00
Tatsuhiro Tsujikawa
6a099ee50a nghttpx: QUIC requires TLS 2021-09-18 19:27:47 +09:00
Tatsuhiro Tsujikawa
be88846972 Build HTTP/3 and eBPF enabled nghttpx with Dockerfile 2021-09-18 18:08:40 +09:00
Tatsuhiro Tsujikawa
9a6b623c25 Update doc 2021-09-18 15:19:15 +09:00
Tatsuhiro Tsujikawa
97b36b8c74 make -C 2021-09-17 23:57:26 +09:00
Tatsuhiro Tsujikawa
0df332e7b8 Update doc 2021-09-17 23:53:35 +09:00
Tatsuhiro Tsujikawa
2d7e6fbb11 Update doc 2021-09-17 21:21:42 +09:00
Tatsuhiro Tsujikawa
fd107ab47c nghttpx: Refactor quic 2021-09-17 19:35:31 +09:00
Tatsuhiro Tsujikawa
1320d7efab nghttpx: Do not accept new connection during graceful shutdown period 2021-09-17 18:30:16 +09:00
Tatsuhiro Tsujikawa
7cdc6cfa6d nghttpx: Store Retry in CloseWait to rate limit its transmission 2021-09-17 17:52:05 +09:00
Tatsuhiro Tsujikawa
095ee9683d integration: Adds tests for chunked response 2021-09-16 22:37:33 +09:00
Tatsuhiro Tsujikawa
1e2081a1c5 Fix integration test error 2021-09-16 22:24:53 +09:00
Tatsuhiro Tsujikawa
e167e07a9a nghttpx: Check that HTTP response message finished safely 2021-09-16 22:00:36 +09:00
Tatsuhiro Tsujikawa
f3b9cd8404 bpf: Add workaround for ubuntu 20.04 2021-09-16 20:20:02 +09:00
Tatsuhiro Tsujikawa
8f9744c07b nghttpx: Pass hashed_scid_ to CloseWait 2021-09-15 23:40:46 +09:00
Tatsuhiro Tsujikawa
684a219e39 nghttpx: Tweak close wait handling 2021-09-15 23:07:46 +09:00
Tatsuhiro Tsujikawa
e2e6d827c7 Update bash_completion 2021-09-15 22:55:38 +09:00
Tatsuhiro Tsujikawa
f0108ece6f Update manual pages 2021-09-15 22:55:21 +09:00
Tatsuhiro Tsujikawa
789b7a5ff1 Update doc 2021-09-15 22:50:47 +09:00
Tatsuhiro Tsujikawa
0961295a82 nghttpx: Transform odcid into hashed cid 2021-09-15 22:19:52 +09:00
Tatsuhiro Tsujikawa
fd060eb9f1 nghttpx: Connection ID encryption 2021-09-15 21:31:03 +09:00
Tatsuhiro Tsujikawa
1feeda4514 nghttpx: Fix bug that worker process never exit 2021-09-15 21:00:41 +09:00
Tatsuhiro Tsujikawa
6d29de0f1e Fix compile error 2021-09-14 17:22:25 +09:00
Tatsuhiro Tsujikawa
74162850f0 nghttpx: Compile with the latest nghttp3 2021-09-14 16:45:11 +09:00
Tatsuhiro Tsujikawa
8903bd1e8a nghttpx: Deal with error from ngtcp2_conn_read_pkt 2021-09-13 23:09:38 +09:00
Tatsuhiro Tsujikawa
4b79a4a10d Add message when checking UDP_SEGMENT in linux/udp.h 2021-09-13 21:46:41 +09:00
Tatsuhiro Tsujikawa
8f419a4869 nghttpx: Add --frontend-quic-congestion-controller option 2021-09-13 21:35:46 +09:00
Tatsuhiro Tsujikawa
fcdac50f79 Should run program 2021-09-13 21:19:18 +09:00
Tatsuhiro Tsujikawa
4541134c88 Add missing include 2021-09-13 21:19:00 +09:00
Tatsuhiro Tsujikawa
b5e5972c2a Update doc 2021-09-12 18:11:11 +09:00
Tatsuhiro Tsujikawa
525d59fdf6 Remove util::make_hostport returning std::string 2021-09-12 18:07:54 +09:00
Tatsuhiro Tsujikawa
00f65afe20 nghttpx: Fix incorrect quic frontend address matching 2021-09-12 18:07:54 +09:00
Tatsuhiro Tsujikawa
fc402f5804 Cleanup 2021-09-12 16:55:56 +09:00
Tatsuhiro Tsujikawa
f74b6d9a43 nghttpx: Add --frontend-quic-require-token option 2021-09-12 15:04:54 +09:00
Tatsuhiro Tsujikawa
ccaf2333ca nghttpx: Enable websocket over h3 2021-09-11 17:56:25 +09:00
Tatsuhiro Tsujikawa
0066bf8eed h2load: Cleanup 2021-09-11 17:00:11 +09:00
Tatsuhiro Tsujikawa
bc8f88f5fa Compile with the latest ngtcp2 2021-09-11 16:57:14 +09:00
Tatsuhiro Tsujikawa
10c9d917ad Fix compile error 2021-09-10 22:55:33 +09:00
Tatsuhiro Tsujikawa
cc5f752f2d nghttpx: Use secure random to create websocket nonce 2021-09-10 22:43:03 +09:00
Tatsuhiro Tsujikawa
39b1a51ff4 Compile with the latest ngtcp2 2021-09-09 23:41:27 +09:00
Tatsuhiro Tsujikawa
a2e2e46af3 Build with OpenSSL v3.0.0 2021-09-09 18:35:35 +09:00
Tatsuhiro Tsujikawa
9d53a7e0a6 Fix compile error 2021-09-07 14:55:30 +09:00
Tatsuhiro Tsujikawa
7ea57eaa18 h2load: Add --max-udp-payload-size option 2021-09-07 14:42:35 +09:00
Tatsuhiro Tsujikawa
1657a425c1 Build with the latest ngtcp2 2021-09-07 13:40:41 +09:00
Tatsuhiro Tsujikawa
e929e92245 nghttpx: Fix typo 2021-09-06 20:59:11 +09:00
Tatsuhiro Tsujikawa
5994e48b28 nghttpx: Add more logging for token validation 2021-09-06 20:58:35 +09:00
Tatsuhiro Tsujikawa
50662c9c9e nghttpx: Guard TLS1_3_VERSION 2021-09-06 20:07:38 +09:00
Tatsuhiro Tsujikawa
addd614e94 nghttpx: Add qlog support 2021-09-06 20:06:38 +09:00
Tatsuhiro Tsujikawa
fbb228050a nghttpx: Fix uninitialized dnf fields 2021-09-06 00:12:04 +09:00
Tatsuhiro Tsujikawa
9bda8e266e nghttpx: Remove BoringSSL early data for QUIC for now 2021-09-05 22:37:20 +09:00
Tatsuhiro Tsujikawa
d977005126 nghttpx: Disable session cache for QUIC since it solely uses ticket 2021-09-05 22:36:43 +09:00
Tatsuhiro Tsujikawa
8b579bc7d0 nghttpx: Always renew TLS ticket for TLSv1.3 2021-09-05 22:26:45 +09:00
Tatsuhiro Tsujikawa
ab16a11aa3 nghttpx: Add --frontend-quic-early-data, disable early data by default 2021-09-05 21:39:45 +09:00
Tatsuhiro Tsujikawa
85347e12de nghttpx: Rate limit Stateless Reset transmission 2021-09-05 19:23:50 +09:00
Tatsuhiro Tsujikawa
67afbbbaa6 nghttpx: Use ngtcp2_cid as a hash key 2021-09-05 19:00:26 +09:00
Tatsuhiro Tsujikawa
b743ee21f0 nghttpx: Implement closing and draining state 2021-09-05 18:01:27 +09:00
Tatsuhiro Tsujikawa
72702a042e Cleanup 2021-09-05 17:47:50 +09:00
Tatsuhiro Tsujikawa
649c69fa9e nghttpx: Do not send CONNECTION_CLOSE on idle timeout 2021-09-04 19:04:22 +09:00
Tatsuhiro Tsujikawa
9fd0b87925 Add missing APIDOCS entry 2021-09-04 18:41:13 +09:00
Tatsuhiro Tsujikawa
1c7a001489 bpf: Take into account entire DCID 2021-09-04 18:31:21 +09:00
Tatsuhiro Tsujikawa
47edc33b0d nghttpx: Use ULOG 2021-09-04 17:48:02 +09:00
Tatsuhiro Tsujikawa
2afad0c650 nghttpx: Use ngtcp2_conn_get_client_initial_dcid 2021-09-04 17:43:24 +09:00
Tatsuhiro Tsujikawa
fb53a6a686 Follow the latest ngtcp2 change 2021-09-04 17:37:00 +09:00
Tatsuhiro Tsujikawa
31b5b78dc1 Use switch to avoid many if-else-if 2021-09-04 17:35:33 +09:00
Tatsuhiro Tsujikawa
2f941c7fb3 Update doc 2021-09-04 17:32:57 +09:00
Tatsuhiro Tsujikawa
ba483b4032 Update doc 2021-09-04 17:30:06 +09:00
Tatsuhiro Tsujikawa
977b0ceee4 make clang-format 2021-09-04 17:27:43 +09:00
Tatsuhiro Tsujikawa
fcc20334da Merge pull request #1613 from mkauf/check_pseudo_header_chars
Stricter checks for pseudo-headers :method and :path
2021-09-04 17:26:47 +09:00
Michael Kaufmann
83c063346d Stricter checks for pseudo-headers :method and :path
Check the allowed characters for ":method" (see RFC 7230, section 3.2.6) and
":path". For ":path", the space and tab characters are now forbidden, but
other special characters are still allowed for compatibility reasons.

Update genvchartbl.py so that it generates the same table as in the code.

Fixes #1611
2021-08-31 21:47:35 +02:00
Tatsuhiro Tsujikawa
c2e29ad06f nghttpx: Enforce worker-frontend-connections for QUIC 2021-08-31 19:48:26 +09:00
Tatsuhiro Tsujikawa
9194d40da7 Update bash_completions 2021-08-31 19:24:41 +09:00
Tatsuhiro Tsujikawa
002073ef57 Update manual pages 2021-08-31 19:24:41 +09:00
Tatsuhiro Tsujikawa
ef3066a1bd nghttpx: Update doc 2021-08-31 19:24:41 +09:00
Tatsuhiro Tsujikawa
65db5b94e4 nghttpx: Document "quic" parameter 2021-08-31 19:24:41 +09:00
Tatsuhiro Tsujikawa
3122038c48 Add HTTP/3 documentation 2021-08-31 19:24:41 +09:00
Tatsuhiro Tsujikawa
54fd0efdfe nghttpx: Return error if quic param is specified when quic is disabled 2021-08-31 17:15:44 +09:00
Tatsuhiro Tsujikawa
f0d1e50d5a cmake: Build bpf 2021-08-31 17:15:37 +09:00
Tatsuhiro Tsujikawa
a87ea20b7c configure: Avoid compile failure 2021-08-31 16:49:55 +09:00
Tatsuhiro Tsujikawa
8e7e40d0cc bpf: Remove redundant -g 2021-08-31 16:49:55 +09:00
Tatsuhiro Tsujikawa
de4d4f6609 Fix cmake Systemd warning 2021-08-31 16:49:55 +09:00
Tatsuhiro Tsujikawa
e01d61484d Fix compile error with cmake 2021-08-31 16:49:55 +09:00
Tatsuhiro Tsujikawa
51f83087f2 nghttpx: Add missing HTTP/3 timer handling 2021-08-31 14:19:31 +09:00
Tatsuhiro Tsujikawa
17012654e1 nghttpx: Add HTTP/3 graceful shutdown 2021-08-31 14:06:59 +09:00
Tatsuhiro Tsujikawa
e998d125ab nghttpx: Send CONNECTION_CLOSE if Retry token validation failed 2021-08-31 13:23:52 +09:00
Tatsuhiro Tsujikawa
95601d3179 nghttpx: Utilize the latest ngtcp2 features 2021-08-31 12:13:06 +09:00
Tatsuhiro Tsujikawa
0566a5833b nghttpx: Fix infinite loop 2021-08-30 18:39:28 +09:00
Tatsuhiro Tsujikawa
c50459b81a bpf: use __builtin_memcpy explicitly to build under ubuntu 20.04 2021-08-30 18:34:26 +09:00
Tatsuhiro Tsujikawa
0e52cf76eb bpf: Add -g flag by default 2021-08-30 18:33:27 +09:00
Tatsuhiro Tsujikawa
0baf725073 Remove unneeded include files 2021-08-30 18:32:58 +09:00
Tatsuhiro Tsujikawa
e77fd7ddb9 Build libbpf on CI 2021-08-29 22:08:42 +09:00
Tatsuhiro Tsujikawa
e5cb5dca61 Fix reuseport_kern.c to work under ubuntu 20.04 2021-08-29 21:09:27 +09:00
Tatsuhiro Tsujikawa
7941b559c5 Fix libbpf configure help message 2021-08-29 21:08:41 +09:00
Tatsuhiro Tsujikawa
58d81dbc52 nghttpx: Send Stateless Reset in response to Short packet only for now 2021-08-29 21:08:41 +09:00
Tatsuhiro Tsujikawa
2b4dc4496f nghttpx: Forward QUIC UDP datagram to lingering worker in graceful shutdown
Forward QUIC UDP datagram to lingering worker process which is in
graceful shutdown.  Both SIGHUP and SIGUSR2 work.  To make this work
correctly, eBPF is required.
2021-08-29 18:35:41 +09:00
Tatsuhiro Tsujikawa
c5e9d0096a nghttpx: Fix crash when ConnectionHandler is deleted while doing memcached request 2021-08-29 17:17:36 +09:00
Tatsuhiro Tsujikawa
c6f9780b1b Add accidentally deleted BPFCFLAGS 2021-08-29 15:47:45 +09:00
Tatsuhiro Tsujikawa
ef694923f7 Provide enum bpf_stats_type if not defined in linux/bpf.h for older kernel 2021-08-29 14:30:59 +09:00
Tatsuhiro Tsujikawa
8d02203bb6 Add LIBBPF_CFLAGS for eBPF program and nghttpx 2021-08-29 13:58:10 +09:00
Tatsuhiro Tsujikawa
1e75be3b5d Find libbpf with pkg-config 2021-08-29 13:43:07 +09:00
Tatsuhiro Tsujikawa
7d13891066 nghttpx: Rename eBPF options 2021-08-27 21:34:18 +09:00
Tatsuhiro Tsujikawa
4292bd7ad9 nghttpx: Set max udp payload size to IPv4 minimum payload size for now 2021-08-27 21:26:50 +09:00
Tatsuhiro Tsujikawa
82cd110dbe nghttpx: Use SHRPX_MAX_UDP_PAYLOAD_SIZE 2021-08-27 21:13:26 +09:00
Tatsuhiro Tsujikawa
d2729193c7 nghttpx: Add --frontend-http3-max-concurrent-streams option 2021-08-27 21:11:03 +09:00
Tatsuhiro Tsujikawa
87fb325357 nghttpx: Add window size options for HTTP/3 connection 2021-08-27 21:02:45 +09:00
Tatsuhiro Tsujikawa
fb8ff7b892 nghttpx: Format duration for frontend-quic-idle-timeout default value 2021-08-27 19:52:24 +09:00
Tatsuhiro Tsujikawa
5aeae7444f nghttpx: Add --frontend-quic-debug-log option 2021-08-27 19:16:25 +09:00
Tatsuhiro Tsujikawa
c9b11e9fbf nghttpx: Rename --quic-idle-timeout to --frontend-quic-idle-timeout 2021-08-27 19:03:06 +09:00
Tatsuhiro Tsujikawa
0005efa508 nghttpx: --frontend-http3-read-timeout should be noop if HTTP/3 is disabled 2021-08-27 18:45:19 +09:00
Tatsuhiro Tsujikawa
6931cb9d65 nghttpx: Add --quic-idle-timeout option 2021-08-27 18:44:33 +09:00
Tatsuhiro Tsujikawa
c1bcf0f11a nghttpx: Do not dump HTTP/3 header fields 2021-08-27 18:35:27 +09:00
Tatsuhiro Tsujikawa
717e7ae8b2 nghttpx: Add --frontend-http3-read-timeout option
Add --frontend-http3-read-timeout option.  QUIC idle timeout option
will be added later.
2021-08-27 18:29:06 +09:00
Tatsuhiro Tsujikawa
bed00fb8e1 nghttpx: Use buf.size() 2021-08-27 18:20:17 +09:00
Tatsuhiro Tsujikawa
2010401b81 nghttpx: Send APPLICATION_CLOSE on app read timeout 2021-08-27 18:19:44 +09:00
Tatsuhiro Tsujikawa
23e09e3b3c Mention libbpf-dev in README.rst 2021-08-26 22:12:54 +09:00
Tatsuhiro Tsujikawa
80c9d46b70 Update doc 2021-08-26 22:10:02 +09:00
Tatsuhiro Tsujikawa
0aa107426c Bump QUIC flavored OpenSSL 2021-08-26 21:41:06 +09:00
Tatsuhiro Tsujikawa
1517c77d9c h2load: Do not use legacy QUIC transport_parameters code point 2021-08-26 21:34:49 +09:00
Tatsuhiro Tsujikawa
51bf79bb8c nghttpx: Add --http2-altsvc option 2021-08-26 21:34:49 +09:00
Tatsuhiro Tsujikawa
d88eadff13 nghttpx: Make sure each quic frontend endpoint has a unique address 2021-08-26 21:34:49 +09:00
Tatsuhiro Tsujikawa
0d35e8e15e nghttpx: Do not allow quic on UNIX domain socket for now 2021-08-26 21:34:49 +09:00
Tatsuhiro Tsujikawa
a0066a1ccf nghttpx: Send NEW_TOKEN and very token from client 2021-08-26 21:34:49 +09:00
Tatsuhiro Tsujikawa
7a5082e8c4 nghttpx: Clean up confusing dcid/scid mixup 2021-08-26 21:34:49 +09:00
Tatsuhiro Tsujikawa
dfc345756c nghttpx: Send Retry packet 2021-08-26 21:34:49 +09:00
Tatsuhiro Tsujikawa
137da6adf6 nghttpx: Generate and set QUIC secrets 2021-08-26 21:34:49 +09:00
Tatsuhiro Tsujikawa
8563ec5a7a nghttpx: Add options to specify eBPF program file path and disable eBPF 2021-08-26 21:34:49 +09:00
Tatsuhiro Tsujikawa
8ac4bee3bc nghttpx: Add eBPF program to steer QUIC datagram to a correct socket 2021-08-26 21:34:49 +09:00
Tatsuhiro Tsujikawa
579fb478b5 nghttpx: Fix heap-use-after-free on initialization failure 2021-08-26 13:26:37 +09:00
Tatsuhiro Tsujikawa
33c580ebbf Forward QUIC packet to the correct worker 2021-08-23 22:21:48 +09:00
Tatsuhiro Tsujikawa
ff389b3e97 Merge branch 'quic' 2021-08-23 18:41:35 +09:00
Tatsuhiro Tsujikawa
50fe8e7852 Check the availability of SSL_is_quic 2021-08-22 23:59:09 +09:00
Tatsuhiro Tsujikawa
cdb6d19989 Enable HTTP/3 build for cmake on CI 2021-08-22 23:54:29 +09:00
Tatsuhiro Tsujikawa
29694e2945 nghttpx: Fix build error regarding RAND_bytes 2021-08-22 23:54:29 +09:00
Tatsuhiro Tsujikawa
9fe08d3913 nghttpx: Fix build without mruby 2021-08-22 23:54:29 +09:00
Tatsuhiro Tsujikawa
c07a0d9005 Allow HTTP/3 in cmake build 2021-08-22 23:54:29 +09:00
Tatsuhiro Tsujikawa
cbd45478e0 Cleanup flags/libs order 2021-08-22 23:54:29 +09:00
Tatsuhiro Tsujikawa
6f243108e9 nghttpx: Fix CI build error 2021-08-22 23:54:29 +09:00
Tatsuhiro Tsujikawa
0dcdf7ae21 Run http3 build on CI 2021-08-22 23:54:29 +09:00
Tatsuhiro Tsujikawa
e7ef2bec8b Rename h2load Dockerfile to Dockerfile-h2load-http3 2021-08-22 23:54:29 +09:00
Tatsuhiro Tsujikawa
4f4dce82c6 Update h2load Dockerfile 2021-08-22 23:54:29 +09:00
Tatsuhiro Tsujikawa
a619e7a88c Define UDP_SEGMENT if linux/udp.h has it 2021-08-22 23:54:29 +09:00
Tatsuhiro Tsujikawa
102d960106 nghttpx: Compile without UDP_SEGMENT 2021-08-22 23:54:29 +09:00
Tatsuhiro Tsujikawa
7de71b29a0 Update doc 2021-08-22 23:54:29 +09:00
Tatsuhiro Tsujikawa
4eced8a393 Build without HTTP/3 support 2021-08-22 23:54:29 +09:00
Tatsuhiro Tsujikawa
710b9c35e5 Merge pull request #1610 from amirlivneh/comment-typo
Fix reference to non-existing nghttp2_option_set_max_send_header_block_size() in comment
2021-08-22 23:35:05 +09:00
Tatsuhiro Tsujikawa
f46984d218 nghttpx: Enable QUIC 0RTT 2021-08-21 18:34:08 +09:00
Tatsuhiro Tsujikawa
44663a7e6e nghttpx: Handle backend reset and early response 2021-08-21 18:34:08 +09:00
Tatsuhiro Tsujikawa
446124f378 nghttpx: Process request body 2021-08-21 18:34:08 +09:00
Tatsuhiro Tsujikawa
c45f2085d5 nghttpx: Fix veccnt assertion 2021-08-21 18:34:08 +09:00
Tatsuhiro Tsujikawa
3abf62b41a nghttpx: Send stateless reset token in TP 2021-08-21 18:34:08 +09:00
Tatsuhiro Tsujikawa
9b2982510e nghttpx: Send stateless reset 2021-08-21 18:34:08 +09:00
Tatsuhiro Tsujikawa
48bb1ebe01 nghttpx: Add configuration to enable ngtcp2 logging (no cmd-line opt yet) 2021-08-21 18:34:08 +09:00
Tatsuhiro Tsujikawa
fe4c6e4c56 nghttpx: Generate stateless reset secret 2021-08-21 18:34:08 +09:00
Tatsuhiro Tsujikawa
37bd9ffc48 nghttpx: Implement http_reset_stream and http_send_stop_sending 2021-08-21 18:34:08 +09:00
Tatsuhiro Tsujikawa
b0548b4944 nghttpx: Complete HTTP request and response 2021-08-21 18:34:08 +09:00
Tatsuhiro Tsujikawa
12425556c1 nghttpx: Extend Downstream stream_id to 64 bits 2021-08-21 18:34:07 +09:00
Tatsuhiro Tsujikawa
3ed2da562b nghttpx: Add HTTP3 skeleton and minor SSL_CTX fix 2021-08-21 18:34:07 +09:00
Tatsuhiro Tsujikawa
354f46d8c5 nghttpx: Add QUIC timeouts 2021-08-21 18:34:07 +09:00
Tatsuhiro Tsujikawa
e70f0db83c nghttpx: QUIC handshake now works 2021-08-21 18:34:07 +09:00
Tatsuhiro Tsujikawa
49b8c56fde nghttpx: Use existing QUIC error object 2021-08-21 18:34:07 +09:00
Tatsuhiro Tsujikawa
940fdd5573 nghttpx: Read quic packet 2021-08-21 18:34:04 +09:00
Tatsuhiro Tsujikawa
ef53db201e nghttpx: Create QUIC SSL_CTX
We choose an easier route to duplicate SSL_CTX for QUIC.
2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
aeb0b0728d nghttpx: Add QUICConnectionHandler and HTTP3Upstream skeleton 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
8b2746abf1 nghttpx: Add QUICListener 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
01da060496 nghttpx: Create quic server socket 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
20cbd269c4 Compile with the latest ngtcp2 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
7c2cd43dfa Compile with the latest ngtcp2 and nghttp3 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
de5feff720 Compile with the latest nghttp3 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
7342de837d Compile with the latest ngtcp2 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
aa2c648918 Just use h3 ALPN 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
e914b50d16 Compile with the latest ngtcp2 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
f79554f918 Count outgoing packets 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
213cc9c4b5 Enlarge receive buffer 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
05f3b8fa0f Adopt ngtcp2_crypto_recv_crypto_data_cb 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
bc53624133 Do not specify max_udp_payload_size for now 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
5944d034da Avoid std::ostringstream 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
df400feb61 make clang-format 2021-08-21 18:33:39 +09:00
Hajime Fujita
48e10c57da h2load: Add qlog output support 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
1eb818b64c QUIC UDP GSO 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
0954932091 Rewrite docker file
Rewrite docker file so that:

- avoid k8s debian-base
- build h2load as statically as possible
2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
e584d9cd2e Measure the number of UDP datagrams sent and received 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
4d140ea6bd Update Dockerfile 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
09a2e50fc2 Support both h3 and h3-29 ALPN and their corresponding QUIC versions 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
35d8ef33ef Compile with the latest ngtcp2 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
f1ff2af47a Deal with 0 length HTTP data write case 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
d2d2c31ec7 Follow ngtcp2_conn_writev_stream specification change 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
95102c1c6c Compile with the latest ngtcp2 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
fa8c16ae01 Compile with the latest ngtcp2 and nghttp3 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
7ca2a8213d h2load: Enable --data for HTTP/3 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
1c8e5046e5 Compile with the latest ngtcp2 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
68a5652733 Build with draft-32 openssl 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
6b4be30c64 Cap --window-bits to 26 for QUIC 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
6ce952ad4a Set X25519 as default 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
5ae62dd9d7 Cap --window-bits to 23 for QUIC 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
51987107a2 Compile with the latest ngtcp2 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
e4a8c4813c Compile with the latest ngtcp2 2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
3d708f7dc4 Compile with the latest ngtcp2 2021-08-21 18:33:39 +09:00
George Liu
4b5bcb56bc fix quic branch Dockerfile
libjemalloc1 package doesn't exist as it's now libjemalloc2 named

Get:1 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB]
Get:2 http://deb.debian.org/debian buster InRelease [121 kB]
Get:3 http://deb.debian.org/debian buster-updates InRelease [51.9 kB]
Get:4 http://security.debian.org/debian-security buster/updates/main amd64 Packages [213 kB]
Get:5 http://deb.debian.org/debian buster/main amd64 Packages [7905 kB]
Get:6 http://deb.debian.org/debian buster-updates/main amd64 Packages [7868 B]
Fetched 8364 kB in 1s (6499 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package libjemalloc1

fix reference to OpenSSL 1.1.1 branch

Cloning into 'openssl'...
warning: Could not find remote branch OpenSSL_1_1_1d-quic-draft-29 to clone.
fatal: Remote branch OpenSSL_1_1_1d-quic-draft-29 not found in upstream origin
2021-08-21 18:33:39 +09:00
Tatsuhiro Tsujikawa
10ec8c9558 Compile with the latest ngtcp2 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
3900f758ea QUIC needs termination without session 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
a3346fbad8 Compile with latest ngtcp2 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
f73d58d74e quic draft-29 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
813d5e1ddf Compile with latest ngtcp2 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
acb661df72 Fix bug for platform which does not have SOCK_NONBLOCK 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
4bc7710de9 Fix compile error 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
b8c1f4f138 Compile with latest ngtcp2 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
387b67472c Compile latest ngtcp2 crypto lib 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
b2c099bac6 Use ngtcp2_conn_handle_expiry 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
1acebb1cc4 draft-28 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
8d89a8dcb0 Assert ndatalen 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
a60a34331b Revert "Ensure complete packet is written"
This reverts commit c19046b09f8e66713f0e067f986ed92d676eb6b6.
2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
749015eb86 Ensure complete packet is written 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
4b45142e72 Fix compile error with the latest ngtcp2 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
76009ce7b9 draft-27 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
2722119776 Handle stream limit increment 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
c724585bce Update Dockerfile 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
0b61e46f95 draft-25 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
5c0da486b9 Remove unused member function declaration 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
9701e5e6e4 Fix compile error 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
1684091234 Bump base image and use OpenSSL_1_1_1d-quic-draft-24 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
a93eb8b8f5 Optimize QUIC write 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
c591ab5e6f Only count STREAM data as bytes_total 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
b3fbebed55 Use correct type 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
4621f88441 Follow ngtcp2 API update 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
747edb3a99 quic draft-24 2021-08-21 18:33:38 +09:00
Dmitri Tikhonov
558970e281 Update Dockerfile to use I-D 23 branches of ngtcp2 and openssl 2021-08-21 18:33:38 +09:00
Lucas Pardue
73fd20a608 Add SSLKEYLOGFILE support 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
78c2c33b9e Compile with the latest ngtcp2 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
610add1f59 Send SNI 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
655510ce28 h3-23 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
f7414700f4 Small adjustment of successful HTTP/3 error code
Non-zero successful error code is a bit annoying because ngtcp2 does
not know it.  Enforcing successful application error code to 0 is a
lot simpler.
2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
53a860a5bf Simplify write_quic 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
1aae450303 Handle sending just fine 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
b3a2f8837c Avoid setting 0 to repeat field 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
33d2a93294 Add missing acked_stream_data_offset callback 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
2da0db70de Fix return value 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
8b5cbf8066 Update doc 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
9668563801 Update docker build and doc 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
ff7067f3a3 Compile with the latest ngtcp2 and ngtcp2_crypto_openssl 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
6b8b152444 Remove error handling which does not happen 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
3dbe3b3e7f Follow ngtcp2 API changes and use libngtcp2_crypto_openssl 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
7aa4bff97b quic: Support TLS_AES_128_CCM_SHA256 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
6002fac9f1 h2load: Add --tls13-ciphers option 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
231c6ac862 Add Dockerfile 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
c3eb7e1634 Handle preferred address 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
05a6ee2b49 Show ngtcp2 debug log with --verbose 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
94d76c042d h2load: Add --groups option 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
23ccaa6191 Always call write_quic when timer expires 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
476e9d0a48 h3-22 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
7cd5ed6fc6 Handle Retry 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
750c23f319 quic: Configure settings with options 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
bb36df8b2e h2load: Fix possible deadlock 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
470c43a986 Fix link 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
8ea78e8361 Add build instruction 2021-08-21 18:33:38 +09:00
Tatsuhiro Tsujikawa
9c748d20d5 [WIP] Add QUIC to h2load 2021-08-21 18:33:38 +09:00
Amir Livneh
af15b22b03 Fix reference to non-existing nghttp2_option_set_max_send_header_block_size() in comment 2021-08-19 13:14:58 -04:00
Tatsuhiro Tsujikawa
80c9c705b8 Merge pull request #1607 from nghttp2/dnf
Add "dnf" (= "do not forward") parameter to backend option
2021-08-14 17:35:20 +09:00
Tatsuhiro Tsujikawa
138419d232 Add "dnf" (= "do not forward") parameter to backend option 2021-08-14 17:16:21 +09:00
Tatsuhiro Tsujikawa
8cee15bc5a Merge pull request #1603 from JackyYin/improve-doc
update doc for nghttp2_session_mem_recv
2021-08-10 21:25:41 +09:00
Jacky_Yin
8113974b26 doc: update document for nghttp2_session_mem_recv 2021-08-09 23:54:07 +08:00
Tatsuhiro Tsujikawa
2b70cefd48 Merge pull request #1598 from danbev/programmers_guide_typo
Fix typo in programmers-guide.rst
2021-08-08 15:49:43 +09:00
Tatsuhiro Tsujikawa
16054d4bfd Merge pull request #1602 from lhuang04/file_read_callback_prototype_mismatch
Fix prototype mismatch for function 'file_read_callback'
2021-08-08 15:48:55 +09:00
lhuang04
c2d4a53b67 Fix prototype mismatch for function 'file_read_callback'
Summary:
The [data_flags](https://github.com/lhuang04/nghttp2/blob/master/src/HttpServer.cc#L1078) is defined as `uint32_t*` in definition, but delared as [int*](https://github.com/lhuang04/nghttp2/blob/master/src/HttpServer.h#L245) in the prototype.

```
stderr: error: no previous prototype for function 'file_read_callback' [-Werror,-Wmissing-prototypes]
ssize_t file_read_callback(nghttp2_session *session, int32_t stream_id,
        ^
```

Test Plan:

Reviewers:

Subscribers:

Tasks:

Tags:
2021-08-07 07:24:21 -07:00
Daniel Bevenius
3448b1c78c Fix typo in programmers-guide.rst 2021-07-26 14:44:15 +02:00
445 changed files with 43365 additions and 38929 deletions

View File

@@ -2,15 +2,35 @@
Language: Cpp Language: Cpp
AccessModifierOffset: -2 AccessModifierOffset: -2
AlignAfterOpenBracket: Align AlignAfterOpenBracket: Align
AlignConsecutiveMacros: None AlignArrayOfStructures: None
AlignConsecutiveAssignments: None AlignConsecutiveAssignments:
AlignConsecutiveBitFields: None Enabled: false
AlignConsecutiveDeclarations: None AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: true
AlignConsecutiveBitFields:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: true
AlignConsecutiveDeclarations:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: true
AlignConsecutiveMacros:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: true
AlignEscapedNewlines: Right AlignEscapedNewlines: Right
AlignOperands: Align AlignOperands: Align
AlignTrailingComments: true AlignTrailingComments: true
AllowAllArgumentsOnNextLine: true AllowAllArgumentsOnNextLine: true
AllowAllConstructorInitializersOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true AllowAllParametersOfDeclarationOnNextLine: true
AllowShortEnumsOnASingleLine: true AllowShortEnumsOnASingleLine: true
AllowShortBlocksOnASingleLine: Never AllowShortBlocksOnASingleLine: Never
@@ -47,7 +67,7 @@ BraceWrapping:
SplitEmptyRecord: true SplitEmptyRecord: true
SplitEmptyNamespace: true SplitEmptyNamespace: true
BreakBeforeBinaryOperators: None BreakBeforeBinaryOperators: None
BreakBeforeConceptDeclarations: true BreakBeforeConceptDeclarations: Always
BreakBeforeBraces: Attach BreakBeforeBraces: Attach
BreakBeforeInheritanceComma: false BreakBeforeInheritanceComma: false
BreakInheritanceList: BeforeColon BreakInheritanceList: BeforeColon
@@ -58,23 +78,28 @@ BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true BreakStringLiterals: true
ColumnLimit: 80 ColumnLimit: 80
CommentPragmas: '^ IWYU pragma:' CommentPragmas: '^ IWYU pragma:'
QualifierAlignment: Leave
CompactNamespaces: false CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 4 ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4 ContinuationIndentWidth: 4
Cpp11BracedListStyle: true Cpp11BracedListStyle: true
DeriveLineEnding: true DeriveLineEnding: true
DerivePointerAlignment: false DerivePointerAlignment: false
DisableFormat: false DisableFormat: false
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: LogicalBlock EmptyLineBeforeAccessModifier: LogicalBlock
ExperimentalAutoDetectBinPacking: false ExperimentalAutoDetectBinPacking: false
PackConstructorInitializers: NextLine
BasedOnStyle: ''
ConstructorInitializerAllOnOneLineOrOnePerLine: false
AllowAllConstructorInitializersOnNextLine: true
FixNamespaceComments: true FixNamespaceComments: true
ForEachMacros: ForEachMacros:
- foreach - foreach
- Q_FOREACH - Q_FOREACH
- BOOST_FOREACH - BOOST_FOREACH
StatementAttributeLikeMacros: IfMacros:
- Q_EMIT - KJ_IF_MAYBE
IncludeBlocks: Preserve IncludeBlocks: Preserve
IncludeCategories: IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/' - Regex: '^"(llvm|llvm-c|clang|clang-c)/'
@@ -91,18 +116,21 @@ IncludeCategories:
CaseSensitive: false CaseSensitive: false
IncludeIsMainRegex: '$' IncludeIsMainRegex: '$'
IncludeIsMainSourceRegex: '' IncludeIsMainSourceRegex: ''
IndentAccessModifiers: false
IndentCaseLabels: false IndentCaseLabels: false
IndentCaseBlocks: false IndentCaseBlocks: false
IndentGotoLabels: true IndentGotoLabels: true
IndentPPDirectives: AfterHash IndentPPDirectives: AfterHash
IndentExternBlock: AfterExternBlock IndentExternBlock: AfterExternBlock
IndentRequires: false IndentRequiresClause: false
IndentWidth: 2 IndentWidth: 2
IndentWrappedFunctionNames: false IndentWrappedFunctionNames: false
InsertBraces: false
InsertTrailingCommas: None InsertTrailingCommas: None
JavaScriptQuotes: Leave JavaScriptQuotes: Leave
JavaScriptWrapImports: true JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: true KeepEmptyLinesAtTheStartOfBlocks: true
LambdaBodyIndentation: Signature
MacroBlockBegin: '' MacroBlockBegin: ''
MacroBlockEnd: '' MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1 MaxEmptyLinesToKeep: 1
@@ -116,14 +144,21 @@ PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19 PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300 PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120 PenaltyBreakFirstLessLess: 120
PenaltyBreakOpenParenthesis: 0
PenaltyBreakString: 1000 PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10 PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000 PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60 PenaltyReturnTypeOnItsOwnLine: 60
PenaltyIndentedWhitespace: 0 PenaltyIndentedWhitespace: 0
PointerAlignment: Right PointerAlignment: Right
PPIndentWidth: -1
ReferenceAlignment: Pointer
ReflowComments: true ReflowComments: true
SortIncludes: false RemoveBracesLLVM: false
RequiresClausePosition: OwnLine
SeparateDefinitionBlocks: Leave
ShortNamespaceLines: 1
SortIncludes: Never
SortJavaStaticImport: Before SortJavaStaticImport: Before
SortUsingDeclarations: true SortUsingDeclarations: true
SpaceAfterCStyleCast: false SpaceAfterCStyleCast: false
@@ -135,20 +170,35 @@ SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements SpaceBeforeParens: ControlStatements
SpaceBeforeParensOptions:
AfterControlStatements: true
AfterForeachMacros: true
AfterFunctionDefinitionName: false
AfterFunctionDeclarationName: false
AfterIfMacros: true
AfterOverloadedOperator: false
AfterRequiresInClause: false
AfterRequiresInExpression: false
BeforeNonEmptyParentheses: false
SpaceAroundPointerQualifiers: Default SpaceAroundPointerQualifiers: Default
SpaceBeforeRangeBasedForLoopColon: true SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyBlock: false SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1 SpacesBeforeTrailingComments: 1
SpacesInAngles: false SpacesInAngles: Never
SpacesInConditionalStatement: false SpacesInConditionalStatement: false
SpacesInContainerLiterals: true SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false SpacesInCStyleCastParentheses: false
SpacesInLineCommentPrefix:
Minimum: 1
Maximum: -1
SpacesInParentheses: false SpacesInParentheses: false
SpacesInSquareBrackets: false SpacesInSquareBrackets: false
SpaceBeforeSquareBrackets: false SpaceBeforeSquareBrackets: false
BitFieldColonSpacing: Both BitFieldColonSpacing: Both
Standard: Latest Standard: Latest
StatementAttributeLikeMacros:
- Q_EMIT
StatementMacros: StatementMacros:
- Q_UNUSED - Q_UNUSED
- QT_REQUIRE_VERSION - QT_REQUIRE_VERSION

10
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,10 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
- package-ecosystem: "gomod"
directory: "/"
schedule:
interval: "weekly"

View File

@@ -1,32 +1,268 @@
name: build name: build
on: push on: [push, pull_request]
permissions: read-all
env:
LIBBPF_VERSION: v1.3.0
OPENSSL1_VERSION: 1_1_1w+quic
OPENSSL3_VERSION: 3.1.5+quic
BORINGSSL_VERSION: 6ab7c1482bf4cdc91c87bc512aaf68ffb18975ec
AWSLC_VERSION: v1.26.0
NGHTTP3_VERSION: v1.3.0
NGTCP2_VERSION: v1.5.0
jobs: jobs:
build: build-cache:
strategy:
matrix:
os: [ubuntu-22.04, macos-13, macos-14]
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Restore libbpf cache
id: cache-libbpf
uses: actions/cache@v4
if: runner.os == 'Linux'
with:
path: libbpf/build
key: ${{ matrix.os }}-libbpf-${{ env.LIBBPF_VERSION }}
- name: Restore OpenSSL v1.1.1 cache
id: cache-openssl1
uses: actions/cache@v4
with:
path: openssl1/build
key: ${{ matrix.os }}-openssl-${{ env.OPENSSL1_VERSION }}
- name: Restore OpenSSL v3.x cache
id: cache-openssl3
uses: actions/cache@v4
with:
path: openssl3/build
key: ${{ matrix.os }}-openssl-${{ env.OPENSSL3_VERSION }}
- name: Restore BoringSSL cache
id: cache-boringssl
uses: actions/cache@v4
with:
path: |
boringssl/build/crypto/libcrypto.a
boringssl/build/ssl/libssl.a
boringssl/include
key: ${{ matrix.os }}-boringssl-${{ env.BORINGSSL_VERSION }}
- name: Restore aws-lc cache
id: cache-awslc
uses: actions/cache@v4
with:
path: |
aws-lc/build/crypto/libcrypto.a
aws-lc/build/ssl/libssl.a
aws-lc/include
key: ${{ matrix.os }}-awslc-${{ env.AWSLC_VERSION }}
- name: Restore nghttp3 cache
id: cache-nghttp3
uses: actions/cache@v4
with:
path: nghttp3/build
key: ${{ matrix.os }}-nghttp3-${{ env.NGHTTP3_VERSION }}
- name: Restore ngtcp2 + quictls/openssl v1.1.1 cache
id: cache-ngtcp2-openssl1
uses: actions/cache@v4
with:
path: ngtcp2-openssl1/build
key: ${{ matrix.os }}-ngtcp2-${{ env.NGTCP2_VERSION }}-openssl-${{ env.OPENSSL1_VERSION }}
- name: Restore ngtcp2 + quictls/openssl v3.x cache
id: cache-ngtcp2-openssl3
uses: actions/cache@v4
with:
path: ngtcp2-openssl3/build
key: ${{ matrix.os }}-ngtcp2-${{ env.NGTCP2_VERSION }}-openssl-${{ env.OPENSSL3_VERSION }}
- id: settings
if: |
(steps.cache-libbpf.outputs.cache-hit != 'true' && runner.os == 'Linux') ||
steps.cache-openssl1.outputs.cache-hit != 'true' ||
steps.cache-openssl3.outputs.cache-hit != 'true' ||
steps.cache-boringssl.outputs.cache-hit != 'true' ||
steps.cache-awslc.outputs.cache-hit != 'true' ||
steps.cache-nghttp3.outputs.cache-hit != 'true' ||
steps.cache-ngtcp2-openssl1.outputs.cache-hit != 'true' ||
steps.cache-ngtcp2-openssl3.outputs.cache-hit != 'true'
run: |
echo 'needs-build=true' >> $GITHUB_OUTPUT
- name: Linux setup
if: runner.os == 'Linux' && steps.settings.outputs.needs-build == 'true'
run: |
sudo apt-get update
sudo apt-get install \
g++-12 \
clang-15 \
autoconf \
automake \
autotools-dev \
libtool \
pkg-config \
libelf-dev \
cmake \
cmake-data
- name: MacOS setup
if: runner.os == 'macOS' && steps.settings.outputs.needs-build == 'true'
run: |
brew install \
autoconf \
automake \
pkg-config \
libtool
- name: Build libbpf
if: steps.cache-libbpf.outputs.cache-hit != 'true' && runner.os == 'Linux'
run: |
git clone --recursive -b ${{ env.LIBBPF_VERSION }} https://github.com/libbpf/libbpf
cd libbpf
make -C src install PREFIX=$PWD/build
- name: Build quictls/openssl v1.1.1
if: steps.cache-openssl1.outputs.cache-hit != 'true'
run: |
git clone --recursive --depth 1 -b OpenSSL_${{ env.OPENSSL1_VERSION }} https://github.com/quictls/openssl openssl1
cd openssl1
./config --prefix=$PWD/build
make -j"$(nproc 2> /dev/null || sysctl -n hw.ncpu)"
make install_sw
- name: Build quictls/openssl v3.x
if: steps.cache-openssl3.outputs.cache-hit != 'true'
run: |
git clone --recursive --depth 1 -b openssl-${{ env.OPENSSL3_VERSION }} https://github.com/quictls/openssl openssl3
cd openssl3
./config enable-ktls --prefix=$PWD/build --libdir=$PWD/build/lib
make -j"$(nproc 2> /dev/null || sysctl -n hw.ncpu)"
make install_sw
- name: Build BoringSSL
if: steps.cache-boringssl.outputs.cache-hit != 'true'
run: |
mkdir boringssl
cd boringssl
git init
git remote add origin https://boringssl.googlesource.com/boringssl
git fetch origin --depth 1 ${{ env.BORINGSSL_VERSION }}
git checkout ${{ env.BORINGSSL_VERSION }}
mkdir build
cd build
cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON ..
make -j"$(nproc 2> /dev/null || sysctl -n hw.ncpu)"
- name: Build aws-lc
if: steps.cache-awslc.outputs.cache-hit != 'true'
run: |
git clone --recursive --depth 1 -b "${AWSLC_VERSION}" https://github.com/aws/aws-lc
cd aws-lc
cmake -B build -DDISABLE_GO=ON
make -j"$(nproc 2> /dev/null || sysctl -n hw.ncpu)" -C build
- name: Build nghttp3
if: steps.cache-nghttp3.outputs.cache-hit != 'true'
run: |
git clone --recursive --depth 1 -b ${{ env.NGHTTP3_VERSION}} https://github.com/ngtcp2/nghttp3
cd nghttp3
autoreconf -i
./configure --prefix=$PWD/build --enable-lib-only
make -j"$(nproc 2> /dev/null || sysctl -n hw.ncpu)" check
make install
- name: Build ngtcp2 + quictls/openssl v1.1.1 + BoringSSL
if: steps.cache-ngtcp2-openssl1.outputs.cache-hit != 'true'
run: |
git clone --recursive --depth 1 -b ${{ env.NGTCP2_VERSION }} https://github.com/ngtcp2/ngtcp2 ngtcp2-openssl1
cd ngtcp2-openssl1
autoreconf -i
./configure --prefix=$PWD/build --enable-lib-only \
PKG_CONFIG_PATH="../openssl1/build/lib/pkgconfig" \
BORINGSSL_CFLAGS="-I$PWD/../boringssl/include/" \
BORINGSSL_LIBS="-L$PWD/../boringssl/build/ssl -lssl -L$PWD/../boringssl/build/crypto -lcrypto" \
--with-boringssl
make -j"$(nproc 2> /dev/null || sysctl -n hw.ncpu)" check
make install
- name: Build ngtcp2 + quictls/openssl v3.x + aws-lc
if: steps.cache-ngtcp2-openssl3.outputs.cache-hit != 'true'
run: |
git clone --recursive --depth 1 -b ${{ env.NGTCP2_VERSION }} https://github.com/ngtcp2/ngtcp2 ngtcp2-openssl3
cd ngtcp2-openssl3
autoreconf -i
./configure --prefix=$PWD/build --enable-lib-only \
PKG_CONFIG_PATH="../openssl3/build/lib/pkgconfig" \
BORINGSSL_CFLAGS="-I$PWD/../aws-lc/include/" \
BORINGSSL_LIBS="-L$PWD/../aws-lc/build/ssl -lssl -L$PWD/../aws-lc/build/crypto -lcrypto" \
--with-boringssl
make -j"$(nproc 2> /dev/null || sysctl -n hw.ncpu)" check
make install
build:
needs:
- build-cache
strategy: strategy:
matrix: matrix:
os: [ubuntu-20.04, macos-10.15] os: [ubuntu-22.04, macos-13, macos-14]
compiler: [gcc, clang] compiler: [gcc, clang]
buildtool: [autotools, cmake] buildtool: [autotools, cmake]
http3: [http3, no-http3]
openssl: [openssl1, openssl3, boringssl, awslc]
exclude:
- os: macos-13
openssl: openssl3
- os: macos-14
openssl: openssl3
- http3: no-http3
openssl: openssl3
- os: macos-13
compiler: gcc
- os: macos-14
compiler: gcc
- # disable macos cmake because of include path issue
os: macos-13
buildtool: cmake
- # disable macos cmake because of include path issue
os: macos-14
buildtool: cmake
- os: macos-13
openssl: boringssl
- os: macos-14
openssl: boringssl
- openssl: boringssl
buildtool: cmake
- openssl: boringssl
compiler: gcc
- os: macos-13
openssl: awslc
- os: macos-14
openssl: awslc
- openssl: awslc
buildtool: cmake
- openssl: awslc
compiler: gcc
include:
- os: ubuntu-22.04
compiler: clang
buildtool: distcheck
http3: http3
openssl: awslc
runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v2 - name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Linux setup - name: Linux setup
if: runner.os == 'Linux' if: runner.os == 'Linux'
run: | run: |
sudo apt-get update
sudo apt-get install \ sudo apt-get install \
g++-8 \ g++-12 \
clang-10 \ clang-15 \
autoconf \ autoconf \
automake \ automake \
autotools-dev \ autotools-dev \
libtool \ libtool \
pkg-config \ pkg-config \
zlib1g-dev \ zlib1g-dev \
libcunit1-dev \
libssl-dev \ libssl-dev \
libxml2-dev \ libxml2-dev \
libev-dev \ libev-dev \
@@ -34,10 +270,18 @@ jobs:
libjansson-dev \ libjansson-dev \
libjemalloc-dev \ libjemalloc-dev \
libc-ares-dev \ libc-ares-dev \
libelf-dev \
libbrotli-dev \
cmake \ cmake \
cmake-data cmake-data
echo 'CPPFLAGS=-fsanitize=address,undefined -fno-sanitize-recover=undefined -g' >> $GITHUB_ENV echo 'CPPFLAGS=-fsanitize=address,undefined -fno-sanitize-recover=undefined -g' >> $GITHUB_ENV
echo 'LDFLAGS=-fsanitize=address,undefined -fno-sanitize-recover=undefined' >> $GITHUB_ENV echo 'LDFLAGS=-fsanitize=address,undefined -fno-sanitize-recover=undefined' >> $GITHUB_ENV
# https://github.com/actions/runner-images/issues/9491#issuecomment-1989718917
# Asan in llvm 14 provided in ubuntu 22.04 is incompatible with
# high-entropy ASLR in much newer kernels that GitHub runners are
# using leading to random crashes: https://reviews.llvm.org/D148280
sudo sysctl vm.mmap_rnd_bits=28
- name: MacOS setup - name: MacOS setup
if: runner.os == 'macOS' if: runner.os == 'macOS'
run: | run: |
@@ -45,20 +289,18 @@ jobs:
libev \ libev \
libevent \ libevent \
c-ares \ c-ares \
cunit \
libressl \ libressl \
brotli \
autoconf \ autoconf \
automake \ automake \
pkg-config \ pkg-config \
libtool libtool
echo 'PKG_CONFIG_PATH=/usr/local/opt/libressl/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig' >> $GITHUB_ENV echo 'PKG_CONFIG_PATH=/usr/local/opt/libressl/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig' >> $GITHUB_ENV
# This fixes infamous 'stdio.h not found' error.
echo 'SDKROOT='"$(xcrun --sdk macosx --show-sdk-path)" >> $GITHUB_ENV
- name: Setup clang (Linux) - name: Setup clang (Linux)
if: runner.os == 'Linux' && matrix.compiler == 'clang' if: runner.os == 'Linux' && matrix.compiler == 'clang'
run: | run: |
echo 'CC=clang-10' >> $GITHUB_ENV echo 'CC=clang-15' >> $GITHUB_ENV
echo 'CXX=clang++-10' >> $GITHUB_ENV echo 'CXX=clang++-15' >> $GITHUB_ENV
- name: Setup clang (MacOS) - name: Setup clang (MacOS)
if: runner.os == 'macOS' && matrix.compiler == 'clang' if: runner.os == 'macOS' && matrix.compiler == 'clang'
run: | run: |
@@ -67,39 +309,341 @@ jobs:
- name: Setup gcc (Linux) - name: Setup gcc (Linux)
if: runner.os == 'Linux' && matrix.compiler == 'gcc' if: runner.os == 'Linux' && matrix.compiler == 'gcc'
run: | run: |
echo 'CC=gcc-8' >> $GITHUB_ENV echo 'CC=gcc-12' >> $GITHUB_ENV
echo 'CXX=g++-8' >> $GITHUB_ENV echo 'CXX=g++-12' >> $GITHUB_ENV
# g++-12 is known to produce false positive warnings.
echo 'CXXFLAGS=-Wno-restrict' >> $GITHUB_ENV
- name: Setup gcc (MacOS) - name: Setup gcc (MacOS)
if: runner.os == 'macOS' && matrix.compiler == 'gcc' if: runner.os == 'macOS' && matrix.compiler == 'gcc'
run: | run: |
echo 'CC=gcc' >> $GITHUB_ENV echo 'CC=gcc' >> $GITHUB_ENV
echo 'CXX=g++' >> $GITHUB_ENV echo 'CXX=g++' >> $GITHUB_ENV
- name: Setup git submodules - name: Restore libbpf cache
uses: actions/cache/restore@v4
if: matrix.http3 == 'http3' && matrix.compiler == 'clang' && runner.os == 'Linux'
with:
path: libbpf/build
key: ${{ matrix.os }}-libbpf-${{ env.LIBBPF_VERSION }}
fail-on-cache-miss: true
- name: Set libbpf variables
if: matrix.http3 == 'http3' && matrix.compiler == 'clang' && runner.os == 'Linux'
run: | run: |
git submodule update --init cd libbpf
EXTRA_AUTOTOOLS_OPTS="--with-libbpf"
EXTRA_CMAKE_OPTS="-DWITH_LIBBPF=1"
echo 'EXTRA_AUTOTOOLS_OPTS='"$EXTRA_AUTOTOOLS_OPTS" >> $GITHUB_ENV
echo 'EXTRA_CMAKE_OPTS='"$EXTRA_CMAKE_OPTS" >> $GITHUB_ENV
- name: Setup libev variables
if: matrix.os == 'macos-14'
run: |
LIBEV_CFLAGS="-I/opt/homebrew/Cellar/libev/4.33/include"
LIBEV_LIBS="-L/opt/homebrew/Cellar/libev/4.33/lib -lev"
echo 'LIBEV_CFLAGS='"$LIBEV_CFLAGS" >> $GITHUB_ENV
echo 'LIBEV_LIBS='"$LIBEV_LIBS" >> $GITHUB_ENV
- name: Restore quictls/openssl v1.1.1 cache
uses: actions/cache/restore@v4
if: matrix.openssl == 'openssl1'
with:
path: openssl1/build
key: ${{ matrix.os }}-openssl-${{ env.OPENSSL1_VERSION }}
fail-on-cache-miss: true
- name: Restore quictls/openssl v3.x cache
uses: actions/cache/restore@v4
if: matrix.openssl == 'openssl3'
with:
path: openssl3/build
key: ${{ matrix.os }}-openssl-${{ env.OPENSSL3_VERSION }}
fail-on-cache-miss: true
- name: Restore BoringSSL cache
uses: actions/cache/restore@v4
if: matrix.openssl == 'boringssl'
with:
path: |
boringssl/build/crypto/libcrypto.a
boringssl/build/ssl/libssl.a
boringssl/include
key: ${{ matrix.os }}-boringssl-${{ env.BORINGSSL_VERSION }}
fail-on-cache-miss: true
- name: Restore aws-lc cache
uses: actions/cache/restore@v4
if: matrix.openssl == 'awslc'
with:
path: |
aws-lc/build/crypto/libcrypto.a
aws-lc/build/ssl/libssl.a
aws-lc/include
key: ${{ matrix.os }}-awslc-${{ env.AWSLC_VERSION }}
fail-on-cache-miss: true
- name: Set BoringSSL variables
if: matrix.openssl == 'boringssl'
run: |
cd boringssl
OPENSSL_CFLAGS="-I$PWD/include/"
OPENSSL_LIBS="-L$PWD/build/ssl -lssl -L$PWD/build/crypto -lcrypto -pthread"
EXTRA_AUTOTOOLS_OPTS="$EXTRA_AUTOTOOLS_OPTS --without-neverbleed --without-jemalloc --disable-examples"
echo 'OPENSSL_CFLAGS='"$OPENSSL_CFLAGS" >> $GITHUB_ENV
echo 'OPENSSL_LIBS='"$OPENSSL_LIBS" >> $GITHUB_ENV
echo 'BORINGSSL_CFLAGS='"$OPENSSL_CFLAGS" >> $GITHUB_ENV
echo 'BORINGSSL_LIBS='"$OPENSSL_LIBS" >> $GITHUB_ENV
echo 'EXTRA_AUTOTOOLS_OPTS='"$EXTRA_AUTOTOOLS_OPTS" >> $GITHUB_ENV
- name: Set aws-lc variables
if: matrix.openssl == 'awslc'
run: |
cd aws-lc
OPENSSL_CFLAGS="-I$PWD/include/"
OPENSSL_LIBS="-L$PWD/build/ssl -lssl -L$PWD/build/crypto -lcrypto -pthread"
EXTRA_AUTOTOOLS_OPTS="$EXTRA_AUTOTOOLS_OPTS --without-neverbleed --without-jemalloc"
echo 'OPENSSL_CFLAGS='"$OPENSSL_CFLAGS" >> $GITHUB_ENV
echo 'OPENSSL_LIBS='"$OPENSSL_LIBS" >> $GITHUB_ENV
echo 'BORINGSSL_CFLAGS='"$OPENSSL_CFLAGS" >> $GITHUB_ENV
echo 'BORINGSSL_LIBS='"$OPENSSL_LIBS" >> $GITHUB_ENV
echo 'EXTRA_AUTOTOOLS_OPTS='"$EXTRA_AUTOTOOLS_OPTS" >> $GITHUB_ENV
- name: Restore nghttp3 cache
uses: actions/cache/restore@v4
if: matrix.http3 == 'http3'
with:
path: nghttp3/build
key: ${{ matrix.os }}-nghttp3-${{ env.NGHTTP3_VERSION }}
fail-on-cache-miss: true
- name: Restore ngtcp2 + quictls/openssl v1.1.1 cache + BoringSSL
uses: actions/cache/restore@v4
if: matrix.http3 == 'http3' && (matrix.openssl == 'openssl1' || matrix.openssl == 'boringssl')
with:
path: ngtcp2-openssl1/build
key: ${{ matrix.os }}-ngtcp2-${{ env.NGTCP2_VERSION }}-openssl-${{ env.OPENSSL1_VERSION }}
fail-on-cache-miss: true
- name: Restore ngtcp2 + quictls/openssl v3.x cache + aws-lc
uses: actions/cache/restore@v4
if: matrix.http3 == 'http3' && (matrix.openssl == 'openssl3' || matrix.openssl == 'awslc')
with:
path: ngtcp2-openssl3/build
key: ${{ matrix.os }}-ngtcp2-${{ env.NGTCP2_VERSION }}-openssl-${{ env.OPENSSL3_VERSION }}
fail-on-cache-miss: true
- name: Setup extra environment variables
if: matrix.http3 == 'no-http3'
run: |
PKG_CONFIG_PATH="$PWD/openssl1/build/lib/pkgconfig:$PWD/openssl3/build/lib/pkgconfig"
LDFLAGS="$LDFLAGS -Wl,-rpath,$PWD/openssl1/build/lib -Wl,-rpath,$PWD/openssl3/build/lib"
echo 'PKG_CONFIG_PATH='"$PKG_CONFIG_PATH" >> $GITHUB_ENV
echo 'LDFLAGS='"$LDFLAGS" >> $GITHUB_ENV
- name: Setup extra environment variables for HTTP/3
if: matrix.http3 == 'http3'
run: |
PKG_CONFIG_PATH="$PWD/openssl1/build/lib/pkgconfig:$PWD/openssl3/build/lib/pkgconfig:$PWD/nghttp3/build/lib/pkgconfig:$PWD/ngtcp2-openssl1/build/lib/pkgconfig:$PWD/ngtcp2-openssl3/build/lib/pkgconfig:$PWD/libbpf/build/lib64/pkgconfig:$PKG_CONFIG_PATH"
LDFLAGS="$LDFLAGS -Wl,-rpath,$PWD/openssl1/build/lib -Wl,-rpath,$PWD/openssl3/build/lib -Wl,-rpath,$PWD/libbpf/build/lib64"
EXTRA_AUTOTOOLS_OPTS="--enable-http3 $EXTRA_AUTOTOOLS_OPTS"
EXTRA_CMAKE_OPTS="-DENABLE_HTTP3=1 $EXTRA_CMAKE_OPTS"
echo 'PKG_CONFIG_PATH='"$PKG_CONFIG_PATH" >> $GITHUB_ENV
echo 'LDFLAGS='"$LDFLAGS" >> $GITHUB_ENV
echo 'EXTRA_AUTOTOOLS_OPTS='"$EXTRA_AUTOTOOLS_OPTS" >> $GITHUB_ENV
echo 'EXTRA_CMAKE_OPTS='"$EXTRA_CMAKE_OPTS" >> $GITHUB_ENV
- name: Configure autotools - name: Configure autotools
if: matrix.buildtool == 'autotools'
run: | run: |
autoreconf -i autoreconf -i
./configure --enable-werror --with-mruby ./configure
- name: Configure cmake - name: Make distribution and unpack
if: matrix.buildtool == 'cmake' if: matrix.buildtool != 'distcheck'
run: | run: |
cmake -DENABLE_WERROR=1 -DWITH_MRUBY=1 -DWITH_NEVERBLEED=1 -DCPPFLAGS="$CPPFLAGS" -DLDFLAGS="$LDFLAGS" . make dist
- name: Build nghttp2 with autotools VERSION=$(grep PACKAGE_VERSION config.h | cut -d' ' -f3 | tr -d '"')
if: matrix.buildtool == 'autotools' tar xf nghttp2-$VERSION.tar.gz
cd nghttp2-$VERSION
echo 'NGHTTP2_BUILD_DIR='"$PWD" >> $GITHUB_ENV
- name: Configure cmake (Linux)
if: matrix.buildtool == 'cmake' && runner.os == 'Linux'
run: | run: |
make distcheck \ cd $NGHTTP2_BUILD_DIR
DISTCHECK_CONFIGURE_FLAGS="--with-mruby --with-neverbleed --enable-werror CPPFLAGS=\"$CPPFLAGS\" LDFLAGS=\"$LDFLAGS\""
cmake -DENABLE_WERROR=1 -DWITH_MRUBY=1 -DWITH_NEVERBLEED=1 -DENABLE_APP=1 $EXTRA_CMAKE_OPTS -DCPPFLAGS="$CPPFLAGS" -DLDFLAGS="$LDFLAGS" -DBUILD_STATIC_LIBS=ON -DBUILD_TESTING=ON .
- name: Configure cmake (MacOS)
if: matrix.buildtool == 'cmake' && runner.os == 'macOS'
run: |
# This fixes infamous 'stdio.h not found' error.
echo 'SDKROOT='"$(xcrun --sdk macosx --show-sdk-path)" >> $GITHUB_ENV
cd $NGHTTP2_BUILD_DIR
cmake -DENABLE_WERROR=1 -DWITH_MRUBY=1 -DENABLE_APP=1 $EXTRA_CMAKE_OPTS -DCPPFLAGS="$CPPFLAGS" -DLDFLAGS="$LDFLAGS" -DBUILD_STATIC_LIBS=ON -DBUILD_TESTING=ON .
- name: Build nghttp2 with autotools (Linux)
if: matrix.buildtool == 'autotools' && runner.os == 'Linux'
run: |
cd $NGHTTP2_BUILD_DIR
./configure --with-mruby --with-neverbleed --with-libev --with-libbrotlienc --with-libbrotlidec --enable-werror $EXTRA_AUTOTOOLS_OPTS
make -j"$(nproc)" check
- name: Build nghttp2 with autotools (MacOS)
if: matrix.buildtool == 'autotools' && runner.os == 'macOS'
run: |
cd $NGHTTP2_BUILD_DIR
./configure --with-mruby --with-libev --with-libbrotlienc --with-libbrotlidec --enable-werror $EXTRA_AUTOTOOLS_OPTS
make -j"$(sysctl -n hw.ncpu)" check
- name: Build nghttp2 with autotools (distcheck)
if: matrix.buildtool == 'distcheck'
run: |
make -j"$(nproc)" distcheck \
DISTCHECK_CONFIGURE_FLAGS="--with-mruby --with-neverbleed --with-libev --with-libbrotlienc --with-libbrotlidec --enable-werror $EXTRA_AUTOTOOLS_OPTS CPPFLAGS=\"$CPPFLAGS\" LDFLAGS=\"$LDFLAGS\""
- name: Build nghttp2 with cmake - name: Build nghttp2 with cmake
if: matrix.buildtool == 'cmake' if: matrix.buildtool == 'cmake'
run: | run: |
make cd $NGHTTP2_BUILD_DIR
make check make -j"$(nproc 2> /dev/null || sysctl -n hw.ncpu)"
make -j"$(nproc 2> /dev/null || sysctl -n hw.ncpu)" check
- uses: actions/setup-go@v5
if: matrix.buildtool != 'distcheck'
with:
go-version-file: go.mod
- name: Integration test - name: Integration test
# Integration tests for nghttpx; autotools erases build # Integration tests for nghttpx; autotools erases build
# artifacts. # artifacts.
if: matrix.buildtool == 'cmake' if: matrix.buildtool != 'distcheck'
run: | run: |
cd integration-tests cd $NGHTTP2_BUILD_DIR/integration-tests
make itprep it make it
build-cross:
strategy:
matrix:
host: [x86_64-w64-mingw32, i686-w64-mingw32]
runs-on: ubuntu-22.04
env:
HOST: ${{ matrix.host }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Linux setup
run: |
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install \
gcc-mingw-w64 \
autoconf \
automake \
autotools-dev \
libtool \
pkg-config \
wine
- name: Configure autotools
run: |
autoreconf -i && \
./configure --enable-werror --enable-lib-only --host="$HOST" \
CFLAGS="-g -O2 -D_WIN32_WINNT=0x0600" LIBS="-pthread"
- name: Build nghttp2
run: |
make -j$(nproc)
make -j$(nproc) check TESTS=""
- name: Run tests
if: matrix.host == 'x86_64-w64-mingw32'
run: |
export WINEPATH=/usr/x86_64-w64-mingw32/lib
cd tests
wine main.exe
build-windows:
strategy:
matrix:
arch: [x86, x64]
include:
- arch: x86
platform: Win32
- arch: x64
platform: x64
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- uses: microsoft/setup-msbuild@v2
- name: Configure cmake
run: cmake -B build -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_GENERATOR_PLATFORM=${{ matrix.platform }} -DVCPKG_TARGET_TRIPLET=${{ matrix.arch}}-windows -DBUILD_STATIC_LIBS=ON -DBUILD_TESTING=ON
- name: Build nghttp2
run: |
cmake --build build
cmake --build build --target check
release:
if: github.ref_type == 'tag'
needs:
- build
- build-cross
- build-windows
permissions:
contents: write
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
- name: Make artifacts
run: |
ver='${{ github.ref_name }}'
prev_ver=$(git tag --sort v:refname | grep -v -F "${ver}" | \
grep 'v[0-9]\+\.[0-9]\+\.0' | tail -n1)
echo -n "$GPG_KEY" | gpg --batch --pinentry-mode loopback --import
./makerelease.sh "${ver}" "${prev_ver}"
env:
GPG_KEY: ${{ secrets.GPG_KEY }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
- name: Make release
uses: actions/github-script@v7
with:
script: |
const fs = require('fs')
let ver = '${{ github.ref_name }}'
let {data: release} = await github.rest.repos.createRelease({
owner: context.repo.owner,
repo: context.repo.repo,
tag_name: ver,
name: `nghttp2 ${ver}`,
draft: true,
generate_release_notes: true,
discussion_category_name: 'Announcements',
})
let v = ver.substring(1)
let files = [
'checksums.txt',
`nghttp2-${v}.tar.bz2`,
`nghttp2-${v}.tar.bz2.asc`,
`nghttp2-${v}.tar.gz`,
`nghttp2-${v}.tar.gz.asc`,
`nghttp2-${v}.tar.xz`,
`nghttp2-${v}.tar.xz.asc`,
]
await Promise.all(files.map(elem =>
github.rest.repos.uploadReleaseAsset({
owner: context.repo.owner,
repo: context.repo.repo,
release_id: release.id,
name: elem,
data: fs.readFileSync(elem),
})
))

24
.github/workflows/docker.yaml vendored Normal file
View File

@@ -0,0 +1,24 @@
name: docker-build
on:
push:
paths:
- docker/Dockerfile
branches:
- '**'
permissions: read-all
jobs:
build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build
uses: docker/build-push-action@v5
with:
context: docker
build-args: NGHTTP2_BRANCH=${{ github.ref_name }}

View File

@@ -1,9 +1,17 @@
name: CIFuzz name: CIFuzz
on: [pull_request] on: [pull_request]
permissions: read-all
jobs: jobs:
Fuzzing: Fuzzing:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: LLVM workaround
run: |
# https://github.com/actions/runner-images/issues/9491#issuecomment-1989718917
# Asan in llvm 14 provided in ubuntu 22.04 is incompatible with
# high-entropy ASLR in much newer kernels that GitHub runners are
# using leading to random crashes: https://reviews.llvm.org/D148280
sudo sysctl vm.mmap_rnd_bits=28
- name: Build Fuzzers - name: Build Fuzzers
uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
with: with:
@@ -16,7 +24,7 @@ jobs:
fuzz-seconds: 600 fuzz-seconds: 600
dry-run: false dry-run: false
- name: Upload Crash - name: Upload Crash
uses: actions/upload-artifact@v1 uses: actions/upload-artifact@v4
if: failure() if: failure()
with: with:
name: artifacts name: artifacts

20
.github/workflows/stale.yaml vendored Normal file
View File

@@ -0,0 +1,20 @@
name: 'Close stale issues'
on:
schedule:
- cron: '30 1 * * *'
permissions:
issues: write
jobs:
stale:
runs-on: ubuntu-22.04
steps:
- uses: actions/stale@v9
with:
stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days.'
days-before-stale: 30
days-before-close: 7
exempt-all-milestones: true

9
.gitignore vendored
View File

@@ -42,6 +42,7 @@ rules.ninja
lib*.so lib*.so
lib*.so.* lib*.so.*
lib*.a lib*.a
# generated by "make test" with cmake # generated by "make test" with cmake
Testing/ Testing/
@@ -54,4 +55,10 @@ _VC_ROOT/
.depend.MSVC .depend.MSVC
*.pyd *.pyd
*.egg-info/ *.egg-info/
python/nghttp2.c
# Build Directories
build/
# IDEs
cmake-*
.idea/

5
.gitmodules vendored
View File

@@ -4,4 +4,7 @@
[submodule "third-party/neverbleed"] [submodule "third-party/neverbleed"]
path = third-party/neverbleed path = third-party/neverbleed
url = https://github.com/tatsuhiro-t/neverbleed.git url = https://github.com/tatsuhiro-t/neverbleed.git
branch = openssl111fix branch = nghttp2
[submodule "tests/munit"]
path = tests/munit
url = https://github.com/ngtcp2/munit

View File

@@ -1,89 +0,0 @@
dist: xenial
os:
- linux
compiler:
- clang
- gcc
env:
matrix:
- CI_BUILD=cmake
- CI_BUILD=autotools
matrix:
include:
- os: osx
compiler: clang
osx_image: xcode10.2
env: CI_BUILD=autotools
language: cpp
sudo: required
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-8
- autoconf
- automake
- autotools-dev
- libtool
- pkg-config
- zlib1g-dev
- libcunit1-dev
- libssl-dev
- libxml2-dev
- libev-dev
- libevent-dev
- libjansson-dev
- libjemalloc-dev
- libc-ares-dev
- cmake
- cmake-data
homebrew:
packages:
- libev
- libevent
- c-ares
- cunit
- libressl
before_install:
- $CC --version
- if [ "$CXX" = "g++" ]; then export CXX="g++-8" CC="gcc-8"; fi
- $CC --version
- go version
- cmake --version
before_script:
- |
if [ "$TRAVIS_OS_NAME" = "linux" ]; then
CPPFLAGS="-fsanitize=address" LDFLAGS="-fsanitize=address -fuse-ld=gold"
fi
- |
if [ "$TRAVIS_OS_NAME" = "osx" ]; then
PKG_CONFIG_PATH="/usr/local/opt/libressl/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig"
fi
# Now build nghttp2
- git submodule update --init
- |
if [ "$CI_BUILD" = "autotools" ]; then
autoreconf -i && ./configure --with-mruby PKG_CONFIG_PATH=$PKG_CONFIG_PATH
fi
- |
if [ "$CI_BUILD" = "cmake" ]; then
cmake -DENABLE_WERROR=1 -DWITH_MRUBY=1 -DWITH_NEVERBLEED=1
fi
script:
- |
if [ "$CI_BUILD" = "autotools" ]; then
make distcheck DISTCHECK_CONFIGURE_FLAGS="--with-mruby --with-neverbleed --enable-werror CPPFLAGS=$CPPFLAGS LDFLAGS=\"$LDFLAGS\" PKG_CONFIG_PATH=$PKG_CONFIG_PATH"
fi
- |
if [ "$CI_BUILD" = "cmake" ]; then
make && make check
fi
- |
if [ "$CI_BUILD" = "cmake" ]; then
# Integration tests for nghttpx; autotools build erases build
# for packaging test.
cd integration-tests
export GO111MODULE=on
make it
fi

28
AUTHORS
View File

@@ -17,8 +17,11 @@ github issues [2].
Adam Gołębiowski Adam Gołębiowski
Alek Storm Alek Storm
Alex Nalivko Alex Nalivko
Alexandr Vlasov
Alexandros Konstantinakis-Karmis Alexandros Konstantinakis-Karmis
Alexis La Goutte Alexis La Goutte
Alyssa Ross
Amir Livneh
Amir Pakdel Amir Pakdel
Anders Bakken Anders Bakken
Andreas Pohl Andreas Pohl
@@ -27,30 +30,41 @@ Andy Davies
Angus Gratton Angus Gratton
Anna Henningsen Anna Henningsen
Ant Bryan Ant Bryan
Anthony Alayo
Asra Ali Asra Ali
Benedikt Christoph Wolters Benedikt Christoph Wolters
Benjamin Peterson Benjamin Peterson
Bernard Spil Bernard Spil
Bernhard Walle
Brendan Heinonen Brendan Heinonen
Brian Card Brian Card
Brian Suh Brian Suh
Daniel Bevenius
Daniel Evers Daniel Evers
Daniel Stenberg Daniel Stenberg
Dave Reisner Dave Reisner
David Beitey David Beitey
David Korczynski
David Weekly David Weekly
Deel
Dimitris Apostolou
Dmitri Tikhonov
Dmitriy Vetutnev Dmitriy Vetutnev
Don Don
Dylan Plecki Dylan Plecki
Etienne Cimon Etienne Cimon
Fabian Möller Fabian Möller
Fabian Wiesel Fabian Wiesel
Fred Sundvik
Gabi Davar Gabi Davar
Gaël PORTAY Gaël PORTAY
Geoff Hill Geoff Hill
George Liu
Gitai Gitai
Google Inc. Google Inc.
Hajime Fujita
Jacky Tian Jacky Tian
Jacky_Yin
Jacob Champion Jacob Champion
James M Snell James M Snell
Jan Kundrát Jan Kundrát
@@ -60,6 +74,8 @@ Jay Satiro
Jeff 'Raid' Baitis Jeff 'Raid' Baitis
Jianqing Wang Jianqing Wang
Jim Morrison Jim Morrison
Jiwoo Park
Jonas Kvinge
Josh Braegger Josh Braegger
José F. Calcerrada José F. Calcerrada
Kamil Dudka Kamil Dudka
@@ -74,25 +90,34 @@ Lorenz Nickel
Lucas Pardue Lucas Pardue
MATSUMOTO Ryosuke MATSUMOTO Ryosuke
Marc Bachmann Marc Bachmann
Marcelo Trylesinski
Matt Rudary Matt Rudary
Matt Way Matt Way
Michael Kaufmann
Mike Conlen Mike Conlen
Mike Frysinger Mike Frysinger
Mike Lothian Mike Lothian
Nicholas Hurley Nicholas Hurley
Nora Shoemaker Nora Shoemaker
Paweł Wegner
Pedro Santos Pedro Santos
Peeyush Aggarwal Peeyush Aggarwal
Peter Wu Peter Wu
Piotr Sikora Piotr Sikora
PufferOverflow
Raul Gutierrez Segales Raul Gutierrez Segales
Remo E Remo E
Renaud
Reza Tavakoli Reza Tavakoli
Richard Wolfert Richard Wolfert
Rick Lei Rick Lei
Ross Smith II Ross Smith II
Rudi Heitbaum
Ryo Ota
Scott Mitchell Scott Mitchell
Sebastiaan Deckers Sebastiaan Deckers
Sergey Fedorov
Shelley Vohr
Simon Frankenberger Simon Frankenberger
Simone Basso Simone Basso
Soham Sinha Soham Sinha
@@ -125,11 +150,14 @@ dalf
dawg dawg
es es
fangdingjun fangdingjun
hrxi
jwchoi jwchoi
kumagi kumagi
lhuang04
lstefani lstefani
makovich makovich
mod-h2-dev mod-h2-dev
moparisthebest moparisthebest
robaho
snnn snnn
yuuki-kodama yuuki-kodama

View File

@@ -22,15 +22,15 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
cmake_minimum_required(VERSION 3.0) cmake_minimum_required(VERSION 3.14)
# XXX using 1.8.90 instead of 1.9.0-DEV # XXX using 1.8.90 instead of 1.9.0-DEV
project(nghttp2 VERSION 1.44.90) project(nghttp2 VERSION 1.62.1)
# See versioning rule: # See versioning rule:
# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html # https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
set(LT_CURRENT 34) set(LT_CURRENT 42)
set(LT_REVISION 2) set(LT_REVISION 1)
set(LT_AGE 20) set(LT_AGE 28)
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH}) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
include(Version) include(Version)
@@ -51,16 +51,33 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
endif() endif()
include(GNUInstallDirs) include(GNUInstallDirs)
include(CMakeDependentOption)
# For Python bindings and documentation # For documentation
# (Must be called before PythonLibs for matching versions.) find_package(Python3 COMPONENTS Interpreter)
find_package(PythonInterp)
# Auto-detection of features that can be toggled # Auto-detection of features that can be toggled
find_package(OpenSSL 1.0.1) if(NOT ENABLE_LIB_ONLY)
find_package(Libev 4.11) find_package(Libev 4.11)
find_package(Libcares 1.7.5) find_package(Libcares 1.7.5)
find_package(ZLIB 1.2.3) find_package(ZLIB 1.2.3)
find_package(Libbrotlienc 1.0.9)
find_package(Libbrotlidec 1.0.9)
endif()
find_package(OpenSSL 1.1.1)
find_package(Libngtcp2 1.0.0)
find_package(Libngtcp2_crypto_quictls 1.0.0)
if(LIBNGTCP2_CRYPTO_QUICTLS_FOUND)
set(HAVE_LIBNGTCP2_CRYPTO_QUICTLS 1)
endif()
find_package(Libnghttp3 1.1.0)
if(WITH_LIBBPF)
find_package(Libbpf 0.7.0)
if(NOT LIBBPF_FOUND)
message(FATAL_ERROR "libbpf was requested (WITH_LIBBPF=1) but not found.")
endif()
endif()
if(OPENSSL_FOUND AND LIBEV_FOUND AND ZLIB_FOUND) if(OPENSSL_FOUND AND LIBEV_FOUND AND ZLIB_FOUND)
set(ENABLE_APP_DEFAULT ON) set(ENABLE_APP_DEFAULT ON)
else() else()
@@ -70,15 +87,8 @@ find_package(Systemd 209)
find_package(Jansson 2.5) find_package(Jansson 2.5)
set(ENABLE_HPACK_TOOLS_DEFAULT ${JANSSON_FOUND}) set(ENABLE_HPACK_TOOLS_DEFAULT ${JANSSON_FOUND})
# 2.0.8 is required because we use evconnlistener_set_error_cb() # 2.0.8 is required because we use evconnlistener_set_error_cb()
find_package(Libevent 2.0.8 COMPONENTS libevent openssl) find_package(Libevent 2.0.8 COMPONENTS core extra openssl)
set(ENABLE_EXAMPLES_DEFAULT ${LIBEVENT_OPENSSL_FOUND}) set(ENABLE_EXAMPLES_DEFAULT ${LIBEVENT_OPENSSL_FOUND})
find_package(Cython)
find_package(PythonLibs)
if(CYTHON_FOUND AND PYTHONLIBS_FOUND)
set(ENABLE_PYTHON_BINDINGS_DEFAULT ON)
else()
set(ENABLE_PYTHON_BINDINGS_DEFAULT OFF)
endif()
find_package(LibXml2 2.6.26) find_package(LibXml2 2.6.26)
set(WITH_LIBXML2_DEFAULT ${LIBXML2_FOUND}) set(WITH_LIBXML2_DEFAULT ${LIBXML2_FOUND})
@@ -87,8 +97,7 @@ set(WITH_JEMALLOC_DEFAULT ${JEMALLOC_FOUND})
include(CMakeOptions.txt) include(CMakeOptions.txt)
if(ENABLE_LIB_ONLY AND (ENABLE_APP OR ENABLE_HPACK_TOOLS OR ENABLE_EXAMPLES OR if(ENABLE_LIB_ONLY AND (ENABLE_APP OR ENABLE_HPACK_TOOLS OR ENABLE_EXAMPLES))
ENABLE_PYTHON_BINDINGS))
# Remember when disabled options are disabled for later diagnostics. # Remember when disabled options are disabled for later diagnostics.
set(ENABLE_LIB_ONLY_DISABLED_OTHERS 1) set(ENABLE_LIB_ONLY_DISABLED_OTHERS 1)
else() else()
@@ -98,7 +107,6 @@ if(ENABLE_LIB_ONLY)
set(ENABLE_APP OFF) set(ENABLE_APP OFF)
set(ENABLE_HPACK_TOOLS OFF) set(ENABLE_HPACK_TOOLS OFF)
set(ENABLE_EXAMPLES OFF) set(ENABLE_EXAMPLES OFF)
set(ENABLE_PYTHON_BINDINGS OFF)
endif() endif()
# Do not disable assertions based on CMAKE_BUILD_TYPE. # Do not disable assertions based on CMAKE_BUILD_TYPE.
@@ -116,7 +124,7 @@ else()
endif() endif()
include(ExtractValidFlags) include(ExtractValidFlags)
foreach(_cxx1x_flag -std=c++14) foreach(_cxx1x_flag -std=c++20)
extract_valid_cxx_flags(_cxx1x_flag_supported ${_cxx1x_flag}) extract_valid_cxx_flags(_cxx1x_flag_supported ${_cxx1x_flag})
if(_cxx1x_flag_supported) if(_cxx1x_flag_supported)
set(CXX1XCXXFLAGS ${_cxx1x_flag}) set(CXX1XCXXFLAGS ${_cxx1x_flag})
@@ -144,20 +152,6 @@ cmake_pop_check_state()
# Additional libraries required for programs under src directory. # Additional libraries required for programs under src directory.
set(APP_LIBRARIES) set(APP_LIBRARIES)
if(ENABLE_PYTHON_BINDINGS)
if(NOT (CYTHON_FOUND AND PYTHONLIBS_FOUND))
message(FATAL_ERROR "python bindings were requested "
"(ENABLE_PYTHON_BINDINGS=1) but dependencies are not met.")
endif()
if(NOT PYTHON_VERSION_STRING STREQUAL PYTHONLIBS_VERSION_STRING)
message(FATAL_ERROR
"Python executable and library must have the same version!"
" Found Python ${PYTHON_VERSION_STRING} and"
" PythonLibs ${PYTHONLIBS_VERSION_STRING}"
)
endif()
endif()
set(CMAKE_THREAD_PREFER_PTHREAD 1) set(CMAKE_THREAD_PREFER_PTHREAD 1)
find_package(Threads) find_package(Threads)
if(CMAKE_USE_PTHREADS_INIT) if(CMAKE_USE_PTHREADS_INIT)
@@ -167,24 +161,34 @@ endif()
# case "$host" in # case "$host" in
# *android*) # *android*)
# android_build=yes # android_build=yes
# # android does not need -pthread, but needs followng 3 libs for C++ # # android does not need -pthread, but needs following 3 libs for C++
# APPLDFLAGS="$APPLDFLAGS -lstdc++ -latomic -lsupc++" # APPLDFLAGS="$APPLDFLAGS -lstdc++ -latomic -lsupc++"
# dl: openssl requires libdl when it is statically linked. # dl: openssl requires libdl when it is statically linked.
# XXX shouldn't ${CMAKE_DL_LIBS} be appended to OPENSSL_LIBRARIES instead of # XXX shouldn't ${CMAKE_DL_LIBS} be appended to OPENSSL_LIBRARIES instead of
# APP_LIBRARIES if it is really specific to OpenSSL? # APP_LIBRARIES if it is really specific to OpenSSL?
find_package(CUnit 2.1)
enable_testing() enable_testing()
set(HAVE_CUNIT ${CUNIT_FOUND}) add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND})
if(HAVE_CUNIT)
add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND})
endif()
# openssl (for src) # openssl (for src)
include(CheckSymbolExists)
set(HAVE_OPENSSL ${OPENSSL_FOUND}) set(HAVE_OPENSSL ${OPENSSL_FOUND})
if(OPENSSL_FOUND) if(OPENSSL_FOUND)
set(OPENSSL_INCLUDE_DIRS ${OPENSSL_INCLUDE_DIR}) set(OPENSSL_INCLUDE_DIRS ${OPENSSL_INCLUDE_DIR})
cmake_push_check_state()
set(CMAKE_REQUIRED_INCLUDES "${OPENSSL_INCLUDE_DIR}")
set(CMAKE_REQUIRED_LIBRARIES "${OPENSSL_LIBRARIES}")
if(WIN32)
set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES}" "ws2_32" "bcrypt")
endif()
if(ENABLE_HTTP3)
check_symbol_exists(SSL_provide_quic_data "openssl/ssl.h" HAVE_SSL_PROVIDE_QUIC_DATA)
if(NOT HAVE_SSL_PROVIDE_QUIC_DATA)
message(WARNING "OpenSSL in ${OPENSSL_LIBRARIES} does not have SSL_provide_quic_data. HTTP/3 support cannot be enabled")
endif()
endif()
cmake_pop_check_state()
else() else()
set(OPENSSL_INCLUDE_DIRS "") set(OPENSSL_INCLUDE_DIRS "")
set(OPENSSL_LIBRARIES "") set(OPENSSL_LIBRARIES "")
@@ -219,8 +223,25 @@ endif()
# jemalloc # jemalloc
set(HAVE_JEMALLOC ${JEMALLOC_FOUND}) set(HAVE_JEMALLOC ${JEMALLOC_FOUND})
if(ENABLE_ASIO_LIB) # libbrotli (for src)
find_package(Boost 1.54.0 REQUIRED system thread) set(HAVE_LIBBROTLIENC ${LIBBROTLIENC_FOUND})
set(HAVE_LIBBROTLIDEC ${LIBBROTLIDEC_FOUND})
if(LIBBROTLIENC_FOUND AND LIBBROTLIDEC_FOUND)
set(HAVE_LIBBROTLI 1)
endif()
# libbpf (for bpf)
set(HAVE_LIBBPF ${LIBBPF_FOUND})
if(LIBBPF_FOUND)
set(BPFCFLAGS -Wall -O2 -g)
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
# For Debian/Ubuntu
set(EXTRABPFCFLAGS -I/usr/include/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu)
endif()
check_c_source_compiles("
#include <linux/bpf.h>
int main() { enum bpf_stats_type foo; (void)foo; }" HAVE_BPF_STATS_TYPE)
endif() endif()
# The nghttp, nghttpd and nghttpx under src depend on zlib, OpenSSL and libev # The nghttp, nghttpd and nghttpx under src depend on zlib, OpenSSL and libev
@@ -228,18 +249,24 @@ if(ENABLE_APP AND NOT (ZLIB_FOUND AND OPENSSL_FOUND AND LIBEV_FOUND))
message(FATAL_ERROR "Applications were requested (ENABLE_APP=1) but dependencies are not met.") message(FATAL_ERROR "Applications were requested (ENABLE_APP=1) but dependencies are not met.")
endif() endif()
# HTTP/3 requires quictls/openssl, libngtcp2, libngtcp2_crypto_quictls
# and libnghttp3.
if(ENABLE_HTTP3 AND NOT (HAVE_SSL_PROVIDE_QUIC_DATA AND LIBNGTCP2_FOUND AND LIBNGTCP2_CRYPTO_QUICTLS_FOUND AND LIBNGHTTP3_FOUND))
message(FATAL_ERROR "HTTP/3 was requested (ENABLE_HTTP3=1) but dependencies are not met.")
endif()
# HPACK tools requires jansson # HPACK tools requires jansson
if(ENABLE_HPACK_TOOLS AND NOT HAVE_JANSSON) if(ENABLE_HPACK_TOOLS AND NOT HAVE_JANSSON)
message(FATAL_ERROR "HPACK tools were requested (ENABLE_HPACK_TOOLS=1) but dependencies are not met.") message(FATAL_ERROR "HPACK tools were requested (ENABLE_HPACK_TOOLS=1) but dependencies are not met.")
endif() endif()
# C++ library libnghttp2_asio # examples
if(ENABLE_EXAMPLES AND NOT (OPENSSL_FOUND AND LIBEVENT_OPENSSL_FOUND)) if(ENABLE_EXAMPLES AND NOT (OPENSSL_FOUND AND LIBEVENT_OPENSSL_FOUND))
message(FATAL_ERROR "examples were requested (ENABLE_EXAMPLES=1) but dependencies are not met.") message(FATAL_ERROR "examples were requested (ENABLE_EXAMPLES=1) but dependencies are not met.")
endif() endif()
# third-party http-parser only be built when needed # third-party http-parser only be built when needed
if(ENABLE_EXAMPLES OR ENABLE_APP OR ENABLE_HPACK_TOOLS OR ENABLE_ASIO_LIB) if(ENABLE_EXAMPLES OR ENABLE_APP OR ENABLE_HPACK_TOOLS)
set(ENABLE_THIRD_PARTY 1) set(ENABLE_THIRD_PARTY 1)
# mruby (for src/nghttpx) # mruby (for src/nghttpx)
set(HAVE_MRUBY ${WITH_MRUBY}) set(HAVE_MRUBY ${WITH_MRUBY})
@@ -257,12 +284,13 @@ check_include_file("inttypes.h" HAVE_INTTYPES_H)
check_include_file("limits.h" HAVE_LIMITS_H) check_include_file("limits.h" HAVE_LIMITS_H)
check_include_file("netdb.h" HAVE_NETDB_H) check_include_file("netdb.h" HAVE_NETDB_H)
check_include_file("netinet/in.h" HAVE_NETINET_IN_H) check_include_file("netinet/in.h" HAVE_NETINET_IN_H)
check_include_file("netinet/ip.h" HAVE_NETINET_IP_H)
check_include_file("pwd.h" HAVE_PWD_H) check_include_file("pwd.h" HAVE_PWD_H)
check_include_file("sys/socket.h" HAVE_SYS_SOCKET_H) check_include_file("sys/socket.h" HAVE_SYS_SOCKET_H)
check_include_file("sys/time.h" HAVE_SYS_TIME_H) check_include_file("sys/time.h" HAVE_SYS_TIME_H)
check_include_file("syslog.h" HAVE_SYSLOG_H) check_include_file("syslog.h" HAVE_SYSLOG_H)
check_include_file("time.h" HAVE_TIME_H)
check_include_file("unistd.h" HAVE_UNISTD_H) check_include_file("unistd.h" HAVE_UNISTD_H)
check_include_file("windows.h" HAVE_WINDOWS_H)
include(CheckTypeSize) include(CheckTypeSize)
# Checks for typedefs, structures, and compiler characteristics. # Checks for typedefs, structures, and compiler characteristics.
@@ -292,16 +320,15 @@ endif()
include(CheckStructHasMember) include(CheckStructHasMember)
check_struct_has_member("struct tm" tm_gmtoff time.h HAVE_STRUCT_TM_TM_GMTOFF) check_struct_has_member("struct tm" tm_gmtoff time.h HAVE_STRUCT_TM_TM_GMTOFF)
# Check size of pointer to decide we need 8 bytes alignment adjustment.
check_type_size("int *" SIZEOF_INT_P)
check_type_size("time_t" SIZEOF_TIME_T)
# Checks for library functions. # Checks for library functions.
include(CheckFunctionExists) include(CheckFunctionExists)
check_function_exists(_Exit HAVE__EXIT) check_function_exists(_Exit HAVE__EXIT)
check_function_exists(accept4 HAVE_ACCEPT4) check_function_exists(accept4 HAVE_ACCEPT4)
check_function_exists(clock_gettime HAVE_CLOCK_GETTIME)
check_function_exists(mkostemp HAVE_MKOSTEMP) check_function_exists(mkostemp HAVE_MKOSTEMP)
check_symbol_exists(GetTickCount64 sysinfoapi.h HAVE_GETTICKCOUNT64)
include(CheckSymbolExists) include(CheckSymbolExists)
# XXX does this correctly detect initgroups (un)availability on cygwin? # XXX does this correctly detect initgroups (un)availability on cygwin?
check_symbol_exists(initgroups grp.h HAVE_DECL_INITGROUPS) check_symbol_exists(initgroups grp.h HAVE_DECL_INITGROUPS)
@@ -313,6 +340,8 @@ if(NOT HAVE_DECL_INITGROUPS AND HAVE_UNISTD_H)
endif() endif()
endif() endif()
check_symbol_exists(CLOCK_MONOTONIC "time.h" HAVE_DECL_CLOCK_MONOTONIC)
set(WARNCFLAGS) set(WARNCFLAGS)
set(WARNCXXFLAGS) set(WARNCXXFLAGS)
if(CMAKE_C_COMPILER_ID MATCHES "MSVC") if(CMAKE_C_COMPILER_ID MATCHES "MSVC")
@@ -322,65 +351,12 @@ if(CMAKE_C_COMPILER_ID MATCHES "MSVC")
endif() endif()
else() else()
if(ENABLE_WERROR) if(ENABLE_WERROR)
extract_valid_c_flags(WARNCFLAGS -Werror) set(WARNCFLAGS "-Werror")
extract_valid_c_flags(WARNCXXFLAGS -Werror) set(WARNCXXFLAGS "-Werror")
endif() endif()
# For C compiler include(PickyWarningsC)
extract_valid_c_flags(WARNCFLAGS include(PickyWarningsCXX)
-Wall
-Wextra
-Wmissing-prototypes
-Wstrict-prototypes
-Wmissing-declarations
-Wpointer-arith
-Wdeclaration-after-statement
-Wformat-security
-Wwrite-strings
-Wshadow
-Winline
-Wnested-externs
-Wfloat-equal
-Wundef
-Wendif-labels
-Wempty-body
-Wcast-align
-Wclobbered
-Wvla
-Wpragmas
-Wunreachable-code
-Waddress
-Wattributes
-Wdiv-by-zero
-Wshorten-64-to-32
-Wconversion
-Wextended-offsetof
-Wformat-nonliteral
-Wlanguage-extension-token
-Wmissing-field-initializers
-Wmissing-noreturn
-Wmissing-variable-declarations
# Not used because we cannot change public structs
# -Wpadded
-Wsign-conversion
# Not used because this basically disallows default case
# -Wswitch-enum
-Wunreachable-code-break
-Wunused-macros
-Wunused-parameter
-Wredundant-decls
# Only work with Clang for the moment
-Wheader-guard
# This is required because we pass format string as "const char*.
-Wno-format-nonliteral
)
extract_valid_cxx_flags(WARNCXXFLAGS
# For C++ compiler
-Wall
-Wformat-security
)
endif() endif()
if(ENABLE_STATIC_CRT) if(ENABLE_STATIC_CRT)
@@ -423,8 +399,6 @@ set(sbindir "${CMAKE_INSTALL_FULL_SBINDIR}")
foreach(name foreach(name
lib/libnghttp2.pc lib/libnghttp2.pc
lib/includes/nghttp2/nghttp2ver.h lib/includes/nghttp2/nghttp2ver.h
src/libnghttp2_asio.pc
python/setup.py
integration-tests/config.go integration-tests/config.go
integration-tests/setenv integration-tests/setenv
doc/conf.py doc/conf.py
@@ -435,24 +409,24 @@ foreach(name
doc/tutorial-hpack.rst doc/tutorial-hpack.rst
doc/nghttpx-howto.rst doc/nghttpx-howto.rst
doc/h2load-howto.rst doc/h2load-howto.rst
doc/libnghttp2_asio.rst
doc/python-apiref.rst
doc/building-android-binary.rst doc/building-android-binary.rst
doc/nghttp2.h.rst doc/nghttp2.h.rst
doc/nghttp2ver.h.rst doc/nghttp2ver.h.rst
doc/asio_http2.h.rst
doc/asio_http2_server.h.rst
doc/asio_http2_client.h.rst
doc/contribute.rst doc/contribute.rst
) )
configure_file("${name}.in" "${name}" @ONLY) configure_file("${name}.in" "${name}" @ONLY)
endforeach() endforeach()
if(APPLE)
add_definitions(-D__APPLE_USE_RFC_3542)
endif()
include_directories( include_directories(
"${CMAKE_CURRENT_BINARY_DIR}" # for config.h "${CMAKE_CURRENT_BINARY_DIR}" # for config.h
) )
# For use in src/CMakeLists.txt # For use in src/CMakeLists.txt
set(PKGDATADIR "${CMAKE_INSTALL_FULL_DATADIR}/${CMAKE_PROJECT_NAME}") set(PKGDATADIR "${CMAKE_INSTALL_FULL_DATADIR}/${CMAKE_PROJECT_NAME}")
set(PKGLIBDIR "${CMAKE_INSTALL_FULL_LIBDIR}/${CMAKE_PROJECT_NAME}")
install(FILES README.rst DESTINATION "${CMAKE_INSTALL_DOCDIR}") install(FILES README.rst DESTINATION "${CMAKE_INSTALL_DOCDIR}")
@@ -460,15 +434,18 @@ add_subdirectory(lib)
#add_subdirectory(lib/includes) #add_subdirectory(lib/includes)
add_subdirectory(third-party) add_subdirectory(third-party)
add_subdirectory(src) add_subdirectory(src)
#add_subdirectory(src/includes)
add_subdirectory(examples) add_subdirectory(examples)
add_subdirectory(python) if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME AND BUILD_TESTING)
add_subdirectory(tests) add_subdirectory(tests)
#add_subdirectory(tests/testdata) #add_subdirectory(tests/testdata)
add_subdirectory(integration-tests) add_subdirectory(integration-tests)
add_subdirectory(doc) endif()
if(ENABLE_DOC)
add_subdirectory(doc)
endif()
add_subdirectory(contrib) add_subdirectory(contrib)
add_subdirectory(script) add_subdirectory(script)
add_subdirectory(bpf)
string(TOUPPER "${CMAKE_BUILD_TYPE}" _build_type) string(TOUPPER "${CMAKE_BUILD_TYPE}" _build_type)
@@ -486,26 +463,29 @@ message(STATUS "summary of build options:
CXXFLAGS: ${CMAKE_CXX_FLAGS_${_build_type}} ${CMAKE_CXX_FLAGS} CXXFLAGS: ${CMAKE_CXX_FLAGS_${_build_type}} ${CMAKE_CXX_FLAGS}
WARNCFLAGS: ${WARNCFLAGS} WARNCFLAGS: ${WARNCFLAGS}
CXX1XCXXFLAGS: ${CXX1XCXXFLAGS} CXX1XCXXFLAGS: ${CXX1XCXXFLAGS}
WARNCXXFLAGS: ${WARNCXXFLAGS}
Python: Python:
Python: ${PYTHON_EXECUTABLE} Python: ${Python3_EXECUTABLE}
PYTHON_VERSION: ${PYTHON_VERSION_STRING} Python3_VERSION: ${Python3_VERSION}
Library version:${PYTHONLIBS_VERSION_STRING}
Cython: ${CYTHON_EXECUTABLE}
Test: Test:
CUnit: ${HAVE_CUNIT} (LIBS='${CUNIT_LIBRARIES}')
Failmalloc: ${ENABLE_FAILMALLOC} Failmalloc: ${ENABLE_FAILMALLOC}
Build Test: ${BUILD_TESTING}
Libs: Libs:
OpenSSL: ${HAVE_OPENSSL} (LIBS='${OPENSSL_LIBRARIES}') OpenSSL: ${HAVE_OPENSSL} (LIBS='${OPENSSL_LIBRARIES}')
Libxml2: ${HAVE_LIBXML2} (LIBS='${LIBXML2_LIBRARIES}') Libxml2: ${HAVE_LIBXML2} (LIBS='${LIBXML2_LIBRARIES}')
Libev: ${HAVE_LIBEV} (LIBS='${LIBEV_LIBRARIES}') Libev: ${HAVE_LIBEV} (LIBS='${LIBEV_LIBRARIES}')
Libc-ares: ${HAVE_LIBCARES} (LIBS='${LIBCARES_LIBRARIES}') Libc-ares: ${HAVE_LIBCARES} (LIBS='${LIBCARES_LIBRARIES}')
Libngtcp2: ${HAVE_LIBNGTCP2} (LIBS='${LIBNGTCP2_LIBRARIES}')
Libngtcp2_crypto_quictls: ${HAVE_LIBNGTCP2_CRYPTO_QUICTLS} (LIBS='${LIBNGTCP2_CRYPTO_QUICTLS_LIBRARIES}')
Libnghttp3: ${HAVE_LIBNGHTTP3} (LIBS='${LIBNGHTTP3_LIBRARIES}')
Libbpf: ${HAVE_LIBBPF} (LIBS='${LIBBPF_LIBRARIES}')
Libevent(SSL): ${HAVE_LIBEVENT_OPENSSL} (LIBS='${LIBEVENT_OPENSSL_LIBRARIES}') Libevent(SSL): ${HAVE_LIBEVENT_OPENSSL} (LIBS='${LIBEVENT_OPENSSL_LIBRARIES}')
Jansson: ${HAVE_JANSSON} (LIBS='${JANSSON_LIBRARIES}') Jansson: ${HAVE_JANSSON} (LIBS='${JANSSON_LIBRARIES}')
Jemalloc: ${HAVE_JEMALLOC} (LIBS='${JEMALLOC_LIBRARIES}') Jemalloc: ${HAVE_JEMALLOC} (LIBS='${JEMALLOC_LIBRARIES}')
Zlib: ${HAVE_ZLIB} (LIBS='${ZLIB_LIBRARIES}') Zlib: ${HAVE_ZLIB} (LIBS='${ZLIB_LIBRARIES}')
Systemd: ${HAVE_SYSTEMD} (LIBS='${SYSTEMD_LIBRARIES}') Systemd: ${HAVE_SYSTEMD} (LIBS='${SYSTEMD_LIBRARIES}')
Boost::System: ${Boost_SYSTEM_LIBRARY} Libbrotlienc: ${HAVE_LIBBROTLIENC} (LIBS='${LIBBROTLIENC_LIBRARIES}')
Boost::Thread: ${Boost_THREAD_LIBRARY} Libbrotlidec: ${HAVE_LIBBROTLIDEC} (LIBS='${LIBBROTLIDEC_LIBRARIES}')
Third-party: Third-party:
http-parser: ${ENABLE_THIRD_PARTY} http-parser: ${ENABLE_THIRD_PARTY}
MRuby: ${HAVE_MRUBY} MRuby: ${HAVE_MRUBY}
@@ -513,10 +493,9 @@ message(STATUS "summary of build options:
Features: Features:
Applications: ${ENABLE_APP} Applications: ${ENABLE_APP}
HPACK tools: ${ENABLE_HPACK_TOOLS} HPACK tools: ${ENABLE_HPACK_TOOLS}
Libnghttp2_asio:${ENABLE_ASIO_LIB}
Examples: ${ENABLE_EXAMPLES} Examples: ${ENABLE_EXAMPLES}
Python bindings:${ENABLE_PYTHON_BINDINGS}
Threading: ${ENABLE_THREADS} Threading: ${ENABLE_THREADS}
HTTP/3(EXPERIMENTAL): ${ENABLE_HTTP3}
") ")
if(ENABLE_LIB_ONLY_DISABLED_OTHERS) if(ENABLE_LIB_ONLY_DISABLED_OTHERS)
message("Only the library will be built. To build other components " message("Only the library will be built. To build other components "

View File

@@ -7,24 +7,23 @@ option(ENABLE_APP "Build applications (nghttp, nghttpd, nghttpx and h2load
${ENABLE_APP_DEFAULT}) ${ENABLE_APP_DEFAULT})
option(ENABLE_HPACK_TOOLS "Build HPACK tools" option(ENABLE_HPACK_TOOLS "Build HPACK tools"
${ENABLE_HPACK_TOOLS_DEFAULT}) ${ENABLE_HPACK_TOOLS_DEFAULT})
option(ENABLE_ASIO_LIB "Build C++ libnghttp2_asio library")
option(ENABLE_EXAMPLES "Build examples" option(ENABLE_EXAMPLES "Build examples"
${ENABLE_EXAMPLES_DEFAULT}) ${ENABLE_EXAMPLES_DEFAULT})
option(ENABLE_PYTHON_BINDINGS "Build Python bindings"
${ENABLE_PYTHON_BINDINGS_DEFAULT})
option(ENABLE_FAILMALLOC "Build failmalloc test program" ON) option(ENABLE_FAILMALLOC "Build failmalloc test program" ON)
option(ENABLE_LIB_ONLY "Build libnghttp2 only. This is a short hand for -DENABLE_APP=0 -DENABLE_EXAMPLES=0 -DENABLE_HPACK_TOOLS=0 -DENABLE_PYTHON_BINDINGS=0") option(ENABLE_LIB_ONLY "Build libnghttp2 only. This is a short hand for -DENABLE_APP=0 -DENABLE_EXAMPLES=0 -DENABLE_HPACK_TOOLS=0")
option(ENABLE_STATIC_LIB "Build libnghttp2 in static mode also") option(BUILD_SHARED_LIBS "Build libnghttp2 as a shared library" ON)
option(ENABLE_SHARED_LIB "Build libnghttp2 as a shared library" ON) option(BUILD_STATIC_LIBS "Build libnghttp2 in static mode also" OFF)
option(ENABLE_STATIC_CRT "Build libnghttp2 against the MS LIBCMT[d]") option(ENABLE_STATIC_CRT "Build libnghttp2 against the MS LIBCMT[d]")
option(ENABLE_HTTP3 "Enable HTTP/3 support" OFF)
option(ENABLE_DOC "Build documentation" ON)
cmake_dependent_option(BUILD_TESTING "Enable tests" ON "BUILD_STATIC_LIBS" OFF)
option(WITH_LIBXML2 "Use libxml2" option(WITH_LIBXML2 "Use libxml2"
${WITH_LIBXML2_DEFAULT}) ${WITH_LIBXML2_DEFAULT})
option(WITH_JEMALLOC "Use jemalloc" option(WITH_JEMALLOC "Use jemalloc"
${WITH_JEMALLOC_DEFAULT}) ${WITH_JEMALLOC_DEFAULT})
option(WITH_SPDYLAY "Use spdylay"
${WITH_SPDYLAY_DEFAULT})
option(WITH_MRUBY "Use mruby") option(WITH_MRUBY "Use mruby")
option(WITH_NEVERBLEED "Use neverbleed") option(WITH_NEVERBLEED "Use neverbleed")
option(WITH_LIBBPF "Use libbpf")
# vim: ft=cmake: # vim: ft=cmake:

View File

@@ -12,59 +12,41 @@
# Only use standalone-toolchain for reduce size # Only use standalone-toolchain for reduce size
FROM ubuntu:xenial FROM ubuntu:22.04
MAINTAINER Tatsuhiro Tsujikawa MAINTAINER Tatsuhiro Tsujikawa
ENV ANDROID_HOME /root
ENV TOOLCHAIN $ANDROID_HOME/toolchain
ENV PATH $TOOLCHAIN/bin:$PATH
ENV NDK_VERSION r14b ENV NDK_VERSION r25b
ENV NDK /root/android-ndk-$NDK_VERSION
ENV TOOLCHAIN $NDK/toolchains/llvm/prebuilt/linux-x86_64
ENV TARGET aarch64-linux-android
ENV API 33
ENV AR $TOOLCHAIN/bin/llvm-ar
ENV CC $TOOLCHAIN/bin/$TARGET$API-clang
ENV CXX $TOOLCHAIN/bin/$TARGET$API-clang++
ENV LD $TOOLCHAIN/bin/ld
ENV RANDLIB $TOOLCHAIN/bin/llvm-ranlib
ENV STRIP $TOOLCHAIN/bin/llvm-strip
ENV PREFIX /root/usr/local
WORKDIR /root WORKDIR /root
RUN apt-get update && \ RUN apt-get update && \
apt-get install -y unzip make binutils autoconf \ apt-get install -y unzip make binutils autoconf \
automake autotools-dev libtool pkg-config git \ automake autotools-dev libtool pkg-config git \
curl dpkg-dev libxml2-dev genisoimage libc6-i386 \ curl dpkg-dev libxml2-dev genisoimage libc6-i386 \
lib32stdc++6 python&& \ lib32stdc++6 && \
rm -rf /var/cache/apk/* rm -rf /var/cache/apt/*
# Install toolchain # Download NDK
RUN curl -L -O https://dl.google.com/android/repository/android-ndk-$NDK_VERSION-linux-x86_64.zip && \ RUN curl -L -O https://dl.google.com/android/repository/android-ndk-$NDK_VERSION-linux.zip && \
unzip -q android-ndk-$NDK_VERSION-linux-x86_64.zip && \ unzip -q android-ndk-$NDK_VERSION-linux.zip && \
rm android-ndk-$NDK_VERSION-linux-x86_64.zip && \ rm android-ndk-$NDK_VERSION-linux.zip
mkdir -p $ANDROID_HOME/toolchain && \
$ANDROID_HOME/android-ndk-$NDK_VERSION/build/tools/make-standalone-toolchain.sh \
--install-dir=$ANDROID_HOME/toolchain \
--toolchain=arm-linux-androideabi-4.9 \
--force && \
rm -r android-ndk-$NDK_VERSION
ENV PREFIX /root/usr/local
# Setup version of libraries # Setup version of libraries
ENV OPENSSL_VERSION 1.0.2d ENV OPENSSL_VERSION 1.1.1q
ENV SPDYLAY_VERSION v1.4.0 ENV LIBEV_VERSION 4.33
ENV LIBEV_VERSION 4.19 ENV ZLIB_VERSION 1.2.13
ENV ZLIB_VERSION 1.2.8 ENV CARES_VERSION 1.18.1
ENV CARES_VERSION 1.13.0 ENV NGHTTP2_VERSION master
ENV NGHTTP2_VERSION v1.24.0
WORKDIR /root/build
RUN git clone https://github.com/tatsuhiro-t/spdylay -b $SPDYLAY_VERSION --depth 1
WORKDIR /root/build/spdylay
RUN autoreconf -i && \
./configure \
--disable-shared \
--host=arm-linux-androideabi \
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
--prefix=$PREFIX \
--without-libxml2 \
--disable-src \
--disable-examples \
CPPFLAGS="-I$PREFIX/include" \
PKG_CONFIG_LIBDIR="$PREFIX/lib/pkgconfig" \
LDFLAGS="-L$PREFIX/lib" && \
make install
WORKDIR /root/build WORKDIR /root/build
RUN curl -L -O https://www.openssl.org/source/openssl-$OPENSSL_VERSION.tar.gz && \ RUN curl -L -O https://www.openssl.org/source/openssl-$OPENSSL_VERSION.tar.gz && \
@@ -72,20 +54,18 @@ RUN curl -L -O https://www.openssl.org/source/openssl-$OPENSSL_VERSION.tar.gz &&
rm openssl-$OPENSSL_VERSION.tar.gz rm openssl-$OPENSSL_VERSION.tar.gz
WORKDIR /root/build/openssl-$OPENSSL_VERSION WORKDIR /root/build/openssl-$OPENSSL_VERSION
RUN export CROSS_COMPILE=$TOOLCHAIN/bin/arm-linux-androideabi- && \ RUN export ANDROID_NDK_HOME=$NDK PATH=$TOOLCHAIN/bin:$PATH && \
./Configure --prefix=$PREFIX android && \ ./Configure no-shared --prefix=$PREFIX android-arm64 && \
make && make install_sw make && make install_sw
WORKDIR /root/build WORKDIR /root/build
RUN curl -L -O http://dist.schmorp.de/libev/Attic/libev-$LIBEV_VERSION.tar.gz && \ RUN curl -L -O http://dist.schmorp.de/libev/Attic/libev-$LIBEV_VERSION.tar.gz && \
curl -L -O https://gist.github.com/tatsuhiro-t/48c45f08950f587180ed/raw/80a8f003b5d1091eae497c5995bbaa68096e739b/libev-4.19-android.patch && \
tar xf libev-$LIBEV_VERSION.tar.gz && \ tar xf libev-$LIBEV_VERSION.tar.gz && \
rm libev-$LIBEV_VERSION.tar.gz rm libev-$LIBEV_VERSION.tar.gz
WORKDIR /root/build/libev-$LIBEV_VERSION WORKDIR /root/build/libev-$LIBEV_VERSION
RUN patch -p1 < ../libev-4.19-android.patch && \ RUN ./configure \
./configure \ --host=$TARGET \
--host=arm-linux-androideabi \
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \ --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
--prefix=$PREFIX \ --prefix=$PREFIX \
--disable-shared \ --disable-shared \
@@ -95,17 +75,12 @@ RUN patch -p1 < ../libev-4.19-android.patch && \
make install make install
WORKDIR /root/build WORKDIR /root/build
RUN curl -L -O https://downloads.sourceforge.net/project/libpng/zlib/$ZLIB_VERSION/zlib-$ZLIB_VERSION.tar.gz && \ RUN curl -L -O https://zlib.net/zlib-$ZLIB_VERSION.tar.gz && \
tar xf zlib-$ZLIB_VERSION.tar.gz && \ tar xf zlib-$ZLIB_VERSION.tar.gz && \
rm zlib-$ZLIB_VERSION.tar.gz rm zlib-$ZLIB_VERSION.tar.gz
WORKDIR /root/build/zlib-$ZLIB_VERSION WORKDIR /root/build/zlib-$ZLIB_VERSION
RUN HOST=arm-linux-androideabi \ RUN HOST=$TARGET \
CC=$HOST-gcc \
AR=$HOST-ar \
LD=$HOST-ld \
RANLIB=$HOST-ranlib \
STRIP=$HOST-strip \
./configure \ ./configure \
--prefix=$PREFIX \ --prefix=$PREFIX \
--libdir=$PREFIX/lib \ --libdir=$PREFIX/lib \
@@ -121,7 +96,7 @@ RUN curl -L -O https://c-ares.haxx.se/download/c-ares-$CARES_VERSION.tar.gz && \
WORKDIR /root/build/c-ares-$CARES_VERSION WORKDIR /root/build/c-ares-$CARES_VERSION
RUN ./configure \ RUN ./configure \
--host=arm-linux-androideabi \ --host=$TARGET \
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \ --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
--prefix=$PREFIX \ --prefix=$PREFIX \
--disable-shared && \ --disable-shared && \
@@ -134,17 +109,13 @@ RUN autoreconf -i && \
./configure \ ./configure \
--enable-app \ --enable-app \
--disable-shared \ --disable-shared \
--host=arm-linux-androideabi \ --host=$TARGET \
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \ --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
--with-xml-prefix="$PREFIX" \
--without-libxml2 \ --without-libxml2 \
--disable-python-bindings \
--disable-examples \ --disable-examples \
--disable-threads \ --disable-threads \
CC="$TOOLCHAIN"/bin/arm-linux-androideabi-clang \
CXX="$TOOLCHAIN"/bin/arm-linux-androideabi-clang++ \
CPPFLAGS="-fPIE -I$PREFIX/include" \ CPPFLAGS="-fPIE -I$PREFIX/include" \
PKG_CONFIG_LIBDIR="$PREFIX/lib/pkgconfig" \ PKG_CONFIG_LIBDIR="$PREFIX/lib/pkgconfig" \
LDFLAGS="-fPIE -pie -L$PREFIX/lib" && \ LDFLAGS="-fPIE -pie -L$PREFIX/lib" && \
make && \ make && \
arm-linux-androideabi-strip src/nghttpx src/nghttpd src/nghttp $STRIP src/nghttpx src/nghttpd src/nghttp

View File

@@ -20,19 +20,14 @@
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
SUBDIRS = lib third-party src examples python tests integration-tests \ SUBDIRS = lib third-party src bpf examples tests integration-tests \
doc contrib script doc contrib script
# Now with python setuptools, make uninstall will leave many files we
# cannot easily remove (e.g., easy-install.pth). Disable it for
# distcheck rule.
AM_DISTCHECK_CONFIGURE_FLAGS = --disable-python-bindings
ACLOCAL_AMFLAGS = -I m4 ACLOCAL_AMFLAGS = -I m4
dist_doc_DATA = README.rst dist_doc_DATA = README.rst
EXTRA_DIST = nghttpx.conf.sample proxy.pac.sample android-config android-make \ EXTRA_DIST = nghttpx.conf.sample proxy.pac.sample android-config android-env \
Dockerfile.android \ Dockerfile.android \
cmakeconfig.h.in \ cmakeconfig.h.in \
CMakeLists.txt \ CMakeLists.txt \
@@ -40,22 +35,28 @@ EXTRA_DIST = nghttpx.conf.sample proxy.pac.sample android-config android-make \
cmake/ExtractValidFlags.cmake \ cmake/ExtractValidFlags.cmake \
cmake/FindJemalloc.cmake \ cmake/FindJemalloc.cmake \
cmake/FindLibev.cmake \ cmake/FindLibev.cmake \
cmake/FindCUnit.cmake \
cmake/Version.cmake \ cmake/Version.cmake \
cmake/FindCython.cmake \
cmake/FindLibevent.cmake \ cmake/FindLibevent.cmake \
cmake/FindJansson.cmake \ cmake/FindJansson.cmake \
cmake/FindLibcares.cmake \ cmake/FindLibcares.cmake \
cmake/FindSystemd.cmake cmake/FindSystemd.cmake \
cmake/FindLibbpf.cmake \
cmake/FindLibnghttp3.cmake \
cmake/FindLibngtcp2.cmake \
cmake/FindLibngtcp2_crypto_quictls.cmake \
cmake/FindLibbrotlienc.cmake \
cmake/FindLibbrotlidec.cmake \
cmake/PickyWarningsC.cmake \
cmake/PickyWarningsCXX.cmake
.PHONY: clang-format .PHONY: clang-format
# Format source files using clang-format. Don't format source files # Format source files using clang-format. Don't format source files
# under third-party directory since we are not responsible for thier # under third-party directory since we are not responsible for their
# coding style. # coding style.
clang-format: clang-format:
CLANGFORMAT=`git config --get clangformat.binary`; \ CLANGFORMAT=`git config --get clangformat.binary`; \
test -z $${CLANGFORMAT} && CLANGFORMAT="clang-format"; \ test -z $${CLANGFORMAT} && CLANGFORMAT="clang-format"; \
$${CLANGFORMAT} -i lib/*.{c,h} lib/includes/nghttp2/*.h \ $${CLANGFORMAT} -i lib/*.{c,h} lib/includes/nghttp2/*.h \
src/*.{c,cc,h} src/includes/nghttp2/*.h examples/*.{c,cc} \ src/*.{c,cc,h} examples/*.c \
tests/*.{c,h} tests/*.{c,h} bpf/*.c fuzz/*.cc

View File

@@ -11,17 +11,14 @@ HTTP/2.
An HPACK encoder and decoder are available as a public API. An HPACK encoder and decoder are available as a public API.
An experimental high level C++ library is also available.
We have Python bindings of this library, but we do not have full
code coverage yet.
Development Status Development Status
------------------ ------------------
We have implemented `RFC 7540 <https://tools.ietf.org/html/rfc7540>`_ nghttp2 was originally developed based on `RFC 7540
HTTP/2 and `RFC 7541 <https://tools.ietf.org/html/rfc7541>`_ HPACK - <https://tools.ietf.org/html/rfc7540>`_ HTTP/2 and `RFC 7541
Header Compression for HTTP/2 <https://tools.ietf.org/html/rfc7541>`_ HPACK - Header Compression for
HTTP/2. Now we are updating our code to implement `RFC 9113
<https://datatracker.ietf.org/doc/html/rfc9113>`_.
The nghttp2 code base was forked from the spdylay The nghttp2 code base was forked from the spdylay
(https://github.com/tatsuhiro-t/spdylay) project. (https://github.com/tatsuhiro-t/spdylay) project.
@@ -32,12 +29,14 @@ Public Test Server
The following endpoints are available to try out our nghttp2 The following endpoints are available to try out our nghttp2
implementation. implementation.
* https://nghttp2.org/ (TLS + ALPN/NPN) * https://nghttp2.org/ (TLS + ALPN and HTTP/3)
This endpoint supports ``h2``, ``h2-16``, ``h2-14``, and This endpoint supports ``h2``, ``h2-16``, ``h2-14``, and
``http/1.1`` via ALPN/NPN and requires TLSv1.2 for HTTP/2 ``http/1.1`` via ALPN and requires TLSv1.2 for HTTP/2
connection. connection.
It also supports HTTP/3.
* http://nghttp2.org/ (HTTP Upgrade and HTTP/2 Direct) * http://nghttp2.org/ (HTTP Upgrade and HTTP/2 Direct)
``h2c`` and ``http/1.1``. ``h2c`` and ``http/1.1``.
@@ -49,11 +48,6 @@ The following package is required to build the libnghttp2 library:
* pkg-config >= 0.20 * pkg-config >= 0.20
To build and run the unit test programs, the following package is
required:
* cunit >= 2.1
To build the documentation, you need to install: To build the documentation, you need to install:
* sphinx (http://sphinx-doc.org/) * sphinx (http://sphinx-doc.org/)
@@ -67,15 +61,12 @@ To build and run the application programs (``nghttp``, ``nghttpd``,
``nghttpx`` and ``h2load``) in the ``src`` directory, the following packages ``nghttpx`` and ``h2load``) in the ``src`` directory, the following packages
are required: are required:
* OpenSSL >= 1.0.1 * OpenSSL >= 1.1.1; or LibreSSL >= 3.8.1; or aws-lc >= 1.19.0; or
BoringSSL
* libev >= 4.11 * libev >= 4.11
* zlib >= 1.2.3 * zlib >= 1.2.3
* libc-ares >= 1.7.5 * libc-ares >= 1.7.5
ALPN support requires OpenSSL >= 1.0.2 (released 22 January 2015).
LibreSSL >= 2.2.0 can be used instead of OpenSSL, but OpenSSL has more
features than LibreSSL at the time of this writing.
To enable ``-a`` option (getting linked assets from the downloaded To enable ``-a`` option (getting linked assets from the downloaded
resource) in ``nghttp``, the following package is required: resource) in ``nghttp``, the following package is required:
@@ -104,31 +95,15 @@ To mitigate heap fragmentation in long running server programs
Alpine Linux currently does not support malloc replacement Alpine Linux currently does not support malloc replacement
due to musl limitations. See details in issue `#762 <https://github.com/nghttp2/nghttp2/issues/762>`_. due to musl limitations. See details in issue `#762 <https://github.com/nghttp2/nghttp2/issues/762>`_.
libnghttp2_asio C++ library requires the following packages: For BoringSSL or aws-lc build, to enable :rfc:`8879` TLS Certificate
Compression in applications, the following library is required:
* libboost-dev >= 1.54.0 * libbrotli-dev >= 1.0.9
* libboost-thread-dev >= 1.54.0
The Python bindings require the following packages:
* cython >= 0.19
* python >= 3.8
* python-setuptools
If you are using Ubuntu 16.04 LTS (Xenial Xerus) or Debian 8 (jessie)
and above, run the following to install the required packages:
.. code-block:: text
sudo apt-get install g++ make binutils autoconf automake autotools-dev libtool pkg-config \
zlib1g-dev libcunit1-dev libssl-dev libxml2-dev libev-dev libevent-dev libjansson-dev \
libc-ares-dev libjemalloc-dev libsystemd-dev \
cython python3-dev python-setuptools
To enable mruby support for nghttpx, `mruby To enable mruby support for nghttpx, `mruby
<https://github.com/mruby/mruby>`_ is required. We need to build <https://github.com/mruby/mruby>`_ is required. We need to build
mruby with C++ ABI explicitly turned on, and probably need other mruby with C++ ABI explicitly turned on, and probably need other
mrgems, mruby is manged by git submodule under third-party/mruby mrgems, mruby is managed by git submodule under third-party/mruby
directory. Currently, mruby support for nghttpx is disabled by directory. Currently, mruby support for nghttpx is disabled by
default. To enable mruby support, use ``--with-mruby`` configure default. To enable mruby support, use ``--with-mruby`` configure
option. Note that at the time of this writing, libmruby-dev and mruby option. Note that at the time of this writing, libmruby-dev and mruby
@@ -140,15 +115,43 @@ required:
* bison * bison
nghttpx supports `neverbleed <https://github.com/h2o/neverbleed>`_, nghttpx supports `neverbleed <https://github.com/h2o/neverbleed>`_,
privilege separation engine for OpenSSL / LibreSSL. In short, it privilege separation engine for OpenSSL. In short, it minimizes the
minimizes the risk of private key leakage when serious bug like risk of private key leakage when serious bug like Heartbleed is
Heartbleed is exploited. The neverbleed is disabled by default. To exploited. The neverbleed is disabled by default. To enable it, use
enable it, use ``--with-neverbleed`` configure option. ``--with-neverbleed`` configure option.
To enable the experimental HTTP/3 support for h2load and nghttpx, the
following libraries are required:
* `OpenSSL with QUIC support
<https://github.com/quictls/openssl/tree/OpenSSL_1_1_1w+quic>`_; or
LibreSSL (does not support 0RTT); or aws-lc; or
`BoringSSL <https://boringssl.googlesource.com/boringssl/>`_ (commit
6ab7c1482bf4cdc91c87bc512aaf68ffb18975ec)
* `ngtcp2 <https://github.com/ngtcp2/ngtcp2>`_ >= 1.4.0
* `nghttp3 <https://github.com/ngtcp2/nghttp3>`_ >= 1.1.0
Use ``--enable-http3`` configure option to enable HTTP/3 feature for
h2load and nghttpx.
In order to build optional eBPF program to direct an incoming QUIC UDP
datagram to a correct socket for nghttpx, the following libraries are
required:
* libbpf-dev >= 0.7.0
Use ``--with-libbpf`` configure option to build eBPF program.
libelf-dev is needed to build libbpf.
For Ubuntu 20.04, you can build libbpf from `the source code
<https://github.com/libbpf/libbpf/releases/tag/v1.3.0>`_. nghttpx
requires eBPF program for reloading its configuration and hot swapping
its executable.
Compiling libnghttp2 C source code requires a C99 compiler. gcc 4.8 Compiling libnghttp2 C source code requires a C99 compiler. gcc 4.8
is known to be adequate. In order to compile the C++ source code, gcc is known to be adequate. In order to compile the C++ source code,
>= 6.0 or clang >= 6.0 is required. C++ source code requires C++14 C++20 compliant compiler is required. At least g++ >= 1.12 and
language features. clang++ >= 1.15 are known to work.
.. note:: .. note::
@@ -195,6 +198,18 @@ language features.
responsible to specify the correct values to these variables. For responsible to specify the correct values to these variables. For
complete list of these variables, run ``./configure -h``. complete list of these variables, run ``./configure -h``.
If you are using Ubuntu 22.04 LTS, run the following to install the
required packages:
.. code-block:: text
sudo apt-get install g++ clang make binutils autoconf automake \
autotools-dev libtool pkg-config \
zlib1g-dev libssl-dev libxml2-dev libev-dev \
libevent-dev libjansson-dev \
libc-ares-dev libjemalloc-dev libsystemd-dev \
ruby-dev bison libelf-dev
Building nghttp2 from release tar archive Building nghttp2 from release tar archive
----------------------------------------- -----------------------------------------
@@ -307,6 +322,90 @@ The generated documents will not be installed with ``make install``.
The online documentation is available at The online documentation is available at
https://nghttp2.org/documentation/ https://nghttp2.org/documentation/
Build HTTP/3 enabled h2load and nghttpx
---------------------------------------
To build h2load and nghttpx with HTTP/3 feature enabled, run the
configure script with ``--enable-http3``.
For nghttpx to reload configurations and swapping its executable while
gracefully terminating old worker processes, eBPF is required. Run
the configure script with ``--enable-http3 --with-libbpf`` to build
eBPF program. The QUIC keying material must be set with
``--frontend-quic-secret-file`` in order to keep the existing
connections alive during reload.
The detailed steps to build HTTP/3 enabled h2load and nghttpx follow.
Build aws-lc:
.. code-block:: text
$ git clone --depth 1 -b v1.26.0 https://github.com/aws/aws-lc
$ cd aws-lc
$ cmake -B build -DDISABLE_GO=ON --install-prefix=$PWD/opt
$ make -j$(nproc) -C build
$ cmake --install build
$ cd ..
Build nghttp3:
.. code-block:: text
$ git clone --depth 1 -b v1.3.0 https://github.com/ngtcp2/nghttp3
$ cd nghttp3
$ git submodule update --init --depth 1
$ autoreconf -i
$ ./configure --prefix=$PWD/build --enable-lib-only
$ make -j$(nproc)
$ make install
$ cd ..
Build ngtcp2:
.. code-block:: text
$ git clone --depth 1 -b v1.5.0 https://github.com/ngtcp2/ngtcp2
$ cd ngtcp2
$ git submodule update --init --depth 1
$ autoreconf -i
$ ./configure --prefix=$PWD/build --enable-lib-only --with-boringssl \
BORINGSSL_CFLAGS="-I$PWD/../aws-lc/opt/include" \
BORINGSSL_LIBS="-L$PWD/../aws-lc/opt/lib -lssl -lcrypto"
$ make -j$(nproc)
$ make install
$ cd ..
If your Linux distribution does not have libbpf-dev >= 0.7.0, build
from source:
.. code-block:: text
$ git clone --depth 1 -b v1.3.0 https://github.com/libbpf/libbpf
$ cd libbpf
$ PREFIX=$PWD/build make -C src install
$ cd ..
Build nghttp2:
.. code-block:: text
$ git clone https://github.com/nghttp2/nghttp2
$ cd nghttp2
$ git submodule update --init
$ autoreconf -i
$ ./configure --with-mruby --enable-http3 --with-libbpf \
CC=clang-15 CXX=clang++-15 \
PKG_CONFIG_PATH="$PWD/../aws-lc/opt/lib/pkgconfig:$PWD/../nghttp3/build/lib/pkgconfig:$PWD/../ngtcp2/build/lib/pkgconfig:$PWD/../libbpf/build/lib64/pkgconfig" \
LDFLAGS="$LDFLAGS -Wl,-rpath,$PWD/../aws-lc/opt/lib -Wl,-rpath,$PWD/../libbpf/build/lib64"
$ make -j$(nproc)
The eBPF program ``reuseport_kern.o`` should be found under bpf
directory. Pass ``--quic-bpf-program-file=bpf/reuseport_kern.o``
option to nghttpx to load it. See also `HTTP/3 section in nghttpx -
HTTP/2 proxy - HOW-TO
<https://nghttp2.org/documentation/nghttpx-howto.html#http-3>`_.
Unit tests Unit tests
---------- ----------
@@ -383,7 +482,7 @@ Previously nghttp2 library did not send client magic, which is first
24 bytes byte string of client connection preface, and client 24 bytes byte string of client connection preface, and client
applications have to send it by themselves. Since v1.0.0, client applications have to send it by themselves. Since v1.0.0, client
magic is sent by library via first call of ``nghttp2_session_send()`` magic is sent by library via first call of ``nghttp2_session_send()``
or ``nghttp2_session_mem_send()``. or ``nghttp2_session_mem_send2()``.
The client applications which send client magic must remove the The client applications which send client magic must remove the
relevant code. relevant code.
@@ -441,7 +540,7 @@ nghttp - client
+++++++++++++++ +++++++++++++++
``nghttp`` is a HTTP/2 client. It can connect to the HTTP/2 server ``nghttp`` is a HTTP/2 client. It can connect to the HTTP/2 server
with prior knowledge, HTTP Upgrade and NPN/ALPN TLS extension. with prior knowledge, HTTP Upgrade and ALPN TLS extension.
It has verbose output mode for framing information. Here is sample It has verbose output mode for framing information. Here is sample
output from ``nghttp`` client: output from ``nghttp`` client:
@@ -667,8 +766,8 @@ nghttpd - server
By default, it uses SSL/TLS connection. Use ``--no-tls`` option to By default, it uses SSL/TLS connection. Use ``--no-tls`` option to
disable it. disable it.
``nghttpd`` only accepts HTTP/2 connections via NPN/ALPN or direct ``nghttpd`` only accepts HTTP/2 connections via ALPN or direct HTTP/2
HTTP/2 connections. No HTTP Upgrade is supported. connections. No HTTP Upgrade is supported.
The ``-p`` option allows users to configure server push. The ``-p`` option allows users to configure server push.
@@ -734,7 +833,7 @@ information. Here is sample output from ``nghttpd``:
nghttpx - proxy nghttpx - proxy
+++++++++++++++ +++++++++++++++
``nghttpx`` is a multi-threaded reverse proxy for HTTP/2, and ``nghttpx`` is a multi-threaded reverse proxy for HTTP/3, HTTP/2, and
HTTP/1.1, and powers http://nghttp2.org and supports HTTP/2 server HTTP/1.1, and powers http://nghttp2.org and supports HTTP/2 server
push. push.
@@ -749,22 +848,22 @@ to know how to migrate from earlier releases.
``nghttpx`` implements `important performance-oriented features ``nghttpx`` implements `important performance-oriented features
<https://istlsfastyet.com/#server-performance>`_ in TLS, such as <https://istlsfastyet.com/#server-performance>`_ in TLS, such as
session IDs, session tickets (with automatic key rotation), OCSP session IDs, session tickets (with automatic key rotation), OCSP
stapling, dynamic record sizing, ALPN/NPN, forward secrecy and HTTP/2. stapling, dynamic record sizing, ALPN, forward secrecy and HTTP/2.
``nghttpx`` also offers the functionality to share session cache and ``nghttpx`` also offers the functionality to share session cache and
ticket keys among multiple ``nghttpx`` instances via memcached. ticket keys among multiple ``nghttpx`` instances via memcached.
``nghttpx`` has 2 operation modes: ``nghttpx`` has 2 operation modes:
================== ================ ================ ============= ================== ======================== ================ =============
Mode option Frontend Backend Note Mode option Frontend Backend Note
================== ================ ================ ============= ================== ======================== ================ =============
default mode HTTP/2, HTTP/1.1 HTTP/1.1, HTTP/2 Reverse proxy default mode HTTP/3, HTTP/2, HTTP/1.1 HTTP/1.1, HTTP/2 Reverse proxy
``--http2-proxy`` HTTP/2, HTTP/1.1 HTTP/1.1, HTTP/2 Forward proxy ``--http2-proxy`` HTTP/3, HTTP/2, HTTP/1.1 HTTP/1.1, HTTP/2 Forward proxy
================== ================ ================ ============= ================== ======================== ================ =============
The interesting mode at the moment is the default mode. It works like The interesting mode at the moment is the default mode. It works like
a reverse proxy and listens for HTTP/2, and HTTP/1.1 and can be a reverse proxy and listens for HTTP/3, HTTP/2, and HTTP/1.1 and can
deployed as a SSL/TLS terminator for existing web server. be deployed as a SSL/TLS terminator for existing web server.
In all modes, the frontend connections are encrypted by SSL/TLS by In all modes, the frontend connections are encrypted by SSL/TLS by
default. To disable encryption, use the ``no-tls`` keyword in default. To disable encryption, use the ``no-tls`` keyword in
@@ -782,7 +881,7 @@ server:
.. code-block:: text .. code-block:: text
Client <-- (HTTP/2, HTTP/1.1) --> nghttpx <-- (HTTP/1.1, HTTP/2) --> Web Server Client <-- (HTTP/3, HTTP/2, HTTP/1.1) --> nghttpx <-- (HTTP/1.1, HTTP/2) --> Web Server
[reverse proxy] [reverse proxy]
With the ``--http2-proxy`` option, it works as forward proxy, and it With the ``--http2-proxy`` option, it works as forward proxy, and it
@@ -790,7 +889,7 @@ is so called secure HTTP/2 proxy:
.. code-block:: text .. code-block:: text
Client <-- (HTTP/2, HTTP/1.1) --> nghttpx <-- (HTTP/1.1) --> Proxy Client <-- (HTTP/3, HTTP/2, HTTP/1.1) --> nghttpx <-- (HTTP/1.1) --> Proxy
[secure proxy] (e.g., Squid, ATS) [secure proxy] (e.g., Squid, ATS)
The ``Client`` in the above example needs to be configured to use The ``Client`` in the above example needs to be configured to use
@@ -823,7 +922,7 @@ proxy through an HTTP proxy:
.. code-block:: text .. code-block:: text
Client <-- (HTTP/2, HTTP/1.1) --> nghttpx <-- (HTTP/2) -- Client <-- (HTTP/3, HTTP/2, HTTP/1.1) --> nghttpx <-- (HTTP/2) --
--===================---> HTTP/2 Proxy --===================---> HTTP/2 Proxy
(HTTP proxy tunnel) (e.g., nghttpx -s) (HTTP proxy tunnel) (e.g., nghttpx -s)
@@ -831,8 +930,8 @@ proxy through an HTTP proxy:
Benchmarking tool Benchmarking tool
----------------- -----------------
The ``h2load`` program is a benchmarking tool for HTTP/2. The UI of The ``h2load`` program is a benchmarking tool for HTTP/3, HTTP/2, and
``h2load`` is heavily inspired by ``weighttp`` HTTP/1.1. The UI of ``h2load`` is heavily inspired by ``weighttp``
(https://github.com/lighttpd/weighttp). The typical usage is as (https://github.com/lighttpd/weighttp). The typical usage is as
follows: follows:
@@ -875,6 +974,17 @@ threads to avoid saturating a single core on client side.
considered a DOS attack. Please only use it against your private considered a DOS attack. Please only use it against your private
servers. servers.
If the experimental HTTP/3 is enabled, h2load can send requests to
HTTP/3 server. To do this, specify ``h3`` to ``--alpn-list`` option
like so:
.. code-block:: text
$ h2load --alpn-list h3 https://127.0.0.1:4433
For nghttp2 v1.58 or earlier, use ``--npn-list`` instead of
``--alpn-list``.
HPACK tools HPACK tools
----------- -----------
@@ -1312,219 +1422,6 @@ associated value includes the state of the dynamic header table after the
corresponding header set was processed. The format is the same as corresponding header set was processed. The format is the same as
``deflatehd``. ``deflatehd``.
libnghttp2_asio: High level HTTP/2 C++ library
----------------------------------------------
libnghttp2_asio is C++ library built on top of libnghttp2 and provides
high level abstraction API to build HTTP/2 applications. It depends
on the Boost::ASIO library and OpenSSL. Currently libnghttp2_asio
provides both client and server APIs.
libnghttp2_asio is not built by default. Use the ``--enable-asio-lib``
configure flag to build libnghttp2_asio. The required Boost libraries
are:
* Boost::Asio
* Boost::System
* Boost::Thread
The server API is designed to build an HTTP/2 server very easily to utilize
C++14 anonymous functions and closures. The bare minimum example of
an HTTP/2 server looks like this:
.. code-block:: cpp
#include <iostream>
#include <nghttp2/asio_http2_server.h>
using namespace nghttp2::asio_http2;
using namespace nghttp2::asio_http2::server;
int main(int argc, char *argv[]) {
boost::system::error_code ec;
http2 server;
server.handle("/", [](const request &req, const response &res) {
res.write_head(200);
res.end("hello, world\n");
});
if (server.listen_and_serve(ec, "localhost", "3000")) {
std::cerr << "error: " << ec.message() << std::endl;
}
}
Here is sample code to use the client API:
.. code-block:: cpp
#include <iostream>
#include <nghttp2/asio_http2_client.h>
using boost::asio::ip::tcp;
using namespace nghttp2::asio_http2;
using namespace nghttp2::asio_http2::client;
int main(int argc, char *argv[]) {
boost::system::error_code ec;
boost::asio::io_service io_service;
// connect to localhost:3000
session sess(io_service, "localhost", "3000");
sess.on_connect([&sess](tcp::resolver::iterator endpoint_it) {
boost::system::error_code ec;
auto req = sess.submit(ec, "GET", "http://localhost:3000/");
req->on_response([](const response &res) {
// print status code and response header fields.
std::cerr << "HTTP/2 " << res.status_code() << std::endl;
for (auto &kv : res.header()) {
std::cerr << kv.first << ": " << kv.second.value << "\n";
}
std::cerr << std::endl;
res.on_data([](const uint8_t *data, std::size_t len) {
std::cerr.write(reinterpret_cast<const char *>(data), len);
std::cerr << std::endl;
});
});
req->on_close([&sess](uint32_t error_code) {
// shutdown session after first request was done.
sess.shutdown();
});
});
sess.on_error([](const boost::system::error_code &ec) {
std::cerr << "error: " << ec.message() << std::endl;
});
io_service.run();
}
For more details, see the documentation of libnghttp2_asio.
Python bindings
---------------
The ``python`` directory contains nghttp2 Python bindings. The
bindings currently provide HPACK compressor and decompressor classes
and an HTTP/2 server.
The extension module is called ``nghttp2``.
``make`` will build the bindings and target Python version is
determined by the ``configure`` script. If the detected Python version is not
what you expect, specify a path to Python executable in a ``PYTHON``
variable as an argument to configure script (e.g., ``./configure
PYTHON=/usr/bin/python3.8``).
The following example code illustrates basic usage of the HPACK compressor
and decompressor in Python:
.. code-block:: python
import binascii
import nghttp2
deflater = nghttp2.HDDeflater()
inflater = nghttp2.HDInflater()
data = deflater.deflate([(b'foo', b'bar'),
(b'baz', b'buz')])
print(binascii.b2a_hex(data))
hdrs = inflater.inflate(data)
print(hdrs)
The ``nghttp2.HTTP2Server`` class builds on top of the asyncio event
loop. On construction, *RequestHandlerClass* must be given, which
must be a subclass of ``nghttp2.BaseRequestHandler`` class.
The ``BaseRequestHandler`` class is used to handle the HTTP/2 stream.
By default, it does nothing. It must be subclassed to handle each
event callback method.
The first callback method invoked is ``on_headers()``. It is called
when HEADERS frame, which includes the request header fields, has arrived.
If the request has a request body, ``on_data(data)`` is invoked for each
chunk of received data.
Once the entire request is received, ``on_request_done()`` is invoked.
When the stream is closed, ``on_close(error_code)`` is called.
The application can send a response using ``send_response()`` method.
It can be used in ``on_headers()``, ``on_data()`` or
``on_request_done()``.
The application can push resources using the ``push()`` method. It must be
used before the ``send_response()`` call.
The following instance variables are available:
client_address
Contains a tuple of the form (host, port) referring to the
client's address.
stream_id
Stream ID of this stream.
scheme
Scheme of the request URI. This is a value of :scheme header
field.
method
Method of this stream. This is a value of :method header field.
host
This is a value of :authority or host header field.
path
This is a value of :path header field.
The following example illustrates the HTTP2Server and
BaseRequestHandler usage:
.. code-block:: python
#!/usr/bin/env python3
import io, ssl
import nghttp2
class Handler(nghttp2.BaseRequestHandler):
def on_headers(self):
self.push(path='/css/bootstrap.css',
request_headers = [('content-length', '3')],
status=200,
body='foo')
self.push(path='/js/bootstrap.js',
method='GET',
request_headers = [('content-length', '10')],
status=200,
body='foobarbuzz')
self.send_response(status=200,
headers = [('content-type', 'text/plain')],
body=io.BytesIO(b'nghttp2-python FTW'))
ctx = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
ctx.options = ssl.OP_ALL | ssl.OP_NO_SSLv2
ctx.load_cert_chain('server.crt', 'server.key')
# give None to ssl to make the server non-SSL/TLS
server = nghttp2.HTTP2Server(('127.0.0.1', 8443), Handler, ssl=ctx)
server.serve_forever()
Contribution Contribution
------------ ------------
@@ -1552,23 +1449,10 @@ See `Contribution Guidelines
<https://nghttp2.org/documentation/contribute.html>`_ for more <https://nghttp2.org/documentation/contribute.html>`_ for more
details. details.
Reporting vulnerability Versioning
----------------------- ----------
If you find a vulnerability in our software, please send the email to In general, we follow `Semantic Versioning <http://semver.org/>`_.
"tatsuhiro.t at gmail dot com" about its details instead of submitting
issues on github issue page. It is a standard practice not to
disclose vulnerability information publicly until a fixed version is
released, or mitigation is worked out.
In the future, we may setup a dedicated mail address for this purpose.
Release schedule
----------------
In general, we follow `Semantic Versioning <http://semver.org/>`_. We
release MINOR version update every month, and usually we ship it
around 25th day of every month.
We may release PATCH releases between the regular releases, mainly for We may release PATCH releases between the regular releases, mainly for
severe security bug fixes. severe security bug fixes.

31
SECURITY.md Normal file
View File

@@ -0,0 +1,31 @@
# Security Process
If you find a vulnerability in our software, please report it via
GitHub "Private vulnerability reporting" feature at
https://github.com/nghttp2/nghttp2/security instead of submitting
issues on github issue page. It is a standard practice not to
disclose vulnerability information publicly until a fixed version is
released, or mitigation is worked out.
If we identify that the reported issue is really a vulnerability, we
open a new security advisory draft using [GitHub security
feature](https://github.com/nghttp2/nghttp2/security) and discuss the
mitigation and bug fixes there. The fixes are committed to the
private repository.
We write the security advisory and get CVE number from GitHub
privately. We also discuss the disclosure date to the public.
We make a new release with the fix at the same time when the
vulnerability is disclosed to public.
At least 7 days before the public disclosure date, we open a new issue
on [nghttp2 issue tracker](https://github.com/nghttp2/nghttp2/issues)
which notifies that the upcoming release will have a security fix.
The `SECURITY` label is attached to this kind of issue. The issue is
not opened if a vulnerability is already disclosed, and it is publicly
known that nghttp2 is affected by that.
Before few hours of new release, we merge the fixes to the master
branch (and/or a release branch if necessary) and make a new release.
Security advisory is disclosed on GitHub.

View File

@@ -23,25 +23,15 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
if [ -z "$ANDROID_HOME" ]; then . ./android-env
echo 'No $ANDROID_HOME specified.'
exit 1
fi
PREFIX="$ANDROID_HOME"/usr/local
TOOLCHAIN="$ANDROID_HOME"/toolchain
PATH="$TOOLCHAIN"/bin:"$PATH"
./configure \ ./configure \
--disable-shared \ --disable-shared \
--host=arm-linux-androideabi \ --host=$TARGET \
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \ --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
--with-xml-prefix="$PREFIX" \
--without-libxml2 \ --without-libxml2 \
--disable-python-bindings \
--disable-examples \ --disable-examples \
--disable-threads \ --disable-threads \
CC="$TOOLCHAIN"/bin/arm-linux-androideabi-clang \
CXX="$TOOLCHAIN"/bin/arm-linux-androideabi-clang++ \
CPPFLAGS="-fPIE -I$PREFIX/include" \ CPPFLAGS="-fPIE -I$PREFIX/include" \
PKG_CONFIG_LIBDIR="$PREFIX/lib/pkgconfig" \ PKG_CONFIG_LIBDIR="$PREFIX/lib/pkgconfig" \
LDFLAGS="-fPIE -pie -L$PREFIX/lib" LDFLAGS="-fPIE -pie -L$PREFIX/lib"

37
src/libnghttp2_asio.pc.in → android-env Normal file → Executable file
View File

@@ -1,7 +1,9 @@
#!/bin/sh
#
# nghttp2 - HTTP/2 C Library # nghttp2 - HTTP/2 C Library
#
# Copyright (c) 2014 Tatsuhiro Tsujikawa # Copyright (c) 2022 nghttp2 contributors
#
# Permission is hereby granted, free of charge, to any person obtaining # Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the # a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including # "Software"), to deal in the Software without restriction, including
@@ -9,10 +11,10 @@
# distribute, sublicense, and/or sell copies of the Software, and to # distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to # permit persons to whom the Software is furnished to do so, subject to
# the following conditions: # the following conditions:
#
# The above copyright notice and this permission notice shall be # The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software. # included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -20,14 +22,19 @@
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
Name: libnghttp2_asio if [ -z "$NDK" ]; then
Description: HTTP/2 C++ library echo 'No $NDK specified.'
URL: https://github.com/tatsuhiro-t/nghttp2 exit 1
Version: @VERSION@ fi
Libs: -L${libdir} -lnghttp2_asio
Cflags: -I${includedir} export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
export TARGET=aarch64-linux-android
export API=33
export AR=$TOOLCHAIN/bin/llvm-ar
export CC=$TOOLCHAIN/bin/$TARGET$API-clang
export CXX=$TOOLCHAIN/bin/$TARGET$API-clang++
export LD=$TOOLCHAIN/bin/ld
export RANDLIB=$TOOLCHAIN/bin/llvm-ranlib
export STRIP=$TOOLCHAIN/bin/llvm-strip
export PREFIX=$NDK/usr/local

View File

@@ -1,53 +0,0 @@
# Notes:
# - Minimal appveyor.yml file is an empty file. All sections are optional.
# - Indent each level of configuration with 2 spaces. Do not use tabs!
# - All section names are case-sensitive.
# - Section names should be unique on each level.
#---------------------------------#
# general configuration #
#---------------------------------#
# version format
#version: 0.10.{build}
# branches to build
branches:
# blacklist
except:
- gh-pages
# Do not build on tags (GitHub only)
skip_tags: true
#---------------------------------#
# environment configuration #
#---------------------------------#
os: Windows Server 2012
# scripts that run after cloning repository
install:
# install Win-Flex-Bison
#- cmd: cinst winflexbison -y
#---------------------------------#
# build configuration #
#---------------------------------#
# scripts to run before build
before_build:
- cmd: cmake .
# scripts to run *after* solution is built and *before* automatic packaging occurs (web apps, NuGet packages, Azure Cloud Services)
# before_package:
# scripts to run after build
# after_build:
# to run your custom scripts instead of automatic MSBuild
build_script:
- cmd: cmake --build .
# to disable automatic builds
# build: off

13
bpf/CMakeLists.txt Normal file
View File

@@ -0,0 +1,13 @@
if(LIBBPF_FOUND)
add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/reuseport_kern.o"
COMMAND ${CMAKE_C_COMPILER} ${BPFCFLAGS} ${EXTRABPFCFLAGS} -I${LIBBPF_INCLUDE_DIRS} -target bpf -c reuseport_kern.c -o "${CMAKE_CURRENT_BINARY_DIR}/reuseport_kern.o"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
VERBATIM)
add_custom_target(bpf ALL
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/reuseport_kern.o"
VERBATIM)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/reuseport_kern.o"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/${CMAKE_PROJECT_NAME}")
endif()

View File

@@ -1,6 +1,6 @@
# nghttp2 - HTTP/2 C Library # nghttp2 - HTTP/2 C Library
# Copyright (c) 2014 Tatsuhiro Tsujikawa # Copyright (c) 2021 Tatsuhiro Tsujikawa
# Permission is hereby granted, free of charge, to any person obtaining # Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the # a copy of this software and associated documentation files (the
@@ -21,9 +21,20 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
EXTRA_DIST = CMakeLists.txt EXTRA_DIST = CMakeLists.txt reuseport_kern.c
if ENABLE_ASIO_LIB if HAVE_LIBBPF
nobase_include_HEADERS = nghttp2/asio_http2.h nghttp2/asio_http2_client.h \
nghttp2/asio_http2_server.h bpf_pkglibdir = $(pkglibdir)
endif # ENABLE_ASIO_LIB bpf_pkglib_DATA = reuseport_kern.o
all: $(builddir)/reuseport_kern.o
$(builddir)/reuseport_kern.o: reuseport_kern.c
$(CC) @LIBBPF_CFLAGS@ @BPFCFLAGS@ @EXTRABPFCFLAGS@ \
-target bpf -c $< -o $@
clean-local:
-rm -f reuseport_kern.o
endif # HAVE_LIBBPF

581
bpf/reuseport_kern.c Normal file
View File

@@ -0,0 +1,581 @@
/*
* nghttp2 - HTTP/2 C Library
*
* Copyright (c) 2021 Tatsuhiro Tsujikawa
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include <linux/udp.h>
#include <linux/bpf.h>
#include <bpf/bpf_helpers.h>
/*
* How to compile:
*
* clang-12 -O2 -Wall -target bpf -g -c reuseport_kern.c -o reuseport_kern.o \
* -I/path/to/kernel/include
*
* See
* https://www.kernel.org/doc/Documentation/kbuild/headers_install.txt
* how to install kernel header files.
*/
/* AES_CBC_decrypt_buffer: https://github.com/kokke/tiny-AES-c
License is Public Domain. Commit hash:
12e7744b4919e9d55de75b7ab566326a1c8e7a67 */
#define AES_keyExpSize 176
struct AES_ctx {
__u8 RoundKey[AES_keyExpSize];
};
/* The number of columns comprising a state in AES. This is a constant
in AES. Value=4 */
#define Nb 4
#define Nr 10 /* The number of rounds in AES Cipher. */
/* state - array holding the intermediate results during
decryption. */
typedef __u8 state_t[4][4];
/* The lookup-tables are marked const so they can be placed in
read-only storage instead of RAM The numbers below can be computed
dynamically trading ROM for RAM - This can be useful in (embedded)
bootloader applications, where ROM is often limited. */
static const __u8 rsbox[256] = {
0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,
0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,
0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,
0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,
0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,
0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,
0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,
0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,
0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,
0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,
0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,
0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,
0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,
0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,
0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,
0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,
0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,
0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,
0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,
0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,
0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,
0x55, 0x21, 0x0c, 0x7d};
/* This function adds the round key to state. The round key is added
to the state by an XOR function. */
static void AddRoundKey(__u8 round, state_t *state, const __u8 *RoundKey) {
__u8 i, j;
for (i = 0; i < 4; ++i) {
for (j = 0; j < 4; ++j) {
(*state)[i][j] ^= RoundKey[(round * Nb * 4) + (i * Nb) + j];
}
}
}
static __u8 xtime(__u8 x) { return ((x << 1) ^ (((x >> 7) & 1) * 0x1b)); }
#define Multiply(x, y) \
(((y & 1) * x) ^ ((y >> 1 & 1) * xtime(x)) ^ \
((y >> 2 & 1) * xtime(xtime(x))) ^ \
((y >> 3 & 1) * xtime(xtime(xtime(x)))) ^ \
((y >> 4 & 1) * xtime(xtime(xtime(xtime(x))))))
#define getSBoxInvert(num) (rsbox[(num)])
/* MixColumns function mixes the columns of the state matrix. The
method used to multiply may be difficult to understand for the
inexperienced. Please use the references to gain more
information. */
static void InvMixColumns(state_t *state) {
int i;
__u8 a, b, c, d;
for (i = 0; i < 4; ++i) {
a = (*state)[i][0];
b = (*state)[i][1];
c = (*state)[i][2];
d = (*state)[i][3];
(*state)[i][0] = Multiply(a, 0x0e) ^ Multiply(b, 0x0b) ^ Multiply(c, 0x0d) ^
Multiply(d, 0x09);
(*state)[i][1] = Multiply(a, 0x09) ^ Multiply(b, 0x0e) ^ Multiply(c, 0x0b) ^
Multiply(d, 0x0d);
(*state)[i][2] = Multiply(a, 0x0d) ^ Multiply(b, 0x09) ^ Multiply(c, 0x0e) ^
Multiply(d, 0x0b);
(*state)[i][3] = Multiply(a, 0x0b) ^ Multiply(b, 0x0d) ^ Multiply(c, 0x09) ^
Multiply(d, 0x0e);
}
}
extern __u32 LINUX_KERNEL_VERSION __kconfig;
/* The SubBytes Function Substitutes the values in the state matrix
with values in an S-box. */
static void InvSubBytes(state_t *state) {
__u8 i, j;
if (LINUX_KERNEL_VERSION < KERNEL_VERSION(5, 10, 0)) {
for (i = 0; i < 4; ++i) {
for (j = 0; j < 4; ++j) {
/* Ubuntu 20.04 LTS kernel 5.4.0 needs this workaround
otherwise "math between map_value pointer and register with
unbounded min value is not allowed". 5.10.0 is a kernel
version that works but it might not be the minimum
version. */
__u8 k = (*state)[j][i];
(*state)[j][i] = k ? getSBoxInvert(k) : getSBoxInvert(0);
}
}
} else {
for (i = 0; i < 4; ++i) {
for (j = 0; j < 4; ++j) {
(*state)[j][i] = getSBoxInvert((*state)[j][i]);
}
}
}
}
static void InvShiftRows(state_t *state) {
__u8 temp;
/* Rotate first row 1 columns to right */
temp = (*state)[3][1];
(*state)[3][1] = (*state)[2][1];
(*state)[2][1] = (*state)[1][1];
(*state)[1][1] = (*state)[0][1];
(*state)[0][1] = temp;
/* Rotate second row 2 columns to right */
temp = (*state)[0][2];
(*state)[0][2] = (*state)[2][2];
(*state)[2][2] = temp;
temp = (*state)[1][2];
(*state)[1][2] = (*state)[3][2];
(*state)[3][2] = temp;
/* Rotate third row 3 columns to right */
temp = (*state)[0][3];
(*state)[0][3] = (*state)[1][3];
(*state)[1][3] = (*state)[2][3];
(*state)[2][3] = (*state)[3][3];
(*state)[3][3] = temp;
}
static void InvCipher(state_t *state, const __u8 *RoundKey) {
/* Add the First round key to the state before starting the
rounds. */
AddRoundKey(Nr, state, RoundKey);
/* There will be Nr rounds. The first Nr-1 rounds are identical.
These Nr rounds are executed in the loop below. Last one without
InvMixColumn() */
InvShiftRows(state);
InvSubBytes(state);
AddRoundKey(Nr - 1, state, RoundKey);
InvMixColumns(state);
InvShiftRows(state);
InvSubBytes(state);
AddRoundKey(Nr - 2, state, RoundKey);
InvMixColumns(state);
InvShiftRows(state);
InvSubBytes(state);
AddRoundKey(Nr - 3, state, RoundKey);
InvMixColumns(state);
InvShiftRows(state);
InvSubBytes(state);
AddRoundKey(Nr - 4, state, RoundKey);
InvMixColumns(state);
InvShiftRows(state);
InvSubBytes(state);
AddRoundKey(Nr - 5, state, RoundKey);
InvMixColumns(state);
InvShiftRows(state);
InvSubBytes(state);
AddRoundKey(Nr - 6, state, RoundKey);
InvMixColumns(state);
InvShiftRows(state);
InvSubBytes(state);
AddRoundKey(Nr - 7, state, RoundKey);
InvMixColumns(state);
InvShiftRows(state);
InvSubBytes(state);
AddRoundKey(Nr - 8, state, RoundKey);
InvMixColumns(state);
InvShiftRows(state);
InvSubBytes(state);
AddRoundKey(Nr - 9, state, RoundKey);
InvMixColumns(state);
InvShiftRows(state);
InvSubBytes(state);
AddRoundKey(Nr - 10, state, RoundKey);
}
static void AES_ECB_decrypt(const struct AES_ctx *ctx, __u8 *buf) {
/* The next function call decrypts the PlainText with the Key using
AES algorithm. */
InvCipher((state_t *)buf, ctx->RoundKey);
}
/* rol32: From linux kernel source code */
/**
* rol32 - rotate a 32-bit value left
* @word: value to rotate
* @shift: bits to roll
*/
static inline __u32 rol32(__u32 word, unsigned int shift) {
return (word << shift) | (word >> ((-shift) & 31));
}
/* jhash.h: Jenkins hash support.
*
* Copyright (C) 2006. Bob Jenkins (bob_jenkins@burtleburtle.net)
*
* https://burtleburtle.net/bob/hash/
*
* These are the credits from Bob's sources:
*
* lookup3.c, by Bob Jenkins, May 2006, Public Domain.
*
* These are functions for producing 32-bit hashes for hash table lookup.
* hashword(), hashlittle(), hashlittle2(), hashbig(), mix(), and final()
* are externally useful functions. Routines to test the hash are included
* if SELF_TEST is defined. You can use this free for any purpose. It's in
* the public domain. It has no warranty.
*
* Copyright (C) 2009-2010 Jozsef Kadlecsik (kadlec@blackhole.kfki.hu)
*
* I've modified Bob's hash to be useful in the Linux kernel, and
* any bugs present are my fault.
* Jozsef
*/
/* __jhash_final - final mixing of 3 32-bit values (a,b,c) into c */
#define __jhash_final(a, b, c) \
{ \
c ^= b; \
c -= rol32(b, 14); \
a ^= c; \
a -= rol32(c, 11); \
b ^= a; \
b -= rol32(a, 25); \
c ^= b; \
c -= rol32(b, 16); \
a ^= c; \
a -= rol32(c, 4); \
b ^= a; \
b -= rol32(a, 14); \
c ^= b; \
c -= rol32(b, 24); \
}
/* __jhash_nwords - hash exactly 3, 2 or 1 word(s) */
static inline __u32 __jhash_nwords(__u32 a, __u32 b, __u32 c, __u32 initval) {
a += initval;
b += initval;
c += initval;
__jhash_final(a, b, c);
return c;
}
/* An arbitrary initial parameter */
#define JHASH_INITVAL 0xdeadbeef
static inline __u32 jhash_2words(__u32 a, __u32 b, __u32 initval) {
return __jhash_nwords(a, b, 0, initval + JHASH_INITVAL + (2 << 2));
}
struct {
__uint(type, BPF_MAP_TYPE_HASH);
__uint(max_entries, 255);
__type(key, __u64);
__type(value, __u32);
} worker_id_map SEC(".maps");
struct {
__uint(type, BPF_MAP_TYPE_REUSEPORT_SOCKARRAY);
__uint(max_entries, 255);
__type(key, __u32);
__type(value, __u32);
} reuseport_array SEC(".maps");
struct {
__uint(type, BPF_MAP_TYPE_ARRAY);
__uint(max_entries, 1);
__type(key, __u32);
__type(value, __u64);
} sk_info SEC(".maps");
struct {
__uint(type, BPF_MAP_TYPE_ARRAY);
__uint(max_entries, 1);
__type(key, __u32);
__type(value, struct AES_ctx);
} aes_key SEC(".maps");
typedef struct quic_hd {
__u8 *dcid;
__u32 dcidlen;
__u32 dcid_offset;
__u8 type;
} quic_hd;
#define SV_DCIDLEN 17
#define MAX_DCIDLEN 20
#define MIN_DCIDLEN 8
#define WORKER_IDLEN 8
#define WORKER_ID_OFFSET 1
enum {
NGTCP2_PKT_INITIAL = 0x0,
NGTCP2_PKT_0RTT = 0x1,
NGTCP2_PKT_HANDSHAKE = 0x2,
NGTCP2_PKT_SHORT = 0x40,
};
static inline int parse_quic(quic_hd *qhd, __u8 *data, __u8 *data_end) {
__u8 *p;
__u64 dcidlen;
if (*data & 0x80) {
p = data + 1 + 4;
/* Do not check the actual DCID length because we might not buffer
entire DCID here. */
dcidlen = *p;
if (dcidlen > MAX_DCIDLEN || dcidlen < MIN_DCIDLEN) {
return -1;
}
++p;
qhd->type = (*data & 0x30) >> 4;
qhd->dcid = p;
qhd->dcidlen = dcidlen;
qhd->dcid_offset = 6;
} else {
qhd->type = NGTCP2_PKT_SHORT;
qhd->dcid = data + 1;
qhd->dcidlen = SV_DCIDLEN;
qhd->dcid_offset = 1;
}
return 0;
}
static __u32 hash(const __u8 *data, __u32 datalen, __u32 initval) {
__u32 a, b;
a = (data[0] << 24) | (data[1] << 16) | (data[2] << 8) | data[3];
b = (data[4] << 24) | (data[5] << 16) | (data[6] << 8) | data[7];
return jhash_2words(a, b, initval);
}
static __u32 sk_index_from_dcid(const quic_hd *qhd,
const struct sk_reuseport_md *reuse_md,
__u64 num_socks) {
__u32 len = qhd->dcidlen;
__u32 h = reuse_md->hash;
__u8 hbuf[8];
if (len > 16) {
__builtin_memset(hbuf, 0, sizeof(hbuf));
switch (len) {
case 20:
__builtin_memcpy(hbuf, qhd->dcid + 16, 4);
break;
case 19:
__builtin_memcpy(hbuf, qhd->dcid + 16, 3);
break;
case 18:
__builtin_memcpy(hbuf, qhd->dcid + 16, 2);
break;
case 17:
__builtin_memcpy(hbuf, qhd->dcid + 16, 1);
break;
}
h = hash(hbuf, sizeof(hbuf), h);
len = 16;
}
if (len > 8) {
__builtin_memset(hbuf, 0, sizeof(hbuf));
switch (len) {
case 16:
__builtin_memcpy(hbuf, qhd->dcid + 8, 8);
break;
case 15:
__builtin_memcpy(hbuf, qhd->dcid + 8, 7);
break;
case 14:
__builtin_memcpy(hbuf, qhd->dcid + 8, 6);
break;
case 13:
__builtin_memcpy(hbuf, qhd->dcid + 8, 5);
break;
case 12:
__builtin_memcpy(hbuf, qhd->dcid + 8, 4);
break;
case 11:
__builtin_memcpy(hbuf, qhd->dcid + 8, 3);
break;
case 10:
__builtin_memcpy(hbuf, qhd->dcid + 8, 2);
break;
case 9:
__builtin_memcpy(hbuf, qhd->dcid + 8, 1);
break;
}
h = hash(hbuf, sizeof(hbuf), h);
len = 8;
}
return hash(qhd->dcid, len, h) % num_socks;
}
SEC("sk_reuseport")
int select_reuseport(struct sk_reuseport_md *reuse_md) {
__u32 sk_index, *psk_index;
__u64 *pnum_socks;
__u32 zero = 0;
int rv;
quic_hd qhd;
__u8 qpktbuf[6 + MAX_DCIDLEN];
struct AES_ctx *aes_ctx;
__u8 *worker_id;
__u16 remote_port;
__u8 *data = reuse_md->data;
/* Packets less than 22 bytes never be a valid QUIC packet. */
if (reuse_md->len < sizeof(struct udphdr) + 22) {
return SK_DROP;
}
if (reuse_md->data + sizeof(struct udphdr) > reuse_md->data_end) {
return SK_DROP;
}
remote_port = (data[0] << 8) + data[1];
switch (remote_port) {
case 1900:
case 5353:
case 11211:
case 20800:
case 27015:
return SK_DROP;
default:
if (remote_port < 1024) {
return SK_DROP;
}
}
if (bpf_skb_load_bytes(reuse_md, sizeof(struct udphdr), qpktbuf,
sizeof(qpktbuf)) != 0) {
return SK_DROP;
}
pnum_socks = bpf_map_lookup_elem(&sk_info, &zero);
if (pnum_socks == NULL) {
return SK_DROP;
}
aes_ctx = bpf_map_lookup_elem(&aes_key, &zero);
if (aes_ctx == NULL) {
return SK_DROP;
}
rv = parse_quic(&qhd, qpktbuf, qpktbuf + sizeof(qpktbuf));
if (rv != 0) {
return SK_DROP;
}
switch (qhd.type) {
case NGTCP2_PKT_INITIAL:
case NGTCP2_PKT_0RTT:
if (qhd.dcidlen == SV_DCIDLEN) {
worker_id = qhd.dcid + WORKER_ID_OFFSET;
AES_ECB_decrypt(aes_ctx, worker_id);
psk_index = bpf_map_lookup_elem(&worker_id_map, worker_id);
if (psk_index != NULL) {
sk_index = *psk_index;
break;
}
}
sk_index = sk_index_from_dcid(&qhd, reuse_md, *pnum_socks);
break;
case NGTCP2_PKT_HANDSHAKE:
case NGTCP2_PKT_SHORT:
if (qhd.dcidlen != SV_DCIDLEN) {
return SK_DROP;
}
worker_id = qhd.dcid + WORKER_ID_OFFSET;
AES_ECB_decrypt(aes_ctx, worker_id);
psk_index = bpf_map_lookup_elem(&worker_id_map, worker_id);
if (psk_index == NULL) {
sk_index = sk_index_from_dcid(&qhd, reuse_md, *pnum_socks);
break;
}
sk_index = *psk_index;
break;
default:
return SK_DROP;
}
rv = bpf_sk_select_reuseport(reuse_md, &reuseport_array, &sk_index, 0);
if (rv != 0) {
return SK_DROP;
}
return SK_PASS;
}

View File

@@ -1,40 +0,0 @@
# - Try to find cunit
# Once done this will define
# CUNIT_FOUND - System has cunit
# CUNIT_INCLUDE_DIRS - The cunit include directories
# CUNIT_LIBRARIES - The libraries needed to use cunit
find_package(PkgConfig QUIET)
pkg_check_modules(PC_CUNIT QUIET cunit)
find_path(CUNIT_INCLUDE_DIR
NAMES CUnit/CUnit.h
HINTS ${PC_CUNIT_INCLUDE_DIRS}
)
find_library(CUNIT_LIBRARY
NAMES cunit
HINTS ${PC_CUNIT_LIBRARY_DIRS}
)
if(CUNIT_INCLUDE_DIR)
set(_version_regex "^#define[ \t]+CU_VERSION[ \t]+\"([^\"]+)\".*")
file(STRINGS "${CUNIT_INCLUDE_DIR}/CUnit/CUnit.h"
CUNIT_VERSION REGEX "${_version_regex}")
string(REGEX REPLACE "${_version_regex}" "\\1"
CUNIT_VERSION "${CUNIT_VERSION}")
unset(_version_regex)
endif()
include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set CUNIT_FOUND to TRUE
# if all listed variables are TRUE and the requested version matches.
find_package_handle_standard_args(CUnit REQUIRED_VARS
CUNIT_LIBRARY CUNIT_INCLUDE_DIR
VERSION_VAR CUNIT_VERSION)
if(CUNIT_FOUND)
set(CUNIT_LIBRARIES ${CUNIT_LIBRARY})
set(CUNIT_INCLUDE_DIRS ${CUNIT_INCLUDE_DIR})
endif()
mark_as_advanced(CUNIT_INCLUDE_DIR CUNIT_LIBRARY)

View File

@@ -1,44 +0,0 @@
# Find the Cython compiler.
#
# This code sets the following variables:
#
# CYTHON_EXECUTABLE
#
# See also UseCython.cmake
#=============================================================================
# Copyright 2011 Kitware, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#=============================================================================
# Use the Cython executable that lives next to the Python executable
# if it is a local installation.
find_package( PythonInterp )
if( PYTHONINTERP_FOUND )
get_filename_component( _python_path ${PYTHON_EXECUTABLE} PATH )
find_program( CYTHON_EXECUTABLE
NAMES cython cython.bat cython3
HINTS ${_python_path}
)
else()
find_program( CYTHON_EXECUTABLE
NAMES cython cython.bat cython3
)
endif()
include( FindPackageHandleStandardArgs )
FIND_PACKAGE_HANDLE_STANDARD_ARGS( Cython REQUIRED_VARS CYTHON_EXECUTABLE )
mark_as_advanced( CYTHON_EXECUTABLE )

32
cmake/FindLibbpf.cmake Normal file
View File

@@ -0,0 +1,32 @@
# - Try to find libbpf
# Once done this will define
# LIBBPF_FOUND - System has libbpf
# LIBBPF_INCLUDE_DIRS - The libbpf include directories
# LIBBPF_LIBRARIES - The libraries needed to use libbpf
find_package(PkgConfig QUIET)
pkg_check_modules(PC_LIBBPF QUIET libbpf)
find_path(LIBBPF_INCLUDE_DIR
NAMES bpf/bpf.h
HINTS ${PC_LIBBPF_INCLUDE_DIRS}
)
find_library(LIBBPF_LIBRARY
NAMES bpf
HINTS ${PC_LIBBPF_LIBRARY_DIRS}
)
include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LIBBPF_FOUND
# to TRUE if all listed variables are TRUE and the requested version
# matches.
find_package_handle_standard_args(Libbpf REQUIRED_VARS
LIBBPF_LIBRARY LIBBPF_INCLUDE_DIR
VERSION_VAR LIBBPF_VERSION)
if(LIBBPF_FOUND)
set(LIBBPF_LIBRARIES ${LIBBPF_LIBRARY})
set(LIBBPF_INCLUDE_DIRS ${LIBBPF_INCLUDE_DIR})
endif()
mark_as_advanced(LIBBPF_INCLUDE_DIR LIBBPF_LIBRARY)

View File

@@ -0,0 +1,36 @@
# - Try to find libbrotlidec
# Once done this will define
# LIBBROTLIDEC_FOUND - System has libbrotlidec
# LIBBROTLIDEC_INCLUDE_DIRS - The libbrotlidec include directories
# LIBBROTLIDEC_LIBRARIES - The libraries needed to use libbrotlidec
find_package(PkgConfig QUIET)
pkg_check_modules(PC_LIBBROTLIDEC QUIET libbrotlidec)
find_path(LIBBROTLIDEC_INCLUDE_DIR
NAMES brotli/decode.h
HINTS ${PC_LIBBROTLIDEC_INCLUDE_DIRS}
)
find_library(LIBBROTLIDEC_LIBRARY
NAMES brotlidec
HINTS ${PC_LIBBROTLIDEC_LIBRARY_DIRS}
)
if(PC_LIBBROTLIDEC_FOUND)
set(LIBBROTLIDEC_VERSION ${PC_LIBBROTLIDEC_VERSION})
endif()
include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LIBBROTLIDEC_FOUND
# to TRUE if all listed variables are TRUE and the requested version
# matches.
find_package_handle_standard_args(Libbrotlidec REQUIRED_VARS
LIBBROTLIDEC_LIBRARY LIBBROTLIDEC_INCLUDE_DIR
VERSION_VAR LIBBROTLIDEC_VERSION)
if(LIBBROTLIDEC_FOUND)
set(LIBBROTLIDEC_LIBRARIES ${LIBBROTLIDEC_LIBRARY})
set(LIBBROTLIDEC_INCLUDE_DIRS ${LIBBROTLIDEC_INCLUDE_DIR})
endif()
mark_as_advanced(LIBBROTLIDEC_INCLUDE_DIR LIBBROTLIDEC_LIBRARY)

View File

@@ -0,0 +1,36 @@
# - Try to find libbrotlienc
# Once done this will define
# LIBBROTLIENC_FOUND - System has libbrotlienc
# LIBBROTLIENC_INCLUDE_DIRS - The libbrotlienc include directories
# LIBBROTLIENC_LIBRARIES - The libraries needed to use libbrotlienc
find_package(PkgConfig QUIET)
pkg_check_modules(PC_LIBBROTLIENC QUIET libbrotlienc)
find_path(LIBBROTLIENC_INCLUDE_DIR
NAMES brotli/encode.h
HINTS ${PC_LIBBROTLIENC_INCLUDE_DIRS}
)
find_library(LIBBROTLIENC_LIBRARY
NAMES brotlienc
HINTS ${PC_LIBBROTLIENC_LIBRARY_DIRS}
)
if(PC_LIBBROTLIENC_FOUND)
set(LIBBROTLIENC_VERSION ${PC_LIBBROTLIENC_VERSION})
endif()
include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LIBBROTLIENC_FOUND
# to TRUE if all listed variables are TRUE and the requested version
# matches.
find_package_handle_standard_args(Libbrotlienc REQUIRED_VARS
LIBBROTLIENC_LIBRARY LIBBROTLIENC_INCLUDE_DIR
VERSION_VAR LIBBROTLIENC_VERSION)
if(LIBBROTLIENC_FOUND)
set(LIBBROTLIENC_LIBRARIES ${LIBBROTLIENC_LIBRARY})
set(LIBBROTLIENC_INCLUDE_DIRS ${LIBBROTLIENC_INCLUDE_DIR})
endif()
mark_as_advanced(LIBBROTLIENC_INCLUDE_DIR LIBBROTLIENC_LIBRARY)

View File

@@ -0,0 +1,41 @@
# - Try to find libnghttp3
# Once done this will define
# LIBNGHTTP3_FOUND - System has libnghttp3
# LIBNGHTTP3_INCLUDE_DIRS - The libnghttp3 include directories
# LIBNGHTTP3_LIBRARIES - The libraries needed to use libnghttp3
find_package(PkgConfig QUIET)
pkg_check_modules(PC_LIBNGHTTP3 QUIET libnghttp3)
find_path(LIBNGHTTP3_INCLUDE_DIR
NAMES nghttp3/nghttp3.h
HINTS ${PC_LIBNGHTTP3_INCLUDE_DIRS}
)
find_library(LIBNGHTTP3_LIBRARY
NAMES nghttp3
HINTS ${PC_LIBNGHTTP3_LIBRARY_DIRS}
)
if(LIBNGHTTP3_INCLUDE_DIR)
set(_version_regex "^#define[ \t]+NGHTTP3_VERSION[ \t]+\"([^\"]+)\".*")
file(STRINGS "${LIBNGHTTP3_INCLUDE_DIR}/nghttp3/version.h"
LIBNGHTTP3_VERSION REGEX "${_version_regex}")
string(REGEX REPLACE "${_version_regex}" "\\1"
LIBNGHTTP3_VERSION "${LIBNGHTTP3_VERSION}")
unset(_version_regex)
endif()
include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LIBNGHTTP3_FOUND
# to TRUE if all listed variables are TRUE and the requested version
# matches.
find_package_handle_standard_args(Libnghttp3 REQUIRED_VARS
LIBNGHTTP3_LIBRARY LIBNGHTTP3_INCLUDE_DIR
VERSION_VAR LIBNGHTTP3_VERSION)
if(LIBNGHTTP3_FOUND)
set(LIBNGHTTP3_LIBRARIES ${LIBNGHTTP3_LIBRARY})
set(LIBNGHTTP3_INCLUDE_DIRS ${LIBNGHTTP3_INCLUDE_DIR})
endif()
mark_as_advanced(LIBNGHTTP3_INCLUDE_DIR LIBNGHTTP3_LIBRARY)

41
cmake/FindLibngtcp2.cmake Normal file
View File

@@ -0,0 +1,41 @@
# - Try to find libngtcp2
# Once done this will define
# LIBNGTCP2_FOUND - System has libngtcp2
# LIBNGTCP2_INCLUDE_DIRS - The libngtcp2 include directories
# LIBNGTCP2_LIBRARIES - The libraries needed to use libngtcp2
find_package(PkgConfig QUIET)
pkg_check_modules(PC_LIBNGTCP2 QUIET libngtcp2)
find_path(LIBNGTCP2_INCLUDE_DIR
NAMES ngtcp2/ngtcp2.h
HINTS ${PC_LIBNGTCP2_INCLUDE_DIRS}
)
find_library(LIBNGTCP2_LIBRARY
NAMES ngtcp2
HINTS ${PC_LIBNGTCP2_LIBRARY_DIRS}
)
if(LIBNGTCP2_INCLUDE_DIR)
set(_version_regex "^#define[ \t]+NGTCP2_VERSION[ \t]+\"([^\"]+)\".*")
file(STRINGS "${LIBNGTCP2_INCLUDE_DIR}/ngtcp2/version.h"
LIBNGTCP2_VERSION REGEX "${_version_regex}")
string(REGEX REPLACE "${_version_regex}" "\\1"
LIBNGTCP2_VERSION "${LIBNGTCP2_VERSION}")
unset(_version_regex)
endif()
include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LIBNGTCP2_FOUND
# to TRUE if all listed variables are TRUE and the requested version
# matches.
find_package_handle_standard_args(Libngtcp2 REQUIRED_VARS
LIBNGTCP2_LIBRARY LIBNGTCP2_INCLUDE_DIR
VERSION_VAR LIBNGTCP2_VERSION)
if(LIBNGTCP2_FOUND)
set(LIBNGTCP2_LIBRARIES ${LIBNGTCP2_LIBRARY})
set(LIBNGTCP2_INCLUDE_DIRS ${LIBNGTCP2_INCLUDE_DIR})
endif()
mark_as_advanced(LIBNGTCP2_INCLUDE_DIR LIBNGTCP2_LIBRARY)

View File

@@ -0,0 +1,43 @@
# - Try to find libngtcp2_crypto_quictls
# Once done this will define
# LIBNGTCP2_CRYPTO_QUICTLS_FOUND - System has libngtcp2_crypto_quictls
# LIBNGTCP2_CRYPTO_QUICTLS_INCLUDE_DIRS - The libngtcp2_crypto_quictls include directories
# LIBNGTCP2_CRYPTO_QUICTLS_LIBRARIES - The libraries needed to use libngtcp2_crypto_quictls
find_package(PkgConfig QUIET)
pkg_check_modules(PC_LIBNGTCP2_CRYPTO_QUICTLS QUIET libngtcp2_crypto_quictls)
find_path(LIBNGTCP2_CRYPTO_QUICTLS_INCLUDE_DIR
NAMES ngtcp2/ngtcp2_crypto_quictls.h
HINTS ${PC_LIBNGTCP2_CRYPTO_QUICTLS_INCLUDE_DIRS}
)
find_library(LIBNGTCP2_CRYPTO_QUICTLS_LIBRARY
NAMES ngtcp2_crypto_quictls
HINTS ${PC_LIBNGTCP2_CRYPTO_QUICTLS_LIBRARY_DIRS}
)
if(LIBNGTCP2_CRYPTO_QUICTLS_INCLUDE_DIR)
set(_version_regex "^#define[ \t]+NGTCP2_VERSION[ \t]+\"([^\"]+)\".*")
file(STRINGS "${LIBNGTCP2_CRYPTO_QUICTLS_INCLUDE_DIR}/ngtcp2/version.h"
LIBNGTCP2_CRYPTO_QUICTLS_VERSION REGEX "${_version_regex}")
string(REGEX REPLACE "${_version_regex}" "\\1"
LIBNGTCP2_CRYPTO_QUICTLS_VERSION "${LIBNGTCP2_CRYPTO_QUICTLS_VERSION}")
unset(_version_regex)
endif()
include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set
# LIBNGTCP2_CRYPTO_QUICTLS_FOUND to TRUE if all listed variables are
# TRUE and the requested version matches.
find_package_handle_standard_args(Libngtcp2_crypto_quictls REQUIRED_VARS
LIBNGTCP2_CRYPTO_QUICTLS_LIBRARY
LIBNGTCP2_CRYPTO_QUICTLS_INCLUDE_DIR
VERSION_VAR LIBNGTCP2_CRYPTO_QUICTLS_VERSION)
if(LIBNGTCP2_CRYPTO_QUICTLS_FOUND)
set(LIBNGTCP2_CRYPTO_QUICTLS_LIBRARIES ${LIBNGTCP2_CRYPTO_QUICTLS_LIBRARY})
set(LIBNGTCP2_CRYPTO_QUICTLS_INCLUDE_DIRS ${LIBNGTCP2_CRYPTO_QUICTLS_INCLUDE_DIR})
endif()
mark_as_advanced(LIBNGTCP2_CRYPTO_QUICTLS_INCLUDE_DIR
LIBNGTCP2_CRYPTO_QUICTLS_LIBRARY)

View File

@@ -15,5 +15,5 @@ find_library(SYSTEMD_LIBRARIES NAMES systemd ${PC_SYSTEMD_LIBRARY_DIRS})
find_path(SYSTEMD_INCLUDE_DIRS systemd/sd-login.h HINTS ${PC_SYSTEMD_INCLUDE_DIRS}) find_path(SYSTEMD_INCLUDE_DIRS systemd/sd-login.h HINTS ${PC_SYSTEMD_INCLUDE_DIRS})
include(FindPackageHandleStandardArgs) include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(SYSTEMD DEFAULT_MSG SYSTEMD_INCLUDE_DIRS SYSTEMD_LIBRARIES) find_package_handle_standard_args(Systemd DEFAULT_MSG SYSTEMD_INCLUDE_DIRS SYSTEMD_LIBRARIES)
mark_as_advanced(SYSTEMD_INCLUDE_DIRS SYSTEMD_LIBRARIES) mark_as_advanced(SYSTEMD_INCLUDE_DIRS SYSTEMD_LIBRARIES)

162
cmake/PickyWarningsC.cmake Normal file
View File

@@ -0,0 +1,162 @@
# nghttp2
#
# Copyright (c) 2023 nghttp2 contributors
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# C
include(CheckCCompilerFlag)
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX OR CMAKE_C_COMPILER_ID MATCHES "Clang")
# https://clang.llvm.org/docs/DiagnosticsReference.html
# https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
# WPICKY_ENABLE = Options we want to enable as-is.
# WPICKY_DETECT = Options we want to test first and enable if available.
# Prefer the -Wextra alias with clang.
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
set(WPICKY_ENABLE "-Wextra")
else()
set(WPICKY_ENABLE "-W")
endif()
list(APPEND WPICKY_ENABLE
-Wall
)
# ----------------------------------
# Add new options here, if in doubt:
# ----------------------------------
set(WPICKY_DETECT
)
# Assume these options always exist with both clang and gcc.
# Require clang 3.0 / gcc 2.95 or later.
list(APPEND WPICKY_ENABLE
-Wconversion # clang 3.0 gcc 2.95
-Winline # clang 1.0 gcc 1.0
-Wmissing-declarations # clang 1.0 gcc 2.7
-Wmissing-prototypes # clang 1.0 gcc 1.0
-Wnested-externs # clang 1.0 gcc 2.7
-Wpointer-arith # clang 1.0 gcc 1.4
-Wshadow # clang 1.0 gcc 2.95
-Wundef # clang 1.0 gcc 2.95
-Wwrite-strings # clang 1.0 gcc 1.4
)
# Always enable with clang, version dependent with gcc
set(WPICKY_COMMON_OLD
-Waddress # clang 3.0 gcc 4.3
-Wattributes # clang 3.0 gcc 4.1
-Wcast-align # clang 1.0 gcc 4.2
-Wdeclaration-after-statement # clang 1.0 gcc 3.4
-Wdiv-by-zero # clang 3.0 gcc 4.1
-Wempty-body # clang 3.0 gcc 4.3
-Wendif-labels # clang 1.0 gcc 3.3
-Wfloat-equal # clang 1.0 gcc 2.96 (3.0)
-Wformat-nonliteral # clang 3.0 gcc 4.1
-Wformat-security # clang 3.0 gcc 4.1
-Wmissing-field-initializers # clang 3.0 gcc 4.1
-Wmissing-noreturn # clang 3.0 gcc 4.1
-Wno-format-nonliteral # clang 1.0 gcc 2.96 (3.0) # This is required because we pass format string as "const char*"
# -Wpadded # clang 3.0 gcc 4.1 # Not used because we cannot change public structs
-Wredundant-decls # clang 3.0 gcc 4.1
-Wsign-conversion # clang 3.0 gcc 4.3
-Wstrict-prototypes # clang 1.0 gcc 3.3
# -Wswitch-enum # clang 3.0 gcc 4.1 # Not used because this basically disallows default case
-Wunreachable-code # clang 3.0 gcc 4.1
-Wunused-parameter # clang 3.0 gcc 4.1
-Wvla # clang 2.8 gcc 4.3
)
set(WPICKY_COMMON
-Wpragmas # clang 3.5 gcc 4.1 appleclang 6.0
)
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
list(APPEND WPICKY_ENABLE
${WPICKY_COMMON_OLD}
-Wshorten-64-to-32 # clang 1.0
-Wlanguage-extension-token # clang 3.0
)
# Enable based on compiler version
if((CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.6) OR
(CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 6.3))
list(APPEND WPICKY_ENABLE
${WPICKY_COMMON}
-Wunreachable-code-break # clang 3.5 appleclang 6.0
-Wheader-guard # clang 3.4 appleclang 5.1
)
endif()
if((CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.9) OR
(CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 8.3))
list(APPEND WPICKY_ENABLE
-Wmissing-variable-declarations # clang 3.2 appleclang 4.6
)
endif()
if((CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 5.0) OR
(CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 9.4))
list(APPEND WPICKY_ENABLE
)
endif()
if((CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 7.0) OR
(CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 10.3))
list(APPEND WPICKY_ENABLE
)
endif()
else() # gcc
list(APPEND WPICKY_DETECT
${WPICKY_COMMON}
)
# Enable based on compiler version
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.3)
list(APPEND WPICKY_ENABLE
${WPICKY_COMMON_OLD}
-Wclobbered # gcc 4.3
)
endif()
endif()
#
unset(_wpicky)
foreach(_CCOPT IN LISTS WPICKY_ENABLE)
set(_wpicky "${_wpicky} ${_CCOPT}")
endforeach()
foreach(_CCOPT IN LISTS WPICKY_DETECT)
# surprisingly, CHECK_C_COMPILER_FLAG needs a new variable to store each new
# test result in.
string(MAKE_C_IDENTIFIER "OPT${_CCOPT}" _optvarname)
# GCC only warns about unknown -Wno- options if there are also other diagnostic messages,
# so test for the positive form instead
string(REPLACE "-Wno-" "-W" _CCOPT_ON "${_CCOPT}")
check_c_compiler_flag(${_CCOPT_ON} ${_optvarname})
if(${_optvarname})
set(_wpicky "${_wpicky} ${_CCOPT}")
endif()
endforeach()
set(WARNCFLAGS "${WARNCFLAGS} ${_wpicky}")
endif()

View File

@@ -0,0 +1,117 @@
# nghttp2
#
# Copyright (c) 2023 nghttp2 contributors
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# C++
include(CheckCXXCompilerFlag)
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
# https://clang.llvm.org/docs/DiagnosticsReference.html
# https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
# WPICKY_ENABLE = Options we want to enable as-is.
# WPICKY_DETECT = Options we want to test first and enable if available.
set(WPICKY_ENABLE "-Wall")
# ----------------------------------
# Add new options here, if in doubt:
# ----------------------------------
set(WPICKY_DETECT
)
# Assume these options always exist with both clang and gcc.
# Require clang 3.0 / gcc 2.95 or later.
list(APPEND WPICKY_ENABLE
)
# Always enable with clang, version dependent with gcc
set(WPICKY_COMMON_OLD
-Wformat-security # clang 3.0 gcc 4.1
)
set(WPICKY_COMMON
)
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
list(APPEND WPICKY_ENABLE
${WPICKY_COMMON_OLD}
)
# Enable based on compiler version
if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.6) OR
(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6.3))
list(APPEND WPICKY_ENABLE
${WPICKY_COMMON}
)
endif()
if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.9) OR
(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.3))
list(APPEND WPICKY_ENABLE
)
endif()
if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0) OR
(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.4))
list(APPEND WPICKY_ENABLE
)
endif()
if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0) OR
(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 10.3))
list(APPEND WPICKY_ENABLE
)
endif()
else() # gcc
list(APPEND WPICKY_DETECT
${WPICKY_COMMON}
)
# Enable based on compiler version
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.3)
list(APPEND WPICKY_ENABLE
${WPICKY_COMMON_OLD}
)
endif()
endif()
#
unset(_wpicky)
foreach(_CCOPT IN LISTS WPICKY_ENABLE)
set(_wpicky "${_wpicky} ${_CCOPT}")
endforeach()
foreach(_CCOPT IN LISTS WPICKY_DETECT)
# surprisingly, CHECK_CXX_COMPILER_FLAG needs a new variable to store each new
# test result in.
string(MAKE_C_IDENTIFIER "OPT${_CCOPT}" _optvarname)
# GCC only warns about unknown -Wno- options if there are also other diagnostic messages,
# so test for the positive form instead
string(REPLACE "-Wno-" "-W" _CCOPT_ON "${_CCOPT}")
check_cxx_compiler_flag(${_CCOPT_ON} ${_optvarname})
if(${_optvarname})
set(_wpicky "${_wpicky} ${_CCOPT}")
endif()
endforeach()
set(WARNCXXFLAGS "${WARNCXXFLAGS} ${_wpicky}")
endif()

View File

@@ -19,24 +19,27 @@
/* Define to 1 if you have `neverbleed` library. */ /* Define to 1 if you have `neverbleed` library. */
#cmakedefine HAVE_NEVERBLEED 1 #cmakedefine HAVE_NEVERBLEED 1
/* sizeof(int *) */
#cmakedefine SIZEOF_INT_P @SIZEOF_INT_P@
/* sizeof(time_t) */
#cmakedefine SIZEOF_TIME_T @SIZEOF_TIME_T@
/* Define to 1 if you have the `_Exit` function. */ /* Define to 1 if you have the `_Exit` function. */
#cmakedefine HAVE__EXIT 1 #cmakedefine HAVE__EXIT 1
/* Define to 1 if you have the `accept4` function. */ /* Define to 1 if you have the `accept4` function. */
#cmakedefine HAVE_ACCEPT4 1 #cmakedefine HAVE_ACCEPT4 1
/* Define to 1 if you have the `clock_gettime` function. */
#cmakedefine HAVE_CLOCK_GETTIME 1
/* Define to 1 if you have the `mkostemp` function. */ /* Define to 1 if you have the `mkostemp` function. */
#cmakedefine HAVE_MKOSTEMP 1 #cmakedefine HAVE_MKOSTEMP 1
/* Define to 1 if you have the `GetTickCount64` function. */
#cmakedefine HAVE_GETTICKCOUNT64 1
/* Define to 1 if you have the `initgroups` function. */ /* Define to 1 if you have the `initgroups` function. */
#cmakedefine01 HAVE_DECL_INITGROUPS #cmakedefine01 HAVE_DECL_INITGROUPS
/* Define to 1 if you have the `CLOCK_MONOTONIC` defined. */
#cmakedefine01 HAVE_DECL_CLOCK_MONOTONIC
/* Define to 1 to enable debug output. */ /* Define to 1 to enable debug output. */
#cmakedefine DEBUGBUILD 1 #cmakedefine DEBUGBUILD 1
@@ -61,6 +64,9 @@
/* Define to 1 if you have the <netinet/in.h> header file. */ /* Define to 1 if you have the <netinet/in.h> header file. */
#cmakedefine HAVE_NETINET_IN_H 1 #cmakedefine HAVE_NETINET_IN_H 1
/* Define to 1 if you have the <netinet/ip.h> header file. */
#cmakedefine HAVE_NETINET_IP_H 1
/* Define to 1 if you have the <pwd.h> header file. */ /* Define to 1 if you have the <pwd.h> header file. */
#cmakedefine HAVE_PWD_H 1 #cmakedefine HAVE_PWD_H 1
@@ -73,8 +79,26 @@
/* Define to 1 if you have the <syslog.h> header file. */ /* Define to 1 if you have the <syslog.h> header file. */
#cmakedefine HAVE_SYSLOG_H 1 #cmakedefine HAVE_SYSLOG_H 1
/* Define to 1 if you have the <time.h> header file. */
#cmakedefine HAVE_TIME_H 1
/* Define to 1 if you have the <unistd.h> header file. */ /* Define to 1 if you have the <unistd.h> header file. */
#cmakedefine HAVE_UNISTD_H 1 #cmakedefine HAVE_UNISTD_H 1
/* Define to 1 if you have the <windows.h> header file. */
#cmakedefine HAVE_WINDOWS_H 1
/* Define to 1 if HTTP/3 is enabled. */
#cmakedefine ENABLE_HTTP3 1
/* Define to 1 if you have `libbpf` library. */
#cmakedefine HAVE_LIBBPF 1
/* Define to 1 if you have enum bpf_stats_type in linux/bpf.h. */
#cmakedefine HAVE_BPF_STATS_TYPE 1
/* Define to 1 if you have `libngtcp2_crypto_quictls` library. */
#cmakedefine HAVE_LIBNGTCP2_CRYPTO_QUICTLS
/* Define to 1 if you have `libev` library. */
#cmakedefine HAVE_LIBEV 1
/* Define to 1 if you have `libbrotlienc` and `libbrotlidec` libraries. */
#cmakedefine HAVE_LIBBROTLI 1

View File

@@ -22,10 +22,10 @@ dnl OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
dnl WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. dnl WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
dnl Do not change user variables! dnl Do not change user variables!
dnl http://www.gnu.org/software/automake/manual/html_node/Flag-Variables-Ordering.html dnl https://www.gnu.org/software/automake/manual/html_node/Flag-Variables-Ordering.html
AC_PREREQ(2.61) AC_PREREQ(2.61)
AC_INIT([nghttp2], [1.45.0-DEV], [t-tujikawa@users.sourceforge.net]) AC_INIT([nghttp2], [1.62.1], [t-tujikawa@users.sourceforge.net])
AC_CONFIG_AUX_DIR([.]) AC_CONFIG_AUX_DIR([.])
AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([config.h]) AC_CONFIG_HEADERS([config.h])
@@ -38,15 +38,15 @@ AC_CANONICAL_BUILD
AC_CANONICAL_HOST AC_CANONICAL_HOST
AC_CANONICAL_TARGET AC_CANONICAL_TARGET
AM_INIT_AUTOMAKE([subdir-objects]) AM_INIT_AUTOMAKE([subdir-objects tar-pax])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
dnl See versioning rule: dnl See versioning rule:
dnl http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html dnl https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
AC_SUBST(LT_CURRENT, 34) AC_SUBST(LT_CURRENT, 42)
AC_SUBST(LT_REVISION, 2) AC_SUBST(LT_REVISION, 1)
AC_SUBST(LT_AGE, 20) AC_SUBST(LT_AGE, 28)
major=`echo $PACKAGE_VERSION |cut -d. -f1 | sed -e "s/[^0-9]//g"` major=`echo $PACKAGE_VERSION |cut -d. -f1 | sed -e "s/[^0-9]//g"`
minor=`echo $PACKAGE_VERSION |cut -d. -f2 | sed -e "s/[^0-9]//g"` minor=`echo $PACKAGE_VERSION |cut -d. -f2 | sed -e "s/[^0-9]//g"`
@@ -82,21 +82,11 @@ AC_ARG_ENABLE([hpack-tools],
[Build HPACK tools [default=check]])], [Build HPACK tools [default=check]])],
[request_hpack_tools=$enableval], [request_hpack_tools=check]) [request_hpack_tools=$enableval], [request_hpack_tools=check])
AC_ARG_ENABLE([asio-lib],
[AS_HELP_STRING([--enable-asio-lib],
[Build C++ libnghttp2_asio library [default=no]])],
[request_asio_lib=$enableval], [request_asio_lib=no])
AC_ARG_ENABLE([examples], AC_ARG_ENABLE([examples],
[AS_HELP_STRING([--enable-examples], [AS_HELP_STRING([--enable-examples],
[Build examples [default=check]])], [Build examples [default=check]])],
[request_examples=$enableval], [request_examples=check]) [request_examples=$enableval], [request_examples=check])
AC_ARG_ENABLE([python-bindings],
[AS_HELP_STRING([--enable-python-bindings],
[Build Python bindings [default=check]])],
[request_python_bindings=$enableval], [request_python_bindings=check])
AC_ARG_ENABLE([failmalloc], AC_ARG_ENABLE([failmalloc],
[AS_HELP_STRING([--disable-failmalloc], [AS_HELP_STRING([--disable-failmalloc],
[Do not build failmalloc test program])], [Do not build failmalloc test program])],
@@ -104,9 +94,14 @@ AC_ARG_ENABLE([failmalloc],
AC_ARG_ENABLE([lib-only], AC_ARG_ENABLE([lib-only],
[AS_HELP_STRING([--enable-lib-only], [AS_HELP_STRING([--enable-lib-only],
[Build libnghttp2 only. This is a short hand for --disable-app --disable-examples --disable-hpack-tools --disable-python-bindings])], [Build libnghttp2 only. This is a short hand for --disable-app --disable-examples --disable-hpack-tools])],
[request_lib_only=$enableval], [request_lib_only=no]) [request_lib_only=$enableval], [request_lib_only=no])
AC_ARG_ENABLE([http3],
[AS_HELP_STRING([--enable-http3],
[(EXPERIMENTAL) Enable HTTP/3. This requires ngtcp2, nghttp3, and a custom OpenSSL.])],
[request_http3=$enableval], [request_http3=no])
AC_ARG_WITH([libxml2], AC_ARG_WITH([libxml2],
[AS_HELP_STRING([--with-libxml2], [AS_HELP_STRING([--with-libxml2],
[Use libxml2 [default=check]])], [Use libxml2 [default=check]])],
@@ -142,11 +137,6 @@ AC_ARG_WITH([libev],
[Use libev [default=check]])], [Use libev [default=check]])],
[request_libev=$withval], [request_libev=check]) [request_libev=$withval], [request_libev=check])
AC_ARG_WITH([cunit],
[AS_HELP_STRING([--with-cunit],
[Use cunit [default=check]])],
[request_cunit=$withval], [request_cunit=check])
AC_ARG_WITH([jemalloc], AC_ARG_WITH([jemalloc],
[AS_HELP_STRING([--with-jemalloc], [AS_HELP_STRING([--with-jemalloc],
[Use jemalloc [default=check]])], [Use jemalloc [default=check]])],
@@ -167,14 +157,32 @@ AC_ARG_WITH([neverbleed],
[Use neverbleed [default=no]])], [Use neverbleed [default=no]])],
[request_neverbleed=$withval], [request_neverbleed=no]) [request_neverbleed=$withval], [request_neverbleed=no])
AC_ARG_WITH([cython], AC_ARG_WITH([libngtcp2],
[AS_HELP_STRING([--with-cython=PATH], [AS_HELP_STRING([--with-libngtcp2],
[Use cython in given PATH])], [Use libngtcp2 [default=check]])],
[cython_path=$withval], []) [request_libngtcp2=$withval], [request_libngtcp2=check])
AC_ARG_WITH([libnghttp3],
[AS_HELP_STRING([--with-libnghttp3],
[Use libnghttp3 [default=check]])],
[request_libnghttp3=$withval], [request_libnghttp3=check])
AC_ARG_WITH([libbpf],
[AS_HELP_STRING([--with-libbpf],
[Use libbpf [default=no]])],
[request_libbpf=$withval], [request_libbpf=no])
AC_ARG_WITH([libbrotlienc],
[AS_HELP_STRING([--with-libbrotlienc],
[Use libbrotlienc [default=no]])],
[request_libbrotlienc=$withval], [request_libbrotlienc=no])
AC_ARG_WITH([libbrotlidec],
[AS_HELP_STRING([--with-libbrotlidec],
[Use libbrotlidec [default=no]])],
[request_libbrotlidec=$withval], [request_libbrotlidec=no])
dnl Define variables dnl Define variables
AC_ARG_VAR([CYTHON], [the Cython executable])
AC_ARG_VAR([LIBEV_CFLAGS], [C compiler flags for libev, skipping any checks]) AC_ARG_VAR([LIBEV_CFLAGS], [C compiler flags for libev, skipping any checks])
AC_ARG_VAR([LIBEV_LIBS], [linker flags for libev, skipping any checks]) AC_ARG_VAR([LIBEV_LIBS], [linker flags for libev, skipping any checks])
@@ -185,6 +193,8 @@ AC_ARG_VAR([JEMALLOC_LIBS], [linker flags for jemalloc, skipping any checks])
AC_ARG_VAR([LIBTOOL_LDFLAGS], AC_ARG_VAR([LIBTOOL_LDFLAGS],
[libtool specific flags (e.g., -static-libtool-libs)]) [libtool specific flags (e.g., -static-libtool-libs)])
AC_ARG_VAR([BPFCFLAGS], [C compiler flags for bpf program])
dnl Checks for programs dnl Checks for programs
AC_PROG_CC AC_PROG_CC
AC_PROG_CXX AC_PROG_CXX
@@ -202,18 +212,21 @@ if [test "x$request_lib_only" = "xyes"]; then
request_app=no request_app=no
request_hpack_tools=no request_hpack_tools=no
request_examples=no request_examples=no
request_python_bindings=no request_http3=no
fi request_libxml2=no
request_jansson=no
if [test "x$request_python_bindings" != "xno"]; then request_zlib=no
AX_PYTHON_DEVEL([>= '3.8']) request_libevent_openssl=no
fi request_libcares=no
request_openssl=no
if test "x${cython_path}" = "x"; then request_libev=no
AC_CHECK_PROGS([CYTHON], [cython.py cython]) request_jemalloc=no
else request_systemd=no
CYTHON=${cython_path} request_mruby=no
AC_SUBST([CYTHON]) request_neverbleed=no
request_libngtcp2=no
request_libnghttp3=no
request_libbpf=no
fi fi
if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
@@ -225,7 +238,7 @@ fi
save_CXXFLAGS="$CXXFLAGS" save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS= CXXFLAGS=
AX_CXX_COMPILE_STDCXX([14], [noext], [optional]) AX_CXX_COMPILE_STDCXX([20], [], [optional])
CXX1XCXXFLAGS="$CXXFLAGS" CXX1XCXXFLAGS="$CXXFLAGS"
CXXFLAGS="$save_CXXFLAGS" CXXFLAGS="$save_CXXFLAGS"
@@ -245,6 +258,7 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
]], ]],
[[ [[
std::vector<std::future<int>> v; std::vector<std::future<int>> v;
(void)v;
]])], ]])],
[AC_DEFINE([HAVE_STD_FUTURE], [1], [AC_DEFINE([HAVE_STD_FUTURE], [1],
[Define to 1 if you have the `std::future`.]) [Define to 1 if you have the `std::future`.])
@@ -269,21 +283,20 @@ std::map<int, int>().emplace(1, 2);
[have_std_map_emplace=no [have_std_map_emplace=no
AC_MSG_RESULT([no])]) AC_MSG_RESULT([no])])
# Check that std::atomic_* overloads for std::shared_ptr are # Check that std::atomic<std::shared_ptr<T>> is supported.
# available. AC_MSG_CHECKING([whether std::atomic<std::shared_ptr<T>> is supported])
AC_MSG_CHECKING([whether std::atomic_* overloads for std::shared_ptr are available])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM( AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
[[ [[
#include <memory> #include <memory>
]], ]],
[[ [[
auto a = std::make_shared<int>(1000000007); auto a = std::atomic<std::shared_ptr<int>>(std::make_shared<int>(1000000007));
auto p = std::atomic_load(&a); auto p = a.load();
++*p; ++*p;
std::atomic_store(&a, p); a.store(p);
]])], ]])],
[AC_DEFINE([HAVE_ATOMIC_STD_SHARED_PTR], [1], [AC_DEFINE([HAVE_ATOMIC_STD_SHARED_PTR], [1],
[Define to 1 if you have the std::atomic_* overloads for std::shared_ptr.]) [Define to 1 if you have the std::atomic<std::shared_ptr<T>> is supported.])
have_atomic_std_shared_ptr=yes have_atomic_std_shared_ptr=yes
AC_MSG_RESULT([yes])], AC_MSG_RESULT([yes])],
[have_atomic_std_shared_ptr=no [have_atomic_std_shared_ptr=no
@@ -319,8 +332,8 @@ APPLDFLAGS=
case "$host_os" in case "$host_os" in
*android*) *android*)
android_build=yes android_build=yes
# android does not need -pthread, but needs followng 3 libs for C++ # android does not need -pthread, but needs following 2 libs for C++
APPLDFLAGS="$APPLDFLAGS -lstdc++ -latomic -lsupc++" APPLDFLAGS="$APPLDFLAGS -lstdc++ -latomic"
;; ;;
*) *)
PTHREAD_LDFLAGS="-pthread" PTHREAD_LDFLAGS="-pthread"
@@ -334,6 +347,13 @@ case "$host_os" in
;; ;;
esac esac
case "${build}" in
*-apple-darwin*)
EXTRA_DEFS="-D__APPLE_USE_RFC_3542"
AC_SUBST([EXTRA_DEFS])
;;
esac
# zlib # zlib
have_zlib=no have_zlib=no
if test "x${request_zlib}" != "xno"; then if test "x${request_zlib}" != "xno"; then
@@ -361,43 +381,6 @@ case "${host_os}" in
;; ;;
esac esac
# cunit
have_cunit=no
if test "x${request_cunit}" != "xno"; then
PKG_CHECK_MODULES([CUNIT], [cunit >= 2.1], [have_cunit=yes], [have_cunit=no])
# If pkg-config does not find cunit, check it using AC_CHECK_LIB. We
# do this because Debian (Ubuntu) lacks pkg-config file for cunit.
if test "x${have_cunit}" = "xno"; then
AC_MSG_WARN([${CUNIT_PKG_ERRORS}])
AC_CHECK_LIB([cunit], [CU_initialize_registry],
[have_cunit=yes], [have_cunit=no])
if test "x${have_cunit}" = "xyes"; then
CUNIT_LIBS="-lcunit"
CUNIT_CFLAGS=""
AC_SUBST([CUNIT_LIBS])
AC_SUBST([CUNIT_CFLAGS])
fi
fi
if test "x${have_cunit}" = "xyes"; then
# cunit in Mac OS X requires ncurses. Note that in Mac OS X, test
# program can be built without -lncurses, but it emits runtime
# error.
case "${build}" in
*-apple-darwin*)
CUNIT_LIBS="$CUNIT_LIBS -lncurses"
AC_SUBST([CUNIT_LIBS])
;;
esac
fi
fi
if test "x${request_cunit}" = "xyes" &&
test "x${have_cunit}" != "xyes"; then
AC_MSG_ERROR([cunit was requested (--with-cunit) but not found])
fi
AM_CONDITIONAL([HAVE_CUNIT], [ test "x${have_cunit}" = "xyes" ])
# libev (for src) # libev (for src)
have_libev=no have_libev=no
if test "x${request_libev}" != "xno"; then if test "x${request_libev}" != "xno"; then
@@ -417,6 +400,10 @@ if test "x${request_libev}" != "xno"; then
else else
have_libev=yes have_libev=yes
fi fi
if test "x${have_libev}" = "xyes"; then
AC_DEFINE([HAVE_LIBEV], [1], [Define to 1 if you have `libev` library.])
fi
fi fi
if test "x${request_libev}" = "xyes" && if test "x${request_libev}" = "xyes" &&
@@ -427,10 +414,46 @@ fi
# openssl (for src) # openssl (for src)
have_openssl=no have_openssl=no
if test "x${request_openssl}" != "xno"; then if test "x${request_openssl}" != "xno"; then
PKG_CHECK_MODULES([OPENSSL], [openssl >= 1.0.1], PKG_CHECK_MODULES([OPENSSL], [openssl >= 1.1.1],
[have_openssl=yes], [have_openssl=no]) [have_openssl=yes], [have_openssl=no])
if test "x${have_openssl}" = "xno"; then if test "x${have_openssl}" = "xno"; then
AC_MSG_NOTICE($OPENSSL_PKG_ERRORS) AC_MSG_NOTICE($OPENSSL_PKG_ERRORS)
else
# Use C++ compiler because boringssl needs C++ runtime.
AC_LANG_PUSH(C++)
save_CXXFLAGS="$CXXFLAGS"
save_LIBS="$LIBS"
CXXFLAGS="$OPENSSL_CFLAGS $CXXFLAGS"
LIBS="$OPENSSL_LIBS $LIBS"
# quictls/openssl has SSL_provide_quic_data. boringssl also has
# it. We will deal with it later.
have_ssl_provide_quic_data=no
AC_MSG_CHECKING([for SSL_provide_quic_data])
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <openssl/ssl.h>
]], [[
SSL_provide_quic_data(NULL, (ssl_encryption_level_t)0, NULL, 0);
]])],
[AC_MSG_RESULT([yes]); have_ssl_provide_quic_data=yes],
[AC_MSG_RESULT([no]); have_ssl_provide_quic_data=no])
# boringssl has SSL_set_quic_early_data_context.
AC_MSG_CHECKING([for SSL_set_quic_early_data_context])
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <openssl/ssl.h>
]], [[
SSL *ssl = NULL;
SSL_set_quic_early_data_context(ssl, NULL, 0);
]])],
[AC_MSG_RESULT([yes]); have_boringssl_quic=yes],
[AC_MSG_RESULT([no]); have_boringssl_quic=no])
CXXFLAGS="$save_CXXFLAGS"
LIBS="$save_LIBS"
AC_LANG_POP()
fi fi
fi fi
@@ -442,7 +465,7 @@ fi
# c-ares (for src) # c-ares (for src)
have_libcares=no have_libcares=no
if test "x${request_libcares}" != "xno"; then if test "x${request_libcares}" != "xno"; then
PKG_CHECK_MODULES([LIBCARES], [libcares >= 1.7.5], [have_libcares=yes], PKG_CHECK_MODULES([LIBCARES], [libcares >= 1.16.0], [have_libcares=yes],
[have_libcares=no]) [have_libcares=no])
if test "x${have_libcares}" = "xno"; then if test "x${have_libcares}" = "xno"; then
AC_MSG_NOTICE($LIBCARES_PKG_ERRORS) AC_MSG_NOTICE($LIBCARES_PKG_ERRORS)
@@ -454,6 +477,168 @@ if test "x${request_libcares}" = "xyes" &&
AC_MSG_ERROR([libcares was requested (--with-libcares) but not found]) AC_MSG_ERROR([libcares was requested (--with-libcares) but not found])
fi fi
# ngtcp2 (for src)
have_libngtcp2=no
if test "x${request_libngtcp2}" != "xno"; then
PKG_CHECK_MODULES([LIBNGTCP2], [libngtcp2 >= 1.4.0], [have_libngtcp2=yes],
[have_libngtcp2=no])
if test "x${have_libngtcp2}" = "xno"; then
AC_MSG_NOTICE($LIBNGTCP2_PKG_ERRORS)
fi
fi
if test "x${request_libngtcp2}" = "xyes" &&
test "x${have_libngtcp2}" != "xyes"; then
AC_MSG_ERROR([libngtcp2 was requested (--with-libngtcp2) but not found])
fi
# ngtcp2_crypto_quictls (for src)
have_libngtcp2_crypto_quictls=no
if test "x${have_ssl_provide_quic_data}" = "xyes" &&
test "x${have_boringssl_quic}" != "xyes" &&
test "x${request_libngtcp2}" != "xno"; then
PKG_CHECK_MODULES([LIBNGTCP2_CRYPTO_QUICTLS],
[libngtcp2_crypto_quictls >= 1.0.0],
[have_libngtcp2_crypto_quictls=yes],
[have_libngtcp2_crypto_quictls=no])
if test "x${have_libngtcp2_crypto_quictls}" = "xno"; then
AC_MSG_NOTICE($LIBNGTCP2_CRYPTO_QUICTLS_PKG_ERRORS)
else
AC_DEFINE([HAVE_LIBNGTCP2_CRYPTO_QUICTLS], [1],
[Define to 1 if you have `libngtcp2_crypto_quictls` library.])
fi
fi
if test "x${have_ssl_provide_quic_data}" = "xyes" &&
test "x${have_boringssl_quic}" != "xyes" &&
test "x${request_libngtcp2}" = "xyes" &&
test "x${have_libngtcp2_crypto_quictls}" != "xyes"; then
AC_MSG_ERROR([libngtcp2_crypto_quictls was requested (--with-libngtcp2) but not found])
fi
# ngtcp2_crypto_boringssl (for src)
have_libngtcp2_crypto_boringssl=no
if test "x${have_boringssl_quic}" = "xyes" &&
test "x${request_libngtcp2}" != "xno"; then
PKG_CHECK_MODULES([LIBNGTCP2_CRYPTO_BORINGSSL],
[libngtcp2_crypto_boringssl >= 0.0.0],
[have_libngtcp2_crypto_boringssl=yes],
[have_libngtcp2_crypto_boringssl=no])
if test "x${have_libngtcp2_crypto_boringssl}" = "xno"; then
AC_MSG_NOTICE($LIBNGTCP2_CRYPTO_BORINGSSL_PKG_ERRORS)
else
AC_DEFINE([HAVE_LIBNGTCP2_CRYPTO_BORINGSSL], [1],
[Define to 1 if you have `libngtcp2_crypto_boringssl` library.])
fi
fi
if test "x${have_boringssl_quic}" = "xyes" &&
test "x${request_libngtcp2}" = "xyes" &&
test "x${have_libngtcp2_crypto_boringssl}" != "xyes"; then
AC_MSG_ERROR([libngtcp2_crypto_boringssl was requested (--with-libngtcp2) but not found])
fi
# nghttp3 (for src)
have_libnghttp3=no
if test "x${request_libnghttp3}" != "xno"; then
PKG_CHECK_MODULES([LIBNGHTTP3], [libnghttp3 >= 1.1.0], [have_libnghttp3=yes],
[have_libnghttp3=no])
if test "x${have_libnghttp3}" = "xno"; then
AC_MSG_NOTICE($LIBNGHTTP3_PKG_ERRORS)
fi
fi
if test "x${request_libnghttp3}" = "xyes" &&
test "x${have_libnghttp3}" != "xyes"; then
AC_MSG_ERROR([libnghttp3 was requested (--with-libnghttp3) but not found])
fi
# libbpf (for src)
have_libbpf=no
if test "x${request_libbpf}" != "xno"; then
PKG_CHECK_MODULES([LIBBPF], [libbpf >= 0.7.0], [have_libbpf=yes],
[have_libbpf=no])
if test "x${have_libbpf}" = "xyes"; then
AC_DEFINE([HAVE_LIBBPF], [1], [Define to 1 if you have `libbpf` library.])
if test "x${BPFCFLAGS}" = "x"; then
BPFCFLAGS="-Wall -O2 -g"
fi
# Add the include path for Debian
EXTRABPFCFLAGS="-I/usr/include/$host_cpu-$host_os"
AC_SUBST([EXTRABPFCFLAGS])
AC_MSG_CHECKING([whether enum bpf_stats_type is defined in linux/bpf.h])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
[[
#include <linux/bpf.h>
]],
[[
enum bpf_stats_type foo;
(void)foo;
]])],
[have_bpf_stats_type=yes],
[have_bpf_stats_type=no])
if test "x${have_bpf_stats_type}" = "xyes"; then
AC_MSG_RESULT([yes])
AC_DEFINE([HAVE_BPF_STATS_TYPE], [1],
[Define to 1 if you have enum bpf_stats_type in linux/bpf.h.])
else
AC_MSG_RESULT([no])
fi
else
AC_MSG_NOTICE($LIBBPF_PKG_ERRORS)
fi
fi
if test "x${request_libbpf}" = "xyes" &&
test "x${have_libbpf}" != "xyes"; then
AC_MSG_ERROR([libbpf was requested (--with-libbpf) but not found])
fi
AM_CONDITIONAL([HAVE_LIBBPF], [ test "x${have_libbpf}" = "xyes" ])
# libbrotlienc (for src)
have_libbrotlienc=no
if test "x${request_libbrotlienc}" != "xno"; then
PKG_CHECK_MODULES([LIBBROTLIENC], [libbrotlienc >= 1.0.9],
[have_libbrotlienc=yes],
[have_libbrotlienc=no])
if test "x${have_libbrotlienc}" = "xno"; then
AC_MSG_NOTICE($LIBBROTLIENC_PKG_ERRORS)
fi
fi
if test "x${request_libbrotlienc}" = "xyes" &&
test "x${have_libbrotlienc}" != "xyes"; then
AC_MSG_ERROR([libbrotlienc was requested (--with-libbrotlienc) but not found])
fi
# libbrotlidec (for src)
have_libbrotlidec=no
if test "x${request_libbrotlidec}" != "xno"; then
PKG_CHECK_MODULES([LIBBROTLIDEC], [libbrotlidec >= 1.0.9],
[have_libbrotlidec=yes],
[have_libbrotlidec=no])
if test "x${have_libbrotlidec}" = "xno"; then
AC_MSG_NOTICE($LIBBROTLIDEC_PKG_ERRORS)
fi
fi
if test "x${request_libbrotlidec}" = "xyes" &&
test "x${have_libbrotlidec}" != "xyes"; then
AC_MSG_ERROR([libbrotlidec was requested (--with-libbrotlidec) but not found])
fi
have_libbrotli=no
if test "x${have_libbrotlienc}" = "xyes" &&
test "x${have_libbrotlidec}" = "xyes"; then
have_libbrotli=yes
AC_DEFINE([HAVE_LIBBROTLI], [1],
[Define to 1 if you have `libbrotlienc` and `libbrotlidec` libraries.])
fi
# libevent_openssl (for examples) # libevent_openssl (for examples)
# 2.0.8 is required because we use evconnlistener_set_error_cb() # 2.0.8 is required because we use evconnlistener_set_error_cb()
have_libevent_openssl=no have_libevent_openssl=no
@@ -561,25 +746,6 @@ if test "x${request_jemalloc}" = "xyes" &&
AC_MSG_ERROR([jemalloc was requested (--with-jemalloc) but not found]) AC_MSG_ERROR([jemalloc was requested (--with-jemalloc) but not found])
fi fi
# Check Boost Asio library
have_asio_lib=no
if test "x${request_asio_lib}" = "xyes"; then
AX_BOOST_BASE([1.54.0], [have_boost_base=yes], [have_boost_base=no])
if test "x${have_boost_base}" = "xyes"; then
AX_BOOST_ASIO()
AX_BOOST_SYSTEM()
AX_BOOST_THREAD()
if test "x${ax_cv_boost_asio}" = "xyes" &&
test "x${ax_cv_boost_system}" = "xyes" &&
test "x${ax_cv_boost_thread}" = "xyes"; then
have_asio_lib=yes
fi
fi
fi
# The nghttp, nghttpd and nghttpx under src depend on zlib, OpenSSL, # The nghttp, nghttpd and nghttpx under src depend on zlib, OpenSSL,
# libev, and libc-ares. # libev, and libc-ares.
enable_app=no enable_app=no
@@ -598,6 +764,24 @@ fi
AM_CONDITIONAL([ENABLE_APP], [ test "x${enable_app}" = "xyes" ]) AM_CONDITIONAL([ENABLE_APP], [ test "x${enable_app}" = "xyes" ])
# Check HTTP/3 support
enable_http3=no
if test "x${request_http3}" != "xno" &&
test "x${have_libngtcp2}" = "xyes" &&
(test "x${have_libngtcp2_crypto_quictls}" = "xyes" ||
test "x${have_libngtcp2_crypto_boringssl}" = "xyes") &&
test "x${have_libnghttp3}" = "xyes"; then
enable_http3=yes
AC_DEFINE([ENABLE_HTTP3], [1], [Define to 1 if HTTP/3 is enabled.])
fi
if test "x${request_http3}" = "xyes" &&
test "x${enable_http3}" != "xyes"; then
AC_MSG_ERROR([HTTP/3 was requested (--enable-http3) but dependencies are not met.])
fi
AM_CONDITIONAL([ENABLE_HTTP3], [ test "x${enable_http3}" = "xyes" ])
enable_hpack_tools=no enable_hpack_tools=no
# HPACK tools requires jansson # HPACK tools requires jansson
if test "x${request_hpack_tools}" != "xno" && if test "x${request_hpack_tools}" != "xno" &&
@@ -612,16 +796,6 @@ fi
AM_CONDITIONAL([ENABLE_HPACK_TOOLS], [ test "x${enable_hpack_tools}" = "xyes" ]) AM_CONDITIONAL([ENABLE_HPACK_TOOLS], [ test "x${enable_hpack_tools}" = "xyes" ])
# C++ library libnghttp2_asio
enable_asio_lib=no
if test "x${request_asio_lib}" != "xno" &&
test "x${have_asio_lib}" = "xyes"; then
enable_asio_lib=yes
fi
AM_CONDITIONAL([ENABLE_ASIO_LIB], [ test "x${enable_asio_lib}" = "xyes" ])
# The example programs depend on OpenSSL and libevent_openssl # The example programs depend on OpenSSL and libevent_openssl
enable_examples=no enable_examples=no
if test "x${request_examples}" != "xno" && if test "x${request_examples}" != "xno" &&
@@ -644,8 +818,7 @@ have_mruby=no
have_neverbleed=no have_neverbleed=no
if test "x${enable_examples}" = "xyes" || if test "x${enable_examples}" = "xyes" ||
test "x${enable_app}" = "xyes" || test "x${enable_app}" = "xyes" ||
test "x${enable_hpack_tools}" = "xyes" || test "x${enable_hpack_tools}" = "xyes"; then
test "x${enable_asio_lib}" = "xyes"; then
enable_third_party=yes enable_third_party=yes
# mruby (for src/nghttpx) # mruby (for src/nghttpx)
@@ -670,27 +843,6 @@ AM_CONDITIONAL([ENABLE_THIRD_PARTY], [ test "x${enable_third_party}" = "xyes" ])
AM_CONDITIONAL([HAVE_MRUBY], [test "x${have_mruby}" = "xyes"]) AM_CONDITIONAL([HAVE_MRUBY], [test "x${have_mruby}" = "xyes"])
AM_CONDITIONAL([HAVE_NEVERBLEED], [test "x${have_neverbleed}" = "xyes"]) AM_CONDITIONAL([HAVE_NEVERBLEED], [test "x${have_neverbleed}" = "xyes"])
# Python bindings
enable_python_bindings=no
if test "x${request_python_bindings}" != "xno" &&
test "x${CYTHON}" != "x" &&
test "x${PYTHON}" != "x:" &&
test "x${PYTHON_VERSION}" != "x"; then
enable_python_bindings=yes
fi
if test "x${request_python_bindings}" = "xyes" &&
test "x${enable_python_bindings}" != "xyes"; then
AC_MSG_ERROR([python bindings were requested (--enable-python-bindings) but dependencies are not met.])
fi
AM_CONDITIONAL([ENABLE_PYTHON_BINDINGS],
[test "x${enable_python_bindings}" = "xyes"])
# Produce cython conditional, so that we can distribute generated C
# source
AM_CONDITIONAL([HAVE_CYTHON], [test "x${CYTHON}" != "x"])
# failmalloc tests # failmalloc tests
enable_failmalloc=no enable_failmalloc=no
if test "x${request_failmalloc}" = "xyes"; then if test "x${request_failmalloc}" = "xyes"; then
@@ -708,6 +860,7 @@ AC_CHECK_HEADERS([ \
limits.h \ limits.h \
netdb.h \ netdb.h \
netinet/in.h \ netinet/in.h \
netinet/ip.h \
pwd.h \ pwd.h \
stddef.h \ stddef.h \
stdint.h \ stdint.h \
@@ -716,8 +869,8 @@ AC_CHECK_HEADERS([ \
sys/socket.h \ sys/socket.h \
sys/time.h \ sys/time.h \
syslog.h \ syslog.h \
time.h \
unistd.h \ unistd.h \
windows.h \
]) ])
# Checks for typedefs, structures, and compiler characteristics. # Checks for typedefs, structures, and compiler characteristics.
@@ -767,12 +920,6 @@ if test "x$have_struct_tm_tm_gmtoff" = "xyes"; then
[Define to 1 if you have `struct tm.tm_gmtoff` member.]) [Define to 1 if you have `struct tm.tm_gmtoff` member.])
fi fi
# Check size of pointer to decide we need 8 bytes alignment
# adjustment.
AC_CHECK_SIZEOF([int *])
AC_CHECK_SIZEOF([time_t])
# Checks for library functions. # Checks for library functions.
# Don't check malloc, since it does not play nicely with C++ stdlib # Don't check malloc, since it does not play nicely with C++ stdlib
@@ -789,6 +936,7 @@ AC_FUNC_STRNLEN
AC_CHECK_FUNCS([ \ AC_CHECK_FUNCS([ \
_Exit \ _Exit \
accept4 \ accept4 \
clock_gettime \
dup2 \ dup2 \
getcwd \ getcwd \
getpwnam \ getpwnam \
@@ -814,6 +962,25 @@ AC_CHECK_FUNCS([ \
AC_CHECK_FUNC([timerfd_create], AC_CHECK_FUNC([timerfd_create],
[have_timerfd_create=yes], [have_timerfd_create=no]) [have_timerfd_create=yes], [have_timerfd_create=no])
AC_MSG_CHECKING([checking for GetTickCount64])
AC_LINK_IFELSE([AC_LANG_PROGRAM(
[[
#include <windows.h>
]],
[[
GetTickCount64();
]])],
[have_gettickcount64=yes],
[have_gettickcount64=no])
if test "x${have_gettickcount64}" = "xyes"; then
AC_MSG_RESULT([yes])
AC_DEFINE([HAVE_GETTICKCOUNT64], [1],
[Define to 1 if you have `GetTickCount64` function.])
else
AC_MSG_RESULT([no])
fi
# For cygwin: we can link initgroups, so AC_CHECK_FUNCS succeeds, but # For cygwin: we can link initgroups, so AC_CHECK_FUNCS succeeds, but
# cygwin disables initgroups due to feature test macro magic with our # cygwin disables initgroups due to feature test macro magic with our
# configuration. FreeBSD declares initgroups() in unistd.h. # configuration. FreeBSD declares initgroups() in unistd.h.
@@ -824,6 +991,10 @@ AC_CHECK_DECLS([initgroups], [], [], [[
#include <grp.h> #include <grp.h>
]]) ]])
AC_CHECK_DECLS([CLOCK_MONOTONIC], [], [], [[
#include <time.h>
]])
save_CFLAGS=$CFLAGS save_CFLAGS=$CFLAGS
save_CXXFLAGS=$CXXFLAGS save_CXXFLAGS=$CXXFLAGS
@@ -937,11 +1108,9 @@ AC_CONFIG_FILES([
tests/testdata/Makefile tests/testdata/Makefile
third-party/Makefile third-party/Makefile
src/Makefile src/Makefile
src/includes/Makefile src/testdata/Makefile
src/libnghttp2_asio.pc bpf/Makefile
examples/Makefile examples/Makefile
python/Makefile
python/setup.py
integration-tests/Makefile integration-tests/Makefile
integration-tests/config.go integration-tests/config.go
integration-tests/setenv integration-tests/setenv
@@ -954,14 +1123,9 @@ AC_CONFIG_FILES([
doc/tutorial-hpack.rst doc/tutorial-hpack.rst
doc/nghttpx-howto.rst doc/nghttpx-howto.rst
doc/h2load-howto.rst doc/h2load-howto.rst
doc/libnghttp2_asio.rst
doc/python-apiref.rst
doc/building-android-binary.rst doc/building-android-binary.rst
doc/nghttp2.h.rst doc/nghttp2.h.rst
doc/nghttp2ver.h.rst doc/nghttp2ver.h.rst
doc/asio_http2.h.rst
doc/asio_http2_server.h.rst
doc/asio_http2_client.h.rst
doc/contribute.rst doc/contribute.rst
contrib/Makefile contrib/Makefile
script/Makefile script/Makefile
@@ -990,7 +1154,11 @@ AC_MSG_NOTICE([summary of build options:
WARNCXXFLAGS: ${WARNCXXFLAGS} WARNCXXFLAGS: ${WARNCXXFLAGS}
CXX1XCXXFLAGS: ${CXX1XCXXFLAGS} CXX1XCXXFLAGS: ${CXX1XCXXFLAGS}
EXTRACFLAG: ${EXTRACFLAG} EXTRACFLAG: ${EXTRACFLAG}
BPFCFLAGS: ${BPFCFLAGS}
EXTRABPFCFLAGS: ${EXTRABPFCFLAGS}
LIBS: ${LIBS} LIBS: ${LIBS}
DEFS: ${DEFS}
EXTRA_DEFS: ${EXTRA_DEFS}
Library: Library:
Shared: ${enable_shared} Shared: ${enable_shared}
Static: ${enable_static} Static: ${enable_static}
@@ -999,28 +1167,25 @@ AC_MSG_NOTICE([summary of build options:
Python: Python:
Python: ${PYTHON} Python: ${PYTHON}
PYTHON_VERSION: ${PYTHON_VERSION} PYTHON_VERSION: ${PYTHON_VERSION}
pyexecdir: ${pyexecdir}
PYTHON_CPPFLAGS:${PYTHON_CPPFLAGS}
PYTHON_LIBS: ${PYTHON_LIBS}
Cython: ${CYTHON}
Test: Test:
CUnit: ${have_cunit} (CFLAGS='${CUNIT_CFLAGS}' LIBS='${CUNIT_LIBS}')
Failmalloc: ${enable_failmalloc} Failmalloc: ${enable_failmalloc}
Libs: Libs:
OpenSSL: ${have_openssl} (CFLAGS='${OPENSSL_CFLAGS}' LIBS='${OPENSSL_LIBS}') OpenSSL: ${have_openssl} (CFLAGS='${OPENSSL_CFLAGS}' LIBS='${OPENSSL_LIBS}')
Libxml2: ${have_libxml2} (CFLAGS='${LIBXML2_CFLAGS}' LIBS='${LIBXML2_LIBS}') Libxml2: ${have_libxml2} (CFLAGS='${LIBXML2_CFLAGS}' LIBS='${LIBXML2_LIBS}')
Libev: ${have_libev} (CFLAGS='${LIBEV_CFLAGS}' LIBS='${LIBEV_LIBS}') Libev: ${have_libev} (CFLAGS='${LIBEV_CFLAGS}' LIBS='${LIBEV_LIBS}')
Libc-ares: ${have_libcares} (CFLAGS='${LIBCARES_CFLAGS}' LIBS='${LIBCARES_LIBS}') Libc-ares: ${have_libcares} (CFLAGS='${LIBCARES_CFLAGS}' LIBS='${LIBCARES_LIBS}')
libngtcp2: ${have_libngtcp2} (CFLAGS='${LIBNGTCP2_CFLAGS}' LIBS='${LIBNGTCP2_LIBS}')
libngtcp2_crypto_quictls: ${have_libngtcp2_crypto_quictls} (CFLAGS='${LIBNGTCP2_CRYPTO_QUICTLS_CFLAGS}' LIBS='${LIBNGTCP2_CRYPTO_QUICTLS_LIBS}')
libngtcp2_crypto_boringssl: ${have_libngtcp2_crypto_boringssl} (CFLAGS='${LIBNGTCP2_CRYPTO_BORINGSSL_CFLAGS}' LIBS='${LIBNGTCP2_CRYPTO_BORINGSSL_LIBS}')
libnghttp3: ${have_libnghttp3} (CFLAGS='${LIBNGHTTP3_CFLAGS}' LIBS='${LIBNGHTTP3_LIBS}')
libbpf: ${have_libbpf} (CFLAGS='${LIBBPF_CFLAGS}' LIBS='${LIBBPF_LIBS}')
Libevent(SSL): ${have_libevent_openssl} (CFLAGS='${LIBEVENT_OPENSSL_CFLAGS}' LIBS='${LIBEVENT_OPENSSL_LIBS}') Libevent(SSL): ${have_libevent_openssl} (CFLAGS='${LIBEVENT_OPENSSL_CFLAGS}' LIBS='${LIBEVENT_OPENSSL_LIBS}')
Jansson: ${have_jansson} (CFLAGS='${JANSSON_CFLAGS}' LIBS='${JANSSON_LIBS}') Jansson: ${have_jansson} (CFLAGS='${JANSSON_CFLAGS}' LIBS='${JANSSON_LIBS}')
Jemalloc: ${have_jemalloc} (CFLAGS='${JEMALLOC_CFLAGS}' LIBS='${JEMALLOC_LIBS}') Jemalloc: ${have_jemalloc} (CFLAGS='${JEMALLOC_CFLAGS}' LIBS='${JEMALLOC_LIBS}')
Zlib: ${have_zlib} (CFLAGS='${ZLIB_CFLAGS}' LIBS='${ZLIB_LIBS}') Zlib: ${have_zlib} (CFLAGS='${ZLIB_CFLAGS}' LIBS='${ZLIB_LIBS}')
Systemd: ${have_libsystemd} (CFLAGS='${SYSTEMD_CFLAGS}' LIBS='${SYSTEMD_LIBS}') Systemd: ${have_libsystemd} (CFLAGS='${SYSTEMD_CFLAGS}' LIBS='${SYSTEMD_LIBS}')
Boost CPPFLAGS: ${BOOST_CPPFLAGS} Libbrotlienc: ${have_libbrotlienc} (CFLAGS="${LIBBROTLIENC_CFLAGS}' LIBS='${LIBBROTLIENC_LIBS}')
Boost LDFLAGS: ${BOOST_LDFLAGS} Libbrotlidec: ${have_libbrotlidec} (CFLAGS="${LIBBROTLIDEC_CFLAGS}' LIBS='${LIBBROTLIDEC_LIBS}')
Boost::ASIO: ${BOOST_ASIO_LIB}
Boost::System: ${BOOST_SYSTEM_LIB}
Boost::Thread: ${BOOST_THREAD_LIB}
Third-party: Third-party:
http-parser: ${enable_third_party} http-parser: ${enable_third_party}
MRuby: ${have_mruby} (CFLAGS='${LIBMRUBY_CFLAGS}' LIBS='${LIBMRUBY_LIBS}') MRuby: ${have_mruby} (CFLAGS='${LIBMRUBY_CFLAGS}' LIBS='${LIBMRUBY_LIBS}')
@@ -1028,8 +1193,7 @@ AC_MSG_NOTICE([summary of build options:
Features: Features:
Applications: ${enable_app} Applications: ${enable_app}
HPACK tools: ${enable_hpack_tools} HPACK tools: ${enable_hpack_tools}
Libnghttp2_asio:${enable_asio_lib}
Examples: ${enable_examples} Examples: ${enable_examples}
Python bindings:${enable_python_bindings}
Threading: ${enable_threads} Threading: ${enable_threads}
HTTP/3 (EXPERIMENTAL): ${enable_http3}
]) ])

View File

@@ -30,9 +30,10 @@ import (
"encoding/binary" "encoding/binary"
"flag" "flag"
"fmt" "fmt"
"github.com/bradfitz/gomemcache/memcache"
"log" "log"
"time" "time"
"github.com/bradfitz/gomemcache/memcache"
) )
func makeKey(len int) []byte { func makeKey(len int) []byte {
@@ -89,9 +90,7 @@ func main() {
Expiration: int32((*interval) + 300), Expiration: int32((*interval) + 300),
}) })
select { <-time.After(time.Duration(*interval) * time.Second)
case <-time.After(time.Duration(*interval) * time.Second):
}
// rotate keys. the last key is now encryption key. // rotate keys. the last key is now encryption key.
// generate new key and append it to the last, so that // generate new key and append it to the last, so that

5
doc/.gitignore vendored
View File

@@ -1,15 +1,11 @@
# generated files # generated files
apiref.rst apiref.rst
asio_http2.h.rst
asio_http2_client.h.rst
asio_http2_server.h.rst
building-android-binary.rst building-android-binary.rst
conf.py conf.py
contribute.rst contribute.rst
enums.rst enums.rst
h2load-howto.rst h2load-howto.rst
index.rst index.rst
libnghttp2_asio.rst
macros.rst macros.rst
manual/ manual/
nghttp2.h.rst nghttp2.h.rst
@@ -17,7 +13,6 @@ nghttp2_*.rst
nghttp2ver.h.rst nghttp2ver.h.rst
nghttpx-howto.rst nghttpx-howto.rst
package_README.rst package_README.rst
python-apiref.rst
tutorial-client.rst tutorial-client.rst
tutorial-hpack.rst tutorial-hpack.rst
tutorial-server.rst tutorial-server.rst

View File

@@ -180,13 +180,11 @@ set(EXTRA_DIST
sources/tutorial-hpack.rst sources/tutorial-hpack.rst
sources/nghttpx-howto.rst sources/nghttpx-howto.rst
sources/h2load-howto.rst sources/h2load-howto.rst
sources/libnghttp2_asio.rst
sources/python-apiref.rst
sources/building-android-binary.rst sources/building-android-binary.rst
sources/contribute.rst sources/contribute.rst
_exts/sphinxcontrib/LICENSE.rubydomain _exts/rubydomain/LICENSE.rubydomain
_exts/sphinxcontrib/__init__.py _exts/rubydomain/__init__.py
_exts/sphinxcontrib/rubydomain.py _exts/rubydomain/rubydomain.py
_themes/sphinx_rtd_theme/__init__.py _themes/sphinx_rtd_theme/__init__.py
_themes/sphinx_rtd_theme/breadcrumbs.html _themes/sphinx_rtd_theme/breadcrumbs.html
_themes/sphinx_rtd_theme/footer.html _themes/sphinx_rtd_theme/footer.html
@@ -269,7 +267,7 @@ add_custom_command(
apiref.rst apiref.rst
${APIDOCS} ${APIDOCS}
COMMAND COMMAND
"${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/mkapiref.py" "${Python3_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/mkapiref.py"
apiref.rst macros.rst enums.rst types.rst . apiref.rst macros.rst enums.rst types.rst .
${apiref_SOURCES} ${apiref_SOURCES}
DEPENDS DEPENDS

View File

@@ -30,6 +30,10 @@ APIDOCS= \
nghttp2_check_authority.rst \ nghttp2_check_authority.rst \
nghttp2_check_header_name.rst \ nghttp2_check_header_name.rst \
nghttp2_check_header_value.rst \ nghttp2_check_header_value.rst \
nghttp2_check_header_value_rfc9113.rst \
nghttp2_check_method.rst \
nghttp2_check_path.rst \
nghttp2_extpri_parse_priority.rst \
nghttp2_hd_deflate_bound.rst \ nghttp2_hd_deflate_bound.rst \
nghttp2_hd_deflate_change_table_size.rst \ nghttp2_hd_deflate_change_table_size.rst \
nghttp2_hd_deflate_del.rst \ nghttp2_hd_deflate_del.rst \
@@ -38,7 +42,9 @@ APIDOCS= \
nghttp2_hd_deflate_get_num_table_entries.rst \ nghttp2_hd_deflate_get_num_table_entries.rst \
nghttp2_hd_deflate_get_table_entry.rst \ nghttp2_hd_deflate_get_table_entry.rst \
nghttp2_hd_deflate_hd.rst \ nghttp2_hd_deflate_hd.rst \
nghttp2_hd_deflate_hd2.rst \
nghttp2_hd_deflate_hd_vec.rst \ nghttp2_hd_deflate_hd_vec.rst \
nghttp2_hd_deflate_hd_vec2.rst \
nghttp2_hd_deflate_new.rst \ nghttp2_hd_deflate_new.rst \
nghttp2_hd_deflate_new2.rst \ nghttp2_hd_deflate_new2.rst \
nghttp2_hd_inflate_change_table_size.rst \ nghttp2_hd_inflate_change_table_size.rst \
@@ -50,6 +56,7 @@ APIDOCS= \
nghttp2_hd_inflate_get_table_entry.rst \ nghttp2_hd_inflate_get_table_entry.rst \
nghttp2_hd_inflate_hd.rst \ nghttp2_hd_inflate_hd.rst \
nghttp2_hd_inflate_hd2.rst \ nghttp2_hd_inflate_hd2.rst \
nghttp2_hd_inflate_hd3.rst \
nghttp2_hd_inflate_new.rst \ nghttp2_hd_inflate_new.rst \
nghttp2_hd_inflate_new2.rst \ nghttp2_hd_inflate_new2.rst \
nghttp2_http2_strerror.rst \ nghttp2_http2_strerror.rst \
@@ -66,11 +73,16 @@ APIDOCS= \
nghttp2_option_set_no_closed_streams.rst \ nghttp2_option_set_no_closed_streams.rst \
nghttp2_option_set_no_http_messaging.rst \ nghttp2_option_set_no_http_messaging.rst \
nghttp2_option_set_no_recv_client_magic.rst \ nghttp2_option_set_no_recv_client_magic.rst \
nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation.rst \
nghttp2_option_set_peer_max_concurrent_streams.rst \ nghttp2_option_set_peer_max_concurrent_streams.rst \
nghttp2_option_set_server_fallback_rfc7540_priorities.rst \
nghttp2_option_set_user_recv_extension_type.rst \ nghttp2_option_set_user_recv_extension_type.rst \
nghttp2_option_set_max_continuations.rst \
nghttp2_option_set_max_outbound_ack.rst \ nghttp2_option_set_max_outbound_ack.rst \
nghttp2_option_set_max_settings.rst \ nghttp2_option_set_max_settings.rst \
nghttp2_option_set_stream_reset_rate_limit.rst \
nghttp2_pack_settings_payload.rst \ nghttp2_pack_settings_payload.rst \
nghttp2_pack_settings_payload2.rst \
nghttp2_priority_spec_check_default.rst \ nghttp2_priority_spec_check_default.rst \
nghttp2_priority_spec_default_init.rst \ nghttp2_priority_spec_default_init.rst \
nghttp2_priority_spec_init.rst \ nghttp2_priority_spec_init.rst \
@@ -79,10 +91,12 @@ APIDOCS= \
nghttp2_rcbuf_incref.rst \ nghttp2_rcbuf_incref.rst \
nghttp2_rcbuf_is_static.rst \ nghttp2_rcbuf_is_static.rst \
nghttp2_select_next_protocol.rst \ nghttp2_select_next_protocol.rst \
nghttp2_select_alpn.rst \
nghttp2_session_callbacks_del.rst \ nghttp2_session_callbacks_del.rst \
nghttp2_session_callbacks_new.rst \ nghttp2_session_callbacks_new.rst \
nghttp2_session_callbacks_set_before_frame_send_callback.rst \ nghttp2_session_callbacks_set_before_frame_send_callback.rst \
nghttp2_session_callbacks_set_data_source_read_length_callback.rst \ nghttp2_session_callbacks_set_data_source_read_length_callback.rst \
nghttp2_session_callbacks_set_data_source_read_length_callback2.rst \
nghttp2_session_callbacks_set_error_callback.rst \ nghttp2_session_callbacks_set_error_callback.rst \
nghttp2_session_callbacks_set_error_callback2.rst \ nghttp2_session_callbacks_set_error_callback2.rst \
nghttp2_session_callbacks_set_on_begin_frame_callback.rst \ nghttp2_session_callbacks_set_on_begin_frame_callback.rst \
@@ -99,11 +113,16 @@ APIDOCS= \
nghttp2_session_callbacks_set_on_invalid_header_callback2.rst \ nghttp2_session_callbacks_set_on_invalid_header_callback2.rst \
nghttp2_session_callbacks_set_on_stream_close_callback.rst \ nghttp2_session_callbacks_set_on_stream_close_callback.rst \
nghttp2_session_callbacks_set_pack_extension_callback.rst \ nghttp2_session_callbacks_set_pack_extension_callback.rst \
nghttp2_session_callbacks_set_pack_extension_callback2.rst \
nghttp2_session_callbacks_set_recv_callback.rst \ nghttp2_session_callbacks_set_recv_callback.rst \
nghttp2_session_callbacks_set_recv_callback2.rst \
nghttp2_session_callbacks_set_select_padding_callback.rst \ nghttp2_session_callbacks_set_select_padding_callback.rst \
nghttp2_session_callbacks_set_select_padding_callback2.rst \
nghttp2_session_callbacks_set_send_callback.rst \ nghttp2_session_callbacks_set_send_callback.rst \
nghttp2_session_callbacks_set_send_callback2.rst \
nghttp2_session_callbacks_set_send_data_callback.rst \ nghttp2_session_callbacks_set_send_data_callback.rst \
nghttp2_session_callbacks_set_unpack_extension_callback.rst \ nghttp2_session_callbacks_set_unpack_extension_callback.rst \
nghttp2_session_change_extpri_stream_priority.rst \
nghttp2_session_change_stream_priority.rst \ nghttp2_session_change_stream_priority.rst \
nghttp2_session_check_request_allowed.rst \ nghttp2_session_check_request_allowed.rst \
nghttp2_session_check_server_session.rst \ nghttp2_session_check_server_session.rst \
@@ -118,6 +137,7 @@ APIDOCS= \
nghttp2_session_find_stream.rst \ nghttp2_session_find_stream.rst \
nghttp2_session_get_effective_local_window_size.rst \ nghttp2_session_get_effective_local_window_size.rst \
nghttp2_session_get_effective_recv_data_length.rst \ nghttp2_session_get_effective_recv_data_length.rst \
nghttp2_session_get_extpri_stream_priority.rst \
nghttp2_session_get_hd_deflate_dynamic_table_size.rst \ nghttp2_session_get_hd_deflate_dynamic_table_size.rst \
nghttp2_session_get_hd_inflate_dynamic_table_size.rst \ nghttp2_session_get_hd_inflate_dynamic_table_size.rst \
nghttp2_session_get_last_proc_stream_id.rst \ nghttp2_session_get_last_proc_stream_id.rst \
@@ -136,7 +156,9 @@ APIDOCS= \
nghttp2_session_get_stream_remote_window_size.rst \ nghttp2_session_get_stream_remote_window_size.rst \
nghttp2_session_get_stream_user_data.rst \ nghttp2_session_get_stream_user_data.rst \
nghttp2_session_mem_recv.rst \ nghttp2_session_mem_recv.rst \
nghttp2_session_mem_recv2.rst \
nghttp2_session_mem_send.rst \ nghttp2_session_mem_send.rst \
nghttp2_session_mem_send2.rst \
nghttp2_session_recv.rst \ nghttp2_session_recv.rst \
nghttp2_session_resume_data.rst \ nghttp2_session_resume_data.rst \
nghttp2_session_send.rst \ nghttp2_session_send.rst \
@@ -164,15 +186,19 @@ APIDOCS= \
nghttp2_strerror.rst \ nghttp2_strerror.rst \
nghttp2_submit_altsvc.rst \ nghttp2_submit_altsvc.rst \
nghttp2_submit_data.rst \ nghttp2_submit_data.rst \
nghttp2_submit_data2.rst \
nghttp2_submit_extension.rst \ nghttp2_submit_extension.rst \
nghttp2_submit_goaway.rst \ nghttp2_submit_goaway.rst \
nghttp2_submit_headers.rst \ nghttp2_submit_headers.rst \
nghttp2_submit_origin.rst \ nghttp2_submit_origin.rst \
nghttp2_submit_ping.rst \ nghttp2_submit_ping.rst \
nghttp2_submit_priority.rst \ nghttp2_submit_priority.rst \
nghttp2_submit_priority_update.rst \
nghttp2_submit_push_promise.rst \ nghttp2_submit_push_promise.rst \
nghttp2_submit_request.rst \ nghttp2_submit_request.rst \
nghttp2_submit_request2.rst \
nghttp2_submit_response.rst \ nghttp2_submit_response.rst \
nghttp2_submit_response2.rst \
nghttp2_submit_rst_stream.rst \ nghttp2_submit_rst_stream.rst \
nghttp2_submit_settings.rst \ nghttp2_submit_settings.rst \
nghttp2_submit_shutdown_notice.rst \ nghttp2_submit_shutdown_notice.rst \
@@ -199,66 +225,11 @@ EXTRA_DIST = \
sources/tutorial-hpack.rst \ sources/tutorial-hpack.rst \
sources/nghttpx-howto.rst \ sources/nghttpx-howto.rst \
sources/h2load-howto.rst \ sources/h2load-howto.rst \
sources/libnghttp2_asio.rst \
sources/python-apiref.rst \
sources/building-android-binary.rst \ sources/building-android-binary.rst \
sources/contribute.rst \ sources/contribute.rst \
sources/security.rst \ _exts/rubydomain/LICENSE.rubydomain \
_exts/sphinxcontrib/LICENSE.rubydomain \ _exts/rubydomain/__init__.py \
_exts/sphinxcontrib/__init__.py \ _exts/rubydomain/rubydomain.py \
_exts/sphinxcontrib/rubydomain.py \
_themes/sphinx_rtd_theme/__init__.py \
_themes/sphinx_rtd_theme/breadcrumbs.html \
_themes/sphinx_rtd_theme/footer.html \
_themes/sphinx_rtd_theme/layout.html \
_themes/sphinx_rtd_theme/locale/de/LC_MESSAGES/sphinx.mo \
_themes/sphinx_rtd_theme/locale/de/LC_MESSAGES/sphinx.po \
_themes/sphinx_rtd_theme/locale/en/LC_MESSAGES/sphinx.mo \
_themes/sphinx_rtd_theme/locale/en/LC_MESSAGES/sphinx.po \
_themes/sphinx_rtd_theme/locale/es/LC_MESSAGES/sphinx.mo \
_themes/sphinx_rtd_theme/locale/es/LC_MESSAGES/sphinx.po \
_themes/sphinx_rtd_theme/locale/et/LC_MESSAGES/sphinx.mo \
_themes/sphinx_rtd_theme/locale/et/LC_MESSAGES/sphinx.po \
_themes/sphinx_rtd_theme/locale/fr/LC_MESSAGES/sphinx.mo \
_themes/sphinx_rtd_theme/locale/fr/LC_MESSAGES/sphinx.po \
_themes/sphinx_rtd_theme/locale/nl/LC_MESSAGES/sphinx.mo \
_themes/sphinx_rtd_theme/locale/nl/LC_MESSAGES/sphinx.po \
_themes/sphinx_rtd_theme/locale/pt_BR/LC_MESSAGES/sphinx.mo \
_themes/sphinx_rtd_theme/locale/pt_BR/LC_MESSAGES/sphinx.po \
_themes/sphinx_rtd_theme/locale/ru/LC_MESSAGES/sphinx.mo \
_themes/sphinx_rtd_theme/locale/ru/LC_MESSAGES/sphinx.po \
_themes/sphinx_rtd_theme/locale/sphinx.pot \
_themes/sphinx_rtd_theme/locale/sv/LC_MESSAGES/sphinx.mo \
_themes/sphinx_rtd_theme/locale/sv/LC_MESSAGES/sphinx.po \
_themes/sphinx_rtd_theme/locale/tr/LC_MESSAGES/sphinx.mo \
_themes/sphinx_rtd_theme/locale/tr/LC_MESSAGES/sphinx.po \
_themes/sphinx_rtd_theme/locale/zh_CN/LC_MESSAGES/sphinx.mo \
_themes/sphinx_rtd_theme/locale/zh_CN/LC_MESSAGES/sphinx.po \
_themes/sphinx_rtd_theme/search.html \
_themes/sphinx_rtd_theme/searchbox.html \
_themes/sphinx_rtd_theme/static/css/badge_only.css \
_themes/sphinx_rtd_theme/static/css/fonts/Roboto-Slab-Bold.woff \
_themes/sphinx_rtd_theme/static/css/fonts/Roboto-Slab-Bold.woff2 \
_themes/sphinx_rtd_theme/static/css/fonts/Roboto-Slab-Regular.woff \
_themes/sphinx_rtd_theme/static/css/fonts/Roboto-Slab-Regular.woff2 \
_themes/sphinx_rtd_theme/static/css/fonts/fontawesome-webfont.eot \
_themes/sphinx_rtd_theme/static/css/fonts/fontawesome-webfont.svg \
_themes/sphinx_rtd_theme/static/css/fonts/fontawesome-webfont.ttf \
_themes/sphinx_rtd_theme/static/css/fonts/fontawesome-webfont.woff \
_themes/sphinx_rtd_theme/static/css/fonts/fontawesome-webfont.woff2 \
_themes/sphinx_rtd_theme/static/css/fonts/lato-bold-italic.woff \
_themes/sphinx_rtd_theme/static/css/fonts/lato-bold-italic.woff2 \
_themes/sphinx_rtd_theme/static/css/fonts/lato-bold.woff \
_themes/sphinx_rtd_theme/static/css/fonts/lato-bold.woff2 \
_themes/sphinx_rtd_theme/static/css/fonts/lato-normal-italic.woff \
_themes/sphinx_rtd_theme/static/css/fonts/lato-normal-italic.woff2 \
_themes/sphinx_rtd_theme/static/css/fonts/lato-normal.woff \
_themes/sphinx_rtd_theme/static/css/fonts/lato-normal.woff2 \
_themes/sphinx_rtd_theme/static/css/theme.css \
_themes/sphinx_rtd_theme/static/js/badge_only.js \
_themes/sphinx_rtd_theme/static/js/theme.js \
_themes/sphinx_rtd_theme/theme.conf \
_themes/sphinx_rtd_theme/versions.html \
$(man_MANS) \ $(man_MANS) \
bash_completion/nghttp \ bash_completion/nghttp \
bash_completion/nghttpd \ bash_completion/nghttpd \
@@ -270,7 +241,7 @@ EXTRA_DIST = \
# You can set these variables from the command line. # You can set these variables from the command line.
SPHINXOPTS = SPHINXOPTS =
SPHINXBUILD = sphinx-build SPHINXBUILD ?= sphinx-build
PAPER = PAPER =
BUILDDIR = manual BUILDDIR = manual

View File

@@ -68,7 +68,7 @@ The example follows::
* Callback function invoked when |session| wants to send data to * Callback function invoked when |session| wants to send data to
* remote peer. * remote peer.
*/ */
typedef ssize_t (*nghttp2_send_callback) typedef nghttp2_ssize (*nghttp2_send_callback2)
(nghttp2_session *session, (nghttp2_session *session,
const uint8_t *data, size_t length, int flags, void *user_data); const uint8_t *data, size_t length, int flags, void *user_data);

View File

@@ -493,7 +493,7 @@ class RubyModuleIndex(Index):
# list of all modules, sorted by module name # list of all modules, sorted by module name
modules = sorted(_iteritems(self.domain.data['modules']), modules = sorted(_iteritems(self.domain.data['modules']),
key=lambda x: x[0].lower()) key=lambda x: x[0].lower())
# sort out collapsable modules # sort out collapsible modules
prev_modname = '' prev_modname = ''
num_toplevels = 0 num_toplevels = 0
for modname, (docname, synopsis, platforms, deprecated) in modules: for modname, (docname, synopsis, platforms, deprecated) in modules:

View File

@@ -1,34 +0,0 @@
"""
Sphinx Read the Docs theme.
From https://github.com/ryan-roemer/sphinx-bootstrap-theme.
"""
from os import path
import sphinx
__version__ = '0.5.0'
__version_full__ = __version__
def get_html_theme_path():
"""Return list of HTML theme paths."""
cur_dir = path.abspath(path.dirname(path.dirname(__file__)))
return cur_dir
# See http://www.sphinx-doc.org/en/stable/theming.html#distribute-your-theme-as-a-python-package
def setup(app):
if sphinx.version_info >= (1, 6, 0):
# Register the theme that can be referenced without adding a theme path
app.add_html_theme('sphinx_rtd_theme', path.abspath(path.dirname(__file__)))
if sphinx.version_info >= (1, 8, 0):
# Add Sphinx message catalog for newer versions of Sphinx
# See http://www.sphinx-doc.org/en/master/extdev/appapi.html#sphinx.application.Sphinx.add_message_catalog
rtd_locale_path = path.join(path.abspath(path.dirname(__file__)), 'locale')
app.add_message_catalog('sphinx', rtd_locale_path)
return {'parallel_read_safe': True, 'parallel_write_safe': True}

View File

@@ -1,84 +0,0 @@
{# Support for Sphinx 1.3+ page_source_suffix, but don't break old builds. #}
{% if page_source_suffix %}
{% set suffix = page_source_suffix %}
{% else %}
{% set suffix = source_suffix %}
{% endif %}
{% if meta is defined and meta is not none %}
{% set check_meta = True %}
{% else %}
{% set check_meta = False %}
{% endif %}
{% if check_meta and 'github_url' in meta %}
{% set display_github = True %}
{% endif %}
{% if check_meta and 'bitbucket_url' in meta %}
{% set display_bitbucket = True %}
{% endif %}
{% if check_meta and 'gitlab_url' in meta %}
{% set display_gitlab = True %}
{% endif %}
{% set display_vcs_links = display_vcs_links if display_vcs_links is defined else True %}
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
{% block breadcrumbs %}
<li><a href="{{ pathto(master_doc) }}" class="icon icon-home"></a> &raquo;</li>
{% for doc in parents %}
<li><a href="{{ doc.link|e }}">{{ doc.title }}</a> &raquo;</li>
{% endfor %}
<li>{{ title }}</li>
{% endblock %}
{% block breadcrumbs_aside %}
<li class="wy-breadcrumbs-aside">
{% if hasdoc(pagename) and display_vcs_links %}
{% if display_github %}
{% if check_meta and 'github_url' in meta %}
<!-- User defined GitHub URL -->
<a href="{{ meta['github_url'] }}" class="fa fa-github"> {{ _('Edit on GitHub') }}</a>
{% else %}
<a href="https://{{ github_host|default("github.com") }}/{{ github_user }}/{{ github_repo }}/{{ theme_vcs_pageview_mode|default("blob") }}/{{ github_version }}{{ conf_py_path }}{{ pagename }}{{ suffix }}" class="fa fa-github"> {{ _('Edit on GitHub') }}</a>
{% endif %}
{% elif display_bitbucket %}
{% if check_meta and 'bitbucket_url' in meta %}
<!-- User defined Bitbucket URL -->
<a href="{{ meta['bitbucket_url'] }}" class="fa fa-bitbucket"> {{ _('Edit on Bitbucket') }}</a>
{% else %}
<a href="https://bitbucket.org/{{ bitbucket_user }}/{{ bitbucket_repo }}/src/{{ bitbucket_version}}{{ conf_py_path }}{{ pagename }}{{ suffix }}?mode={{ theme_vcs_pageview_mode|default("view") }}" class="fa fa-bitbucket"> {{ _('Edit on Bitbucket') }}</a>
{% endif %}
{% elif display_gitlab %}
{% if check_meta and 'gitlab_url' in meta %}
<!-- User defined GitLab URL -->
<a href="{{ meta['gitlab_url'] }}" class="fa fa-gitlab"> {{ _('Edit on GitLab') }}</a>
{% else %}
<a href="https://{{ gitlab_host|default("gitlab.com") }}/{{ gitlab_user }}/{{ gitlab_repo }}/{{ theme_vcs_pageview_mode|default("blob") }}/{{ gitlab_version }}{{ conf_py_path }}{{ pagename }}{{ suffix }}" class="fa fa-gitlab"> {{ _('Edit on GitLab') }}</a>
{% endif %}
{% elif show_source and source_url_prefix %}
<a href="{{ source_url_prefix }}{{ pagename }}{{ suffix }}">{{ _('View page source') }}</a>
{% elif show_source and has_source and sourcename %}
<a href="{{ pathto('_sources/' + sourcename, true)|e }}" rel="nofollow"> {{ _('View page source') }}</a>
{% endif %}
{% endif %}
</li>
{% endblock %}
</ul>
{% if (theme_prev_next_buttons_location == 'top' or theme_prev_next_buttons_location == 'both') and (next or prev) %}
<div class="rst-breadcrumbs-buttons" role="navigation" aria-label="breadcrumb navigation">
{% if next %}
<a href="{{ next.link|e }}" class="btn btn-neutral float-right" title="{{ next.title|striptags|e }}" accesskey="n">{{ _('Next') }} <span class="fa fa-arrow-circle-right"></span></a>
{% endif %}
{% if prev %}
<a href="{{ prev.link|e }}" class="btn btn-neutral float-left" title="{{ prev.title|striptags|e }}" accesskey="p"><span class="fa fa-arrow-circle-left"></span> {{ _('Previous') }}</a>
{% endif %}
</div>
{% endif %}
<hr/>
</div>

View File

@@ -1,63 +0,0 @@
<footer>
{% if (theme_prev_next_buttons_location == 'bottom' or theme_prev_next_buttons_location == 'both') and (next or prev) %}
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
{% if next %}
<a href="{{ next.link|e }}" class="btn btn-neutral float-right" title="{{ next.title|striptags|e }}" accesskey="n" rel="next">{{ _('Next') }} <span class="fa fa-arrow-circle-right"></span></a>
{% endif %}
{% if prev %}
<a href="{{ prev.link|e }}" class="btn btn-neutral float-left" title="{{ prev.title|striptags|e }}" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> {{ _('Previous') }}</a>
{% endif %}
</div>
{% endif %}
<hr/>
<div role="contentinfo">
<p>
{%- if show_copyright %}
{%- if hasdoc('copyright') %}
{% set path = pathto('copyright') %}
{% set copyright = copyright|e %}
&copy; <a href="{{ path }}">{% trans %}Copyright{% endtrans %}</a> {{ copyright }}
{%- else %}
{% set copyright = copyright|e %}
&copy; {% trans %}Copyright{% endtrans %} {{ copyright }}
{%- endif %}
{%- endif %}
{%- if build_id and build_url %}
<span class="build">
{# Translators: Build is a noun, not a verb #}
{% trans %}Build{% endtrans %}
<a href="{{ build_url }}">{{ build_id }}</a>.
</span>
{%- elif commit %}
<span class="commit">
{# Translators: the phrase "revision" comes from Git, referring to a commit #}
{% trans %}Revision{% endtrans %} <code>{{ commit }}</code>.
</span>
{%- endif %}
{%- if last_updated %}
<span class="lastupdated">
{% trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %}
</span>
{%- endif %}
</p>
</div>
{%- if show_sphinx %}
{% set sphinx_web = '<a href="https://www.sphinx-doc.org/">Sphinx</a>' %}
{% set readthedocs_web = '<a href="https://readthedocs.org">Read the Docs</a>' %}
{# Translators: the variable "sphinx_web" is a link to the Sphinx project documentation with the text "Sphinx" #}
{% trans sphinx_web=sphinx_web, readthedocs_web=readthedocs_web %}Built with {{ sphinx_web }} using a{% endtrans %}
{# Translators: "theme" refers to a theme for Sphinx, which alters the appearance of the generated documenation #}
<a href="https://github.com/readthedocs/sphinx_rtd_theme">{% trans %}theme{% endtrans %}</a>
{# Translators: this is always used as "provided by Read the Docs", and should not imply Read the Docs is an author of the generated documentation. #}
{% trans %}provided by {{ readthedocs_web }}{% endtrans %}.
{%- endif %}
{%- block extrafooter %} {% endblock %}
</footer>

View File

@@ -1,241 +0,0 @@
{# TEMPLATE VAR SETTINGS #}
{%- set url_root = pathto('', 1) %}
{%- if url_root == '#' %}{% set url_root = '' %}{% endif %}
{%- if not embedded and docstitle %}
{%- set titlesuffix = " &mdash; "|safe + docstitle|e %}
{%- else %}
{%- set titlesuffix = "" %}
{%- endif %}
{%- set lang_attr = 'en' if language == None else (language | replace('_', '-')) %}
{%- set sphinx_writer = 'writer-html5' if html5_doctype else 'writer-html4' %}
<!DOCTYPE html>
<html class="{{ sphinx_writer }}" lang="{{ lang_attr }}" >
<head>
<meta charset="utf-8">
{{ metatags }}
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{% block htmltitle %}
<title>{{ title|striptags|e }}{{ titlesuffix }}</title>
{% endblock %}
{# CSS #}
<link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" />
<link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" />
{%- for css in css_files %}
{%- if css|attr("rel") %}
<link rel="{{ css.rel }}" href="{{ pathto(css.filename, 1) }}" type="text/css"{% if css.title is not none %} title="{{ css.title }}"{% endif %} />
{%- else %}
<link rel="stylesheet" href="{{ pathto(css, 1) }}" type="text/css" />
{%- endif %}
{%- endfor %}
{%- for cssfile in extra_css_files %}
<link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" />
{%- endfor %}
{# FAVICON #}
{% if favicon %}
<link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/>
{% endif %}
{# CANONICAL URL #}
{% if theme_canonical_url %}
<link rel="canonical" href="{{ theme_canonical_url }}{{ pagename }}.html"/>
{% endif %}
{# JAVASCRIPTS #}
{%- block scripts %}
<!--[if lt IE 9]>
<script src="{{ pathto('_static/js/html5shiv.min.js', 1) }}"></script>
<![endif]-->
{%- if not embedded %}
{# XXX Sphinx 1.8.0 made this an external js-file, quick fix until we refactor the template to inherert more blocks directly from sphinx #}
{% if sphinx_version >= "1.8.0" %}
<script type="text/javascript" id="documentation_options" data-url_root="{{ pathto('', 1) }}" src="{{ pathto('_static/documentation_options.js', 1) }}"></script>
{%- for scriptfile in script_files %}
{{ js_tag(scriptfile) }}
{%- endfor %}
{% else %}
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'{{ url_root }}',
VERSION:'{{ release|e }}',
LANGUAGE:'{{ language }}',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'{{ '' if no_search_suffix else file_suffix }}',
HAS_SOURCE: {{ has_source|lower }},
SOURCELINK_SUFFIX: '{{ sourcelink_suffix }}'
};
</script>
{%- for scriptfile in script_files %}
<script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script>
{%- endfor %}
{% endif %}
<script type="text/javascript" src="{{ pathto('_static/js/theme.js', 1) }}"></script>
{# OPENSEARCH #}
{%- if use_opensearch %}
<link rel="search" type="application/opensearchdescription+xml"
title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}"
href="{{ pathto('_static/opensearch.xml', 1) }}"/>
{%- endif %}
{%- endif %}
{%- endblock %}
{%- block linktags %}
{%- if hasdoc('about') %}
<link rel="author" title="{{ _('About these documents') }}" href="{{ pathto('about') }}" />
{%- endif %}
{%- if hasdoc('genindex') %}
<link rel="index" title="{{ _('Index') }}" href="{{ pathto('genindex') }}" />
{%- endif %}
{%- if hasdoc('search') %}
<link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}" />
{%- endif %}
{%- if hasdoc('copyright') %}
<link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}" />
{%- endif %}
{%- if next %}
<link rel="next" title="{{ next.title|striptags|e }}" href="{{ next.link|e }}" />
{%- endif %}
{%- if prev %}
<link rel="prev" title="{{ prev.title|striptags|e }}" href="{{ prev.link|e }}" />
{%- endif %}
{%- endblock %}
{%- block extrahead %} {% endblock %}
</head>
<body class="wy-body-for-nav">
{% block extrabody %} {% endblock %}
<div class="wy-grid-for-nav">
{# SIDE NAV, TOGGLES ON MOBILE #}
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" {% if theme_style_nav_header_background %} style="background: {{theme_style_nav_header_background}}" {% endif %}>
{% block sidebartitle %}
{% if logo and theme_logo_only %}
<a href="{{ pathto(master_doc) }}">
{% else %}
<a href="{{ pathto(master_doc) }}" class="icon icon-home"> {{ project }}
{% endif %}
{% if logo %}
{# Not strictly valid HTML, but it's the only way to display/scale
it properly, without weird scripting or heaps of work
#}
<img src="{{ pathto('_static/' + logo, 1) }}" class="logo" alt="{{ _('Logo') }}"/>
{% endif %}
</a>
{% if theme_display_version %}
{%- set nav_version = version %}
{% if READTHEDOCS and current_version %}
{%- set nav_version = current_version %}
{% endif %}
{% if nav_version %}
<div class="version">
{{ nav_version }}
</div>
{% endif %}
{% endif %}
{% include "searchbox.html" %}
{% endblock %}
</div>
{% block navigation %}
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
{% block menu %}
{#
The singlehtml builder doesn't handle this toctree call when the
toctree is empty. Skip building this for now.
#}
{% if 'singlehtml' not in builder %}
{% set global_toc = toctree(maxdepth=theme_navigation_depth|int,
collapse=theme_collapse_navigation|tobool,
includehidden=theme_includehidden|tobool,
titles_only=theme_titles_only|tobool) %}
{% endif %}
{% if global_toc %}
{{ global_toc }}
{% else %}
<!-- Local TOC -->
<div class="local-toc">{{ toc }}</div>
{% endif %}
{% endblock %}
</div>
{% endblock %}
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
{# MOBILE NAV, TRIGGLES SIDE NAV ON TOGGLE #}
<nav class="wy-nav-top" aria-label="top navigation">
{% block mobile_nav %}
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="{{ pathto(master_doc) }}">{{ project }}</a>
{% endblock %}
</nav>
<div class="wy-nav-content">
{%- block content %}
{% if theme_style_external_links|tobool %}
<div class="rst-content style-external-links">
{% else %}
<div class="rst-content">
{% endif %}
{% include "breadcrumbs.html" %}
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
{%- block document %}
<div itemprop="articleBody">
{% block body %}{% endblock %}
</div>
{% if self.comments()|trim %}
<div class="articleComments">
{% block comments %}{% endblock %}
</div>
{% endif%}
</div>
{%- endblock %}
{% include "footer.html" %}
</div>
{%- endblock %}
</div>
</section>
</div>
{% include "versions.html" %}
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable({{ 'true' if theme_sticky_navigation|tobool else 'false' }});
});
</script>
{# Do not conflict with RTD insertion of analytics script #}
{% if not READTHEDOCS %}
{% if theme_analytics_id %}
<!-- Theme Analytics -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', '{{ theme_analytics_id }}', 'auto');
ga('send', 'pageview');
</script>
{% endif %}
{% endif %}
{%- block footer %} {% endblock %}
</body>
</html>

View File

@@ -1,143 +0,0 @@
# English translations for sphinx_rtd_theme.
# Copyright (C) 2019 ORGANIZATION
# This file is distributed under the same license as the sphinx_rtd_theme
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
#
# Translators:
# Tom Kunze <transifex.com@tomabrafix.de>, 2019
#
msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
"Last-Translator: Tom Kunze <transifex.com@tomabrafix.de>, 2019\n"
"Language-Team: German (https://www.transifex.com/readthedocs/teams/101354/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
msgid "Edit on GitHub"
msgstr "Auf GitHub bearbeiten"
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
msgid "Edit on Bitbucket"
msgstr "Auf Bitbucket bearbeiten"
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
msgid "Edit on GitLab"
msgstr "Auf GitLab bearbeiten"
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
msgid "View page source"
msgstr "Quelltext anzeigen"
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
msgid "Next"
msgstr "Weiter"
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
msgid "Previous"
msgstr "Zurück"
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
#: sphinx_rtd_theme/layout.html:96
msgid "Copyright"
msgstr "Copyright"
#. Build is a noun, not a verb
#: sphinx_rtd_theme/footer.html:31
msgid "Build"
msgstr "Build"
#: sphinx_rtd_theme/footer.html:41
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Zuletzt aktualisiert am %(last_updated)s."
#. the variable "sphinx_web" is a link to the Sphinx project documentation
#. with
#. the text "Sphinx"
#: sphinx_rtd_theme/footer.html:52
#, python-format
msgid "Built with %(sphinx_web)s using a"
msgstr "Erstellt mit %(sphinx_web)s mit einem"
#. this is always used as "provided by Read the Docs", and should not imply
#. Read the Docs is an author of the generated documentation.
#: sphinx_rtd_theme/footer.html:56
#, python-format
msgid "provided by %(readthedocs_web)s"
msgstr "bereitgestellt von %(readthedocs_web)s"
#: sphinx_rtd_theme/layout.html:79
#, python-format
msgid "Search within %(docstitle)s"
msgstr "%(docstitle)s durchsuchen"
#: sphinx_rtd_theme/layout.html:87
msgid "About these documents"
msgstr "Über diese Dokumentation"
#: sphinx_rtd_theme/layout.html:90
msgid "Index"
msgstr "Index"
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
msgid "Search"
msgstr "Suche"
#: sphinx_rtd_theme/layout.html:128
msgid "Logo"
msgstr "Logo"
#: sphinx_rtd_theme/search.html:29
msgid "Please activate JavaScript to enable the search functionality."
msgstr "Bitte aktiviere JavaScript, um die Suchfunktion zu nutzen."
#. Search is a noun, not a verb
#: sphinx_rtd_theme/search.html:37
msgid "Search Results"
msgstr "Suchergebnisse"
#: sphinx_rtd_theme/search.html:39
msgid ""
"Your search did not match any documents. Please make sure that all words are"
" spelled correctly and that you've selected enough categories."
msgstr ""
"Es wurden keine mit deiner Suchanfrage übereinstimmenden Dokumente gefunden."
" Achte darauf, dass alle Wörter richtig geschrieben sind und dass genug "
"Kategorien ausgewählt sind."
#: sphinx_rtd_theme/searchbox.html:4
msgid "Search docs"
msgstr "Dokumentation durchsuchen"
#: sphinx_rtd_theme/versions.html:11
msgid "Versions"
msgstr "Versionen"
#. The phrase "Read the Docs" is not translated
#: sphinx_rtd_theme/versions.html:24
msgid "On Read the Docs"
msgstr "Auf Read the Docs"
#: sphinx_rtd_theme/versions.html:26
msgid "Project Home"
msgstr "Projektübersicht"
#: sphinx_rtd_theme/versions.html:29
msgid "Builds"
msgstr "Builds"
#~ msgid "Docs"
#~ msgstr "Dokumentation"
#~ msgid "Free document hosting provided by"
#~ msgstr "Kostenloses Dokumentationen-Hosting zur Verfügung gestellt von"

View File

@@ -1,156 +0,0 @@
# English translations for sphinx_rtd_theme.
# Copyright (C) 2019 ORGANIZATION
# This file is distributed under the same license as the sphinx_rtd_theme
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
#
msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
"PO-Revision-Date: 2019-07-16 15:43-0600\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n"
"Language-Team: en <LL@li.org>\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
msgid "Edit on GitHub"
msgstr ""
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
msgid "Edit on Bitbucket"
msgstr ""
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
msgid "Edit on GitLab"
msgstr ""
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
msgid "View page source"
msgstr ""
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
msgid "Next"
msgstr ""
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
msgid "Previous"
msgstr ""
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
#: sphinx_rtd_theme/layout.html:96
msgid "Copyright"
msgstr ""
#. Build is a noun, not a verb
#: sphinx_rtd_theme/footer.html:31
msgid "Build"
msgstr ""
#. the phrase "revision" comes from Git, referring to a commit
#: sphinx_rtd_theme/footer.html:37
msgid "Revision"
msgstr ""
#: sphinx_rtd_theme/footer.html:41
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr ""
#. the variable "sphinx_web" is a link to the Sphinx project documentation with
#. the text "Sphinx"
#: sphinx_rtd_theme/footer.html:52
#, python-format
msgid "Built with %(sphinx_web)s using a"
msgstr ""
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
#. generated documenation
#: sphinx_rtd_theme/footer.html:54
msgid "theme"
msgstr ""
#. this is always used as "provided by Read the Docs", and should not imply
#. Read the Docs is an author of the generated documentation.
#: sphinx_rtd_theme/footer.html:56
#, python-format
msgid "provided by %(readthedocs_web)s"
msgstr ""
#: sphinx_rtd_theme/layout.html:79
#, python-format
msgid "Search within %(docstitle)s"
msgstr ""
#: sphinx_rtd_theme/layout.html:87
msgid "About these documents"
msgstr ""
#: sphinx_rtd_theme/layout.html:90
msgid "Index"
msgstr ""
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
msgid "Search"
msgstr ""
#: sphinx_rtd_theme/layout.html:121
msgid "Documentation Home"
msgstr ""
#: sphinx_rtd_theme/layout.html:128
msgid "Logo"
msgstr ""
#: sphinx_rtd_theme/search.html:29
msgid "Please activate JavaScript to enable the search functionality."
msgstr ""
#. Search is a noun, not a verb
#: sphinx_rtd_theme/search.html:37
msgid "Search Results"
msgstr ""
#: sphinx_rtd_theme/search.html:39
msgid ""
"Your search did not match any documents. Please make sure that all words "
"are spelled correctly and that you've selected enough categories."
msgstr ""
#: sphinx_rtd_theme/searchbox.html:4
msgid "Search docs"
msgstr ""
#: sphinx_rtd_theme/versions.html:11
msgid "Versions"
msgstr ""
#: sphinx_rtd_theme/versions.html:17
msgid "Downloads"
msgstr ""
#. The phrase "Read the Docs" is not translated
#: sphinx_rtd_theme/versions.html:24
msgid "On Read the Docs"
msgstr ""
#: sphinx_rtd_theme/versions.html:26
msgid "Project Home"
msgstr ""
#: sphinx_rtd_theme/versions.html:29
msgid "Builds"
msgstr ""
#~ msgid "Docs"
#~ msgstr ""
#~ msgid "Free document hosting provided by"
#~ msgstr ""

View File

@@ -1,164 +0,0 @@
# English translations for sphinx_rtd_theme.
# Copyright (C) 2019 ORGANIZATION
# This file is distributed under the same license as the sphinx_rtd_theme
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
#
# Translators:
# Anthony <aj@ohess.org>, 2019
# Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
"Last-Translator: Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2020\n"
"Language-Team: Spanish (https://www.transifex.com/readthedocs/teams/101354/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
msgid "Edit on GitHub"
msgstr "Editar en GitHub"
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
msgid "Edit on Bitbucket"
msgstr "Editar en Bitbucket"
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
msgid "Edit on GitLab"
msgstr "Editar en GitLab"
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
msgid "View page source"
msgstr "Ver código fuente de la página"
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
msgid "Next"
msgstr "Siguiente"
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
msgid "Previous"
msgstr "Anterior"
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
#: sphinx_rtd_theme/layout.html:96
msgid "Copyright"
msgstr "Derechos de autor"
#. Build is a noun, not a verb
#: sphinx_rtd_theme/footer.html:31
msgid "Build"
msgstr "Construido"
#. the phrase "revision" comes from Git, referring to a commit
#: sphinx_rtd_theme/footer.html:37
msgid "Revision"
msgstr "Revisión"
#: sphinx_rtd_theme/footer.html:41
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Actualizado por última vez en %(last_updated)s."
#. the variable "sphinx_web" is a link to the Sphinx project documentation
#. with
#. the text "Sphinx"
#: sphinx_rtd_theme/footer.html:52
#, python-format
msgid "Built with %(sphinx_web)s using a"
msgstr "Construido con %(sphinx_web)s usando un"
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
#. generated documenation
#: sphinx_rtd_theme/footer.html:54
msgid "theme"
msgstr "tema"
#. this is always used as "provided by Read the Docs", and should not imply
#. Read the Docs is an author of the generated documentation.
#: sphinx_rtd_theme/footer.html:56
#, python-format
msgid "provided by %(readthedocs_web)s"
msgstr "proporcionado por %(readthedocs_web)s"
#: sphinx_rtd_theme/layout.html:79
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Buscar en %(docstitle)s"
#: sphinx_rtd_theme/layout.html:87
msgid "About these documents"
msgstr "Sobre esta documentación"
#: sphinx_rtd_theme/layout.html:90
msgid "Index"
msgstr "Índice"
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
msgid "Search"
msgstr "Búsqueda"
#: sphinx_rtd_theme/layout.html:121
msgid "Documentation Home"
msgstr "Inicio de Documentación"
#: sphinx_rtd_theme/layout.html:128
msgid "Logo"
msgstr "Logotipo"
#: sphinx_rtd_theme/search.html:29
msgid "Please activate JavaScript to enable the search functionality."
msgstr ""
"Por favor, active JavaScript para habilitar la funcionalidad de búsqueda."
#. Search is a noun, not a verb
#: sphinx_rtd_theme/search.html:37
msgid "Search Results"
msgstr "Resultados de la búsqueda"
#: sphinx_rtd_theme/search.html:39
msgid ""
"Your search did not match any documents. Please make sure that all words are"
" spelled correctly and that you've selected enough categories."
msgstr ""
"Su búsqueda no coincide con ningún documento. Por favor, asegúrese de que "
"todas las palabras estén correctamente escritas y que usted haya "
"seleccionado las suficientes categorías."
#: sphinx_rtd_theme/searchbox.html:4
msgid "Search docs"
msgstr "Buscar documentos"
#: sphinx_rtd_theme/versions.html:11
msgid "Versions"
msgstr "Versiones"
#: sphinx_rtd_theme/versions.html:17
msgid "Downloads"
msgstr "Descargas"
#. The phrase "Read the Docs" is not translated
#: sphinx_rtd_theme/versions.html:24
msgid "On Read the Docs"
msgstr "En Read the Docs"
#: sphinx_rtd_theme/versions.html:26
msgid "Project Home"
msgstr "Página de Proyecto"
#: sphinx_rtd_theme/versions.html:29
msgid "Builds"
msgstr "Construcciones"
#~ msgid "Docs"
#~ msgstr "Documentos"
#~ msgid "Free document hosting provided by"
#~ msgstr "Alojamiento gratuito de documentos proporcionado por"

View File

@@ -1,155 +0,0 @@
# English translations for sphinx_rtd_theme.
# Copyright (C) 2019 ORGANIZATION
# This file is distributed under the same license as the sphinx_rtd_theme
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
#
# Translators:
# Anthony <aj@ohess.org>, 2020
# Ivar Smolin <okul@linux.ee>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
"Last-Translator: Ivar Smolin <okul@linux.ee>, 2020\n"
"Language-Team: Estonian (https://www.transifex.com/readthedocs/teams/101354/et/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: et\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
msgid "Edit on GitHub"
msgstr "Muuda GitHubis"
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
msgid "Edit on Bitbucket"
msgstr "Muuda Bitbucketis"
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
msgid "Edit on GitLab"
msgstr "Muuda GitLabis"
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
msgid "View page source"
msgstr "Vaata lehe lähtekoodi"
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
msgid "Next"
msgstr "Järgmine"
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
msgid "Previous"
msgstr "Eelmine"
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
#: sphinx_rtd_theme/layout.html:96
msgid "Copyright"
msgstr "Autoriõigus"
#. Build is a noun, not a verb
#: sphinx_rtd_theme/footer.html:31
msgid "Build"
msgstr "Ehitus"
#. the phrase "revision" comes from Git, referring to a commit
#: sphinx_rtd_theme/footer.html:37
msgid "Revision"
msgstr "Redaktsioon"
#: sphinx_rtd_theme/footer.html:41
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Viimati uuendatud %(last_updated)s."
#. the variable "sphinx_web" is a link to the Sphinx project documentation
#. with
#. the text "Sphinx"
#: sphinx_rtd_theme/footer.html:52
#, python-format
msgid "Built with %(sphinx_web)s using a"
msgstr "Ehitatud %(sphinx_web)s'iga,"
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
#. generated documenation
#: sphinx_rtd_theme/footer.html:54
msgid "theme"
msgstr "kujundusteema"
#: sphinx_rtd_theme/layout.html:79
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Otsi dokumendist %(docstitle)s"
#: sphinx_rtd_theme/layout.html:87
msgid "About these documents"
msgstr "Nende dokumentide kirjeldused"
#: sphinx_rtd_theme/layout.html:90
msgid "Index"
msgstr "Indeks"
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
msgid "Search"
msgstr "Otsing"
#: sphinx_rtd_theme/layout.html:121
msgid "Documentation Home"
msgstr "Dokumentatsiooni kodu"
#: sphinx_rtd_theme/layout.html:128
msgid "Logo"
msgstr "Logo"
#: sphinx_rtd_theme/search.html:29
msgid "Please activate JavaScript to enable the search functionality."
msgstr "Otsimisfunktsiooni lubamiseks aktiveeri palun JavaScript"
#. Search is a noun, not a verb
#: sphinx_rtd_theme/search.html:37
msgid "Search Results"
msgstr "Otsingu tulemused"
#: sphinx_rtd_theme/search.html:39
msgid ""
"Your search did not match any documents. Please make sure that all words are"
" spelled correctly and that you've selected enough categories."
msgstr ""
"Sinu otsingule ei vastanud ükski dokument. Palun veendu, et kõik sisestatud "
"sõnad on õigesti kirjutatud ja sa oled valikud piisaval hulgal kategooriaid."
#: sphinx_rtd_theme/searchbox.html:4
msgid "Search docs"
msgstr "Otsi dokumente"
#: sphinx_rtd_theme/versions.html:11
msgid "Versions"
msgstr "Versioonid"
#: sphinx_rtd_theme/versions.html:17
msgid "Downloads"
msgstr "Allalaadimised"
#. The phrase "Read the Docs" is not translated
#: sphinx_rtd_theme/versions.html:24
msgid "On Read the Docs"
msgstr "Saidil Read the Docs"
#: sphinx_rtd_theme/versions.html:26
msgid "Project Home"
msgstr "Projekti kodu"
#: sphinx_rtd_theme/versions.html:29
msgid "Builds"
msgstr "Ehitused"
#~ msgid "Docs"
#~ msgstr "Dokumendid"
#~ msgid "Free document hosting provided by"
#~ msgstr "Dokumentatsiooni majutab tasuta"

View File

@@ -1,154 +0,0 @@
# English translations for sphinx_rtd_theme.
# Copyright (C) 2019 ORGANIZATION
# This file is distributed under the same license as the sphinx_rtd_theme
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
#
# Translators:
# Radina Matic <radina.matic@gmail.com>, 2020
# Anthony <aj@ohess.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
"Last-Translator: Anthony <aj@ohess.org>, 2020\n"
"Language-Team: French (https://www.transifex.com/readthedocs/teams/101354/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
msgid "Edit on GitHub"
msgstr "Éditer sur GitHub"
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
msgid "Edit on Bitbucket"
msgstr "Éditer sur Bitbucket"
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
msgid "Edit on GitLab"
msgstr "Éditer sur GitLab"
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
msgid "View page source"
msgstr "Afficher la source de la page"
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
msgid "Next"
msgstr "Suivant"
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
msgid "Previous"
msgstr "Précédent"
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
#: sphinx_rtd_theme/layout.html:96
msgid "Copyright"
msgstr "Droits d'auteur"
#. Build is a noun, not a verb
#: sphinx_rtd_theme/footer.html:31
msgid "Build"
msgstr "Compilation"
#. the phrase "revision" comes from Git, referring to a commit
#: sphinx_rtd_theme/footer.html:37
msgid "Revision"
msgstr "Révision"
#: sphinx_rtd_theme/footer.html:41
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Dernière mise à jour le %(last_updated)s."
#. the variable "sphinx_web" is a link to the Sphinx project documentation
#. with
#. the text "Sphinx"
#: sphinx_rtd_theme/footer.html:52
#, python-format
msgid "Built with %(sphinx_web)s using a"
msgstr "Compilé avec %(sphinx_web)s en utilisant un"
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
#. generated documenation
#: sphinx_rtd_theme/footer.html:54
msgid "theme"
msgstr "thème"
#. this is always used as "provided by Read the Docs", and should not imply
#. Read the Docs is an author of the generated documentation.
#: sphinx_rtd_theme/footer.html:56
#, python-format
msgid "provided by %(readthedocs_web)s"
msgstr "fourni par %(readthedocs_web)s"
#: sphinx_rtd_theme/layout.html:79
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Rechercher dans %(docstitle)s"
#: sphinx_rtd_theme/layout.html:87
msgid "About these documents"
msgstr "À propos de cette documentation"
#: sphinx_rtd_theme/layout.html:90
msgid "Index"
msgstr "Index"
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
msgid "Search"
msgstr "Rechercher"
#: sphinx_rtd_theme/layout.html:128
msgid "Logo"
msgstr "Logo"
#: sphinx_rtd_theme/search.html:29
msgid "Please activate JavaScript to enable the search functionality."
msgstr "Activez JavaScript pour accéder à la fonction de recherche."
#. Search is a noun, not a verb
#: sphinx_rtd_theme/search.html:37
msgid "Search Results"
msgstr "Résultats de la recherche"
#: sphinx_rtd_theme/search.html:39
msgid ""
"Your search did not match any documents. Please make sure that all words are"
" spelled correctly and that you've selected enough categories."
msgstr ""
"Votre recherche ne correspond à aucun document. Assurez-vous que tous les "
"mots sont correctement orthographiés et que vous avez sélectionné "
"suffisamment de catégories."
#: sphinx_rtd_theme/searchbox.html:4
msgid "Search docs"
msgstr "Rechercher docs"
#: sphinx_rtd_theme/versions.html:11
msgid "Versions"
msgstr "Versions"
#: sphinx_rtd_theme/versions.html:17
msgid "Downloads"
msgstr "Téléchargements"
#: sphinx_rtd_theme/versions.html:26
msgid "Project Home"
msgstr "Accueil du projet"
#: sphinx_rtd_theme/versions.html:29
msgid "Builds"
msgstr "Compilations"
#~ msgid "Docs"
#~ msgstr "Docs"
#~ msgid "Free document hosting provided by"
#~ msgstr "Hébergement gratuit de documents fourni par"

View File

@@ -1,157 +0,0 @@
# English translations for sphinx_rtd_theme.
# Copyright (C) 2019 ORGANIZATION
# This file is distributed under the same license as the sphinx_rtd_theme
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
#
# Translators:
# Jesse Tan, 2019
#
msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
"Last-Translator: Jesse Tan, 2019\n"
"Language-Team: Dutch (https://www.transifex.com/readthedocs/teams/101354/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
msgid "Edit on GitHub"
msgstr "Bewerk op GitHub"
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
msgid "Edit on Bitbucket"
msgstr "Bewerk op BitBucket"
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
msgid "Edit on GitLab"
msgstr "Bewerk op GitLab"
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
msgid "View page source"
msgstr "Bekijk paginabron"
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
msgid "Next"
msgstr "Volgende"
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
msgid "Previous"
msgstr "Vorige"
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
#: sphinx_rtd_theme/layout.html:96
msgid "Copyright"
msgstr "Copyright"
#. Build is a noun, not a verb
#: sphinx_rtd_theme/footer.html:31
msgid "Build"
msgstr "Bouwresultaat"
#. the phrase "revision" comes from Git, referring to a commit
#: sphinx_rtd_theme/footer.html:37
msgid "Revision"
msgstr "Revisie"
#: sphinx_rtd_theme/footer.html:41
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Laatste update op %(last_updated)s."
#. the variable "sphinx_web" is a link to the Sphinx project documentation
#. with
#. the text "Sphinx"
#: sphinx_rtd_theme/footer.html:52
#, python-format
msgid "Built with %(sphinx_web)s using a"
msgstr "Gebouwd met %(sphinx_web)s met een"
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
#. generated documenation
#: sphinx_rtd_theme/footer.html:54
msgid "theme"
msgstr "thema"
#. this is always used as "provided by Read the Docs", and should not imply
#. Read the Docs is an author of the generated documentation.
#: sphinx_rtd_theme/footer.html:56
#, python-format
msgid "provided by %(readthedocs_web)s"
msgstr "geleverd door %(readthedocs_web)s"
#: sphinx_rtd_theme/layout.html:79
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Zoek binnen %(docstitle)s"
#: sphinx_rtd_theme/layout.html:87
msgid "About these documents"
msgstr "Over deze documenten"
#: sphinx_rtd_theme/layout.html:90
msgid "Index"
msgstr "Index"
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
msgid "Search"
msgstr "Zoek"
#: sphinx_rtd_theme/layout.html:128
msgid "Logo"
msgstr "Logo"
#: sphinx_rtd_theme/search.html:29
msgid "Please activate JavaScript to enable the search functionality."
msgstr "Zet JavaScript aan om de zoekfunctie mogelijk te maken."
#. Search is a noun, not a verb
#: sphinx_rtd_theme/search.html:37
msgid "Search Results"
msgstr "Zoekresultaten"
#: sphinx_rtd_theme/search.html:39
msgid ""
"Your search did not match any documents. Please make sure that all words are"
" spelled correctly and that you've selected enough categories."
msgstr ""
"Zoekpoging vond geen documenten. Zorg ervoor dat alle woorden correct zijn "
"gespeld en dat voldoende categorieën zijn geselecteerd."
#: sphinx_rtd_theme/searchbox.html:4
msgid "Search docs"
msgstr "Zoek in documentatie"
#: sphinx_rtd_theme/versions.html:11
msgid "Versions"
msgstr "Versies"
#: sphinx_rtd_theme/versions.html:17
msgid "Downloads"
msgstr "Downloads"
#. The phrase "Read the Docs" is not translated
#: sphinx_rtd_theme/versions.html:24
msgid "On Read the Docs"
msgstr "Op Read the Docs"
#: sphinx_rtd_theme/versions.html:26
msgid "Project Home"
msgstr "Project Home"
#: sphinx_rtd_theme/versions.html:29
msgid "Builds"
msgstr "Bouwresultaten"
#~ msgid "Docs"
#~ msgstr "Documentatie"
#~ msgid "Free document hosting provided by"
#~ msgstr "Gratis hosting voor documentatie verzorgd door"

View File

@@ -1,159 +0,0 @@
# English translations for sphinx_rtd_theme.
# Copyright (C) 2019 ORGANIZATION
# This file is distributed under the same license as the sphinx_rtd_theme
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
#
# Translators:
# Rafael Fontenelle <rffontenelle@gmail.com>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
"Last-Translator: Rafael Fontenelle <rffontenelle@gmail.com>, 2020\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/readthedocs/teams/101354/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: pt_BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
msgid "Edit on GitHub"
msgstr "Editar no GitHub"
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
msgid "Edit on Bitbucket"
msgstr "Editar no Bitbucket"
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
msgid "Edit on GitLab"
msgstr "Editar no GitLab"
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
msgid "View page source"
msgstr "Ver código-fonte da página"
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
msgid "Next"
msgstr "Próximo"
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
msgid "Previous"
msgstr "Anterior"
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
#: sphinx_rtd_theme/layout.html:96
msgid "Copyright"
msgstr "Copyright"
#. Build is a noun, not a verb
#: sphinx_rtd_theme/footer.html:31
msgid "Build"
msgstr "Compilação"
#. the phrase "revision" comes from Git, referring to a commit
#: sphinx_rtd_theme/footer.html:37
msgid "Revision"
msgstr "Revisão"
#: sphinx_rtd_theme/footer.html:41
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Última atualização em %(last_updated)s."
#. the variable "sphinx_web" is a link to the Sphinx project documentation
#. with
#. the text "Sphinx"
#: sphinx_rtd_theme/footer.html:52
#, python-format
msgid "Built with %(sphinx_web)s using a"
msgstr "Compilado com %(sphinx_web)s usando um"
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
#. generated documenation
#: sphinx_rtd_theme/footer.html:54
msgid "theme"
msgstr "tema"
#. this is always used as "provided by Read the Docs", and should not imply
#. Read the Docs is an author of the generated documentation.
#: sphinx_rtd_theme/footer.html:56
#, python-format
msgid "provided by %(readthedocs_web)s"
msgstr "fornecido por %(readthedocs_web)s"
#: sphinx_rtd_theme/layout.html:79
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Pesquisar em %(docstitle)s"
#: sphinx_rtd_theme/layout.html:87
msgid "About these documents"
msgstr "Sobre esses documentos"
#: sphinx_rtd_theme/layout.html:90
msgid "Index"
msgstr "Índice"
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
msgid "Search"
msgstr "Pesquisar"
#: sphinx_rtd_theme/layout.html:128
msgid "Logo"
msgstr "Logo"
#: sphinx_rtd_theme/search.html:29
msgid "Please activate JavaScript to enable the search functionality."
msgstr ""
"Por favor, ative JavaScript para habilitar a funcionalidade de pesquisa."
#. Search is a noun, not a verb
#: sphinx_rtd_theme/search.html:37
msgid "Search Results"
msgstr "Resultados da pesquisa"
#: sphinx_rtd_theme/search.html:39
msgid ""
"Your search did not match any documents. Please make sure that all words are"
" spelled correctly and that you've selected enough categories."
msgstr ""
"A sua pesquisa não encontrou nenhum documento correspondente. Verifique se "
"todas as palavras estão escritas corretamente e se você selecionou "
"categorias suficientes."
#: sphinx_rtd_theme/searchbox.html:4
msgid "Search docs"
msgstr "Pesquisar documentos"
#: sphinx_rtd_theme/versions.html:11
msgid "Versions"
msgstr "Versões"
#: sphinx_rtd_theme/versions.html:17
msgid "Downloads"
msgstr "Downloads"
#. The phrase "Read the Docs" is not translated
#: sphinx_rtd_theme/versions.html:24
msgid "On Read the Docs"
msgstr "No Read the Docs"
#: sphinx_rtd_theme/versions.html:26
msgid "Project Home"
msgstr "Página inicial"
#: sphinx_rtd_theme/versions.html:29
msgid "Builds"
msgstr "Compilações"
#~ msgid "Docs"
#~ msgstr "Docs"
#~ msgid "Free document hosting provided by"
#~ msgstr "Hospedagem de documentos livres fornecida por"

View File

@@ -1,158 +0,0 @@
# English translations for sphinx_rtd_theme.
# Copyright (C) 2019 ORGANIZATION
# This file is distributed under the same license as the sphinx_rtd_theme
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
#
# Translators:
# Dmitry Shachnev <mitya57@gmail.com>, 2019
# lvv83 <vlozhkin83@gmail.com>, 2019
#
msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
"Last-Translator: lvv83 <vlozhkin83@gmail.com>, 2019\n"
"Language-Team: Russian (https://www.transifex.com/readthedocs/teams/101354/ru/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: ru\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
msgid "Edit on GitHub"
msgstr "Редактировать на GitHub"
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
msgid "Edit on Bitbucket"
msgstr "Редактировать на BitBucket"
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
msgid "Edit on GitLab"
msgstr "Редактировать на GitLab"
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
msgid "View page source"
msgstr "Просмотреть исходный код страницы"
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
msgid "Next"
msgstr "Следующая"
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
msgid "Previous"
msgstr "Предыдущая"
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
#: sphinx_rtd_theme/layout.html:96
msgid "Copyright"
msgstr "Авторские права"
#. Build is a noun, not a verb
#: sphinx_rtd_theme/footer.html:31
msgid "Build"
msgstr "Сборка"
#. the phrase "revision" comes from Git, referring to a commit
#: sphinx_rtd_theme/footer.html:37
msgid "Revision"
msgstr "Ревизия"
#: sphinx_rtd_theme/footer.html:41
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Последний раз обновлено %(last_updated)s."
#. the variable "sphinx_web" is a link to the Sphinx project documentation
#. with
#. the text "Sphinx"
#: sphinx_rtd_theme/footer.html:52
#, python-format
msgid "Built with %(sphinx_web)s using a"
msgstr "Собрано при помощи %(sphinx_web)s с использованием"
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
#. generated documenation
#: sphinx_rtd_theme/footer.html:54
msgid "theme"
msgstr "темы,"
#. this is always used as "provided by Read the Docs", and should not imply
#. Read the Docs is an author of the generated documentation.
#: sphinx_rtd_theme/footer.html:56
#, python-format
msgid "provided by %(readthedocs_web)s"
msgstr "предоставленной %(readthedocs_web)s"
#: sphinx_rtd_theme/layout.html:79
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Поиск в %(docstitle)s"
#: sphinx_rtd_theme/layout.html:87
msgid "About these documents"
msgstr "Об этих документах"
#: sphinx_rtd_theme/layout.html:90
msgid "Index"
msgstr "Алфавитный указатель"
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
msgid "Search"
msgstr "Поиск"
#: sphinx_rtd_theme/layout.html:128
msgid "Logo"
msgstr "Логотип"
#: sphinx_rtd_theme/search.html:29
msgid "Please activate JavaScript to enable the search functionality."
msgstr "Активируйте JavaScript, чтобы использовать функционал поиска."
#. Search is a noun, not a verb
#: sphinx_rtd_theme/search.html:37
msgid "Search Results"
msgstr "Результаты поиска"
#: sphinx_rtd_theme/search.html:39
msgid ""
"Your search did not match any documents. Please make sure that all words are"
" spelled correctly and that you've selected enough categories."
msgstr ""
"По Вашему запросу не найдено результатов. Пожалуйста, проверьте, что все "
"слова написаны правильно, и Вы выбрали нужные категории."
#: sphinx_rtd_theme/searchbox.html:4
msgid "Search docs"
msgstr "Поиск в документации"
#: sphinx_rtd_theme/versions.html:11
msgid "Versions"
msgstr "Версии"
#: sphinx_rtd_theme/versions.html:17
msgid "Downloads"
msgstr "Загрузки"
#. The phrase "Read the Docs" is not translated
#: sphinx_rtd_theme/versions.html:24
msgid "On Read the Docs"
msgstr "На Read the Docs"
#: sphinx_rtd_theme/versions.html:26
msgid "Project Home"
msgstr "Домашняя страница проекта"
#: sphinx_rtd_theme/versions.html:29
msgid "Builds"
msgstr "Сборки"
#~ msgid "Docs"
#~ msgstr "Документация"
#~ msgid "Free document hosting provided by"
#~ msgstr "Бесплатный хостинг документов, предоставленный"

View File

@@ -1,149 +0,0 @@
# Translations template for sphinx_rtd_theme.
# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the sphinx_rtd_theme
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
msgid "Edit on GitHub"
msgstr ""
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
msgid "Edit on Bitbucket"
msgstr ""
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
msgid "Edit on GitLab"
msgstr ""
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
msgid "View page source"
msgstr ""
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
msgid "Next"
msgstr ""
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
msgid "Previous"
msgstr ""
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
#: sphinx_rtd_theme/layout.html:96
msgid "Copyright"
msgstr ""
#. Build is a noun, not a verb
#: sphinx_rtd_theme/footer.html:31
msgid "Build"
msgstr ""
#. the phrase "revision" comes from Git, referring to a commit
#: sphinx_rtd_theme/footer.html:37
msgid "Revision"
msgstr ""
#: sphinx_rtd_theme/footer.html:41
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr ""
#. the variable "sphinx_web" is a link to the Sphinx project documentation with
#. the text "Sphinx"
#: sphinx_rtd_theme/footer.html:52
#, python-format
msgid "Built with %(sphinx_web)s using a"
msgstr ""
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
#. generated documenation
#: sphinx_rtd_theme/footer.html:54
msgid "theme"
msgstr ""
#. this is always used as "provided by Read the Docs", and should not imply
#. Read the Docs is an author of the generated documentation.
#: sphinx_rtd_theme/footer.html:56
#, python-format
msgid "provided by %(readthedocs_web)s"
msgstr ""
#: sphinx_rtd_theme/layout.html:79
#, python-format
msgid "Search within %(docstitle)s"
msgstr ""
#: sphinx_rtd_theme/layout.html:87
msgid "About these documents"
msgstr ""
#: sphinx_rtd_theme/layout.html:90
msgid "Index"
msgstr ""
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
msgid "Search"
msgstr ""
#: sphinx_rtd_theme/layout.html:121
msgid "Documentation Home"
msgstr ""
#: sphinx_rtd_theme/layout.html:128
msgid "Logo"
msgstr ""
#: sphinx_rtd_theme/search.html:29
msgid "Please activate JavaScript to enable the search functionality."
msgstr ""
#. Search is a noun, not a verb
#: sphinx_rtd_theme/search.html:37
msgid "Search Results"
msgstr ""
#: sphinx_rtd_theme/search.html:39
msgid ""
"Your search did not match any documents. Please make sure that all words "
"are spelled correctly and that you've selected enough categories."
msgstr ""
#: sphinx_rtd_theme/searchbox.html:4
msgid "Search docs"
msgstr ""
#: sphinx_rtd_theme/versions.html:11
msgid "Versions"
msgstr ""
#: sphinx_rtd_theme/versions.html:17
msgid "Downloads"
msgstr ""
#. The phrase "Read the Docs" is not translated
#: sphinx_rtd_theme/versions.html:24
msgid "On Read the Docs"
msgstr ""
#: sphinx_rtd_theme/versions.html:26
msgid "Project Home"
msgstr ""
#: sphinx_rtd_theme/versions.html:29
msgid "Builds"
msgstr ""

View File

@@ -1,158 +0,0 @@
# English translations for sphinx_rtd_theme.
# Copyright (C) 2019 ORGANIZATION
# This file is distributed under the same license as the sphinx_rtd_theme
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
#
# Translators:
# Daniel Holmberg <daniel.holmberg97@gmail.com>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
"Last-Translator: Daniel Holmberg <daniel.holmberg97@gmail.com>, 2020\n"
"Language-Team: Swedish (https://www.transifex.com/readthedocs/teams/101354/sv/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: sv\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
msgid "Edit on GitHub"
msgstr "Editera på GitHub"
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
msgid "Edit on Bitbucket"
msgstr "Editera på Bitbucket"
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
msgid "Edit on GitLab"
msgstr "Editera på GitLab"
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
msgid "View page source"
msgstr "Visa sidkälla"
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
msgid "Next"
msgstr "Nästa"
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
msgid "Previous"
msgstr "Tillbaka"
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
#: sphinx_rtd_theme/layout.html:96
msgid "Copyright"
msgstr "Upphovsrätt"
#. Build is a noun, not a verb
#: sphinx_rtd_theme/footer.html:31
msgid "Build"
msgstr "Bygg"
#. the phrase "revision" comes from Git, referring to a commit
#: sphinx_rtd_theme/footer.html:37
msgid "Revision"
msgstr "Ändra"
#: sphinx_rtd_theme/footer.html:41
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Senast uppdaterad %(last_updated)s."
#. the variable "sphinx_web" is a link to the Sphinx project documentation
#. with
#. the text "Sphinx"
#: sphinx_rtd_theme/footer.html:52
#, python-format
msgid "Built with %(sphinx_web)s using a"
msgstr "Gjord med %(sphinx_web)s med hjälp av"
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
#. generated documenation
#: sphinx_rtd_theme/footer.html:54
msgid "theme"
msgstr "tema"
#. this is always used as "provided by Read the Docs", and should not imply
#. Read the Docs is an author of the generated documentation.
#: sphinx_rtd_theme/footer.html:56
#, python-format
msgid "provided by %(readthedocs_web)s"
msgstr "erhållet av %(readthedocs_web)s"
#: sphinx_rtd_theme/layout.html:79
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Sök i %(docstitle)s"
#: sphinx_rtd_theme/layout.html:87
msgid "About these documents"
msgstr "Om dessa dokument"
#: sphinx_rtd_theme/layout.html:90
msgid "Index"
msgstr "Index"
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
msgid "Search"
msgstr "Sök"
#: sphinx_rtd_theme/layout.html:121
msgid "Documentation Home"
msgstr "Dokumentation Hem"
#: sphinx_rtd_theme/layout.html:128
msgid "Logo"
msgstr "Logo"
#: sphinx_rtd_theme/search.html:29
msgid "Please activate JavaScript to enable the search functionality."
msgstr ""
"Var vänlig och aktivera JavaScript för att möjliggöra sökfunktionaliteten."
#. Search is a noun, not a verb
#: sphinx_rtd_theme/search.html:37
msgid "Search Results"
msgstr "Sökresultat"
#: sphinx_rtd_theme/search.html:39
msgid ""
"Your search did not match any documents. Please make sure that all words are"
" spelled correctly and that you've selected enough categories."
msgstr ""
"Din sökning gav inga träffar. Var vänlig och se till att alla ord är rätt "
"stavade och att du har valt tillräckligt många kategorier."
#: sphinx_rtd_theme/searchbox.html:4
msgid "Search docs"
msgstr "Sök i dokumentationen"
#: sphinx_rtd_theme/versions.html:11
msgid "Versions"
msgstr "Versioner"
#: sphinx_rtd_theme/versions.html:17
msgid "Downloads"
msgstr "Nerladdningar"
#. The phrase "Read the Docs" is not translated
#: sphinx_rtd_theme/versions.html:24
msgid "On Read the Docs"
msgstr "På Read the Docs"
#: sphinx_rtd_theme/versions.html:26
msgid "Project Home"
msgstr "Projekt Hem"
#~ msgid "Docs"
#~ msgstr "Dokumentation"
#~ msgid "Free document hosting provided by"
#~ msgstr "Gratis dokumentations hysning erhållen av"

View File

@@ -1,147 +0,0 @@
# English translations for sphinx_rtd_theme.
# Copyright (C) 2019 ORGANIZATION
# This file is distributed under the same license as the sphinx_rtd_theme
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
#
# Translators:
# BouRock, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
"Last-Translator: BouRock, 2020\n"
"Language-Team: Turkish (https://www.transifex.com/readthedocs/teams/101354/tr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: tr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
msgid "Edit on GitHub"
msgstr "GitHub'da Düzenle"
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
msgid "Edit on Bitbucket"
msgstr "Bitbucket'ta Düzenle"
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
msgid "Edit on GitLab"
msgstr "GitLab'ta Düzenle"
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
msgid "View page source"
msgstr "Sayfa kaynağını görüntüle"
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
msgid "Next"
msgstr "Sonraki"
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
msgid "Previous"
msgstr "Önceki"
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
#: sphinx_rtd_theme/layout.html:96
msgid "Copyright"
msgstr "Telif hakkı"
#. Build is a noun, not a verb
#: sphinx_rtd_theme/footer.html:31
msgid "Build"
msgstr "Oluşturma"
#. the phrase "revision" comes from Git, referring to a commit
#: sphinx_rtd_theme/footer.html:37
msgid "Revision"
msgstr "Gözden geçirme"
#: sphinx_rtd_theme/footer.html:41
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Son olarak %(last_updated)s tarihinde güncellendi."
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
#. generated documenation
#: sphinx_rtd_theme/footer.html:54
msgid "theme"
msgstr "tema"
#. this is always used as "provided by Read the Docs", and should not imply
#. Read the Docs is an author of the generated documentation.
#: sphinx_rtd_theme/footer.html:56
#, python-format
msgid "provided by %(readthedocs_web)s"
msgstr "kullanılarak %(readthedocs_web)s tarafından sağlanmasıyla oluşturuldu"
#: sphinx_rtd_theme/layout.html:79
#, python-format
msgid "Search within %(docstitle)s"
msgstr "%(docstitle)s içinde ara"
#: sphinx_rtd_theme/layout.html:87
msgid "About these documents"
msgstr "Bu belgeler hakkında"
#: sphinx_rtd_theme/layout.html:90
msgid "Index"
msgstr "Dizin"
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
msgid "Search"
msgstr "Arama"
#: sphinx_rtd_theme/layout.html:128
msgid "Logo"
msgstr "Logo"
#: sphinx_rtd_theme/search.html:29
msgid "Please activate JavaScript to enable the search functionality."
msgstr ""
"Arama işlevselliğini etkinleştirmek için lütfen JavaScript'i etkinleştirin."
#. Search is a noun, not a verb
#: sphinx_rtd_theme/search.html:37
msgid "Search Results"
msgstr "Arama Sonuçları"
#: sphinx_rtd_theme/search.html:39
msgid ""
"Your search did not match any documents. Please make sure that all words are"
" spelled correctly and that you've selected enough categories."
msgstr ""
"Aramanız hiçbir belgeyle eşleşmedi. Lütfen tüm kelimelerin doğru "
"yazıldığından ve yeterli kategori seçtiğinizden emin olun."
#: sphinx_rtd_theme/searchbox.html:4
msgid "Search docs"
msgstr "Belgeleri arayın"
#: sphinx_rtd_theme/versions.html:11
msgid "Versions"
msgstr "Sürümler"
#: sphinx_rtd_theme/versions.html:17
msgid "Downloads"
msgstr "İndirmeler"
#. The phrase "Read the Docs" is not translated
#: sphinx_rtd_theme/versions.html:24
msgid "On Read the Docs"
msgstr "Read the Docs Üzerinde"
#: sphinx_rtd_theme/versions.html:26
msgid "Project Home"
msgstr "Proje Ana Sayfa"
#: sphinx_rtd_theme/versions.html:29
msgid "Builds"
msgstr "Oluşturmalar"
#~ msgid "Free document hosting provided by"
#~ msgstr "Ücretsiz belge barındırmayı sağlayan"

View File

@@ -1,151 +0,0 @@
# English translations for sphinx_rtd_theme.
# Copyright (C) 2019 ORGANIZATION
# This file is distributed under the same license as the sphinx_rtd_theme
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
#
# Translators:
# 王赛 <wangsai@bootcss.com>, 2019
# Anthony <aj@ohess.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
"Last-Translator: Anthony <aj@ohess.org>, 2020\n"
"Language-Team: Chinese (China) (https://www.transifex.com/readthedocs/teams/101354/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
msgid "Edit on GitHub"
msgstr "在 GitHub 上修改"
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
msgid "Edit on Bitbucket"
msgstr "在 Bitbucket 上修改"
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
msgid "Edit on GitLab"
msgstr "在 GitLab 上修改"
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
msgid "View page source"
msgstr "查看页面源码"
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
msgid "Next"
msgstr "下一页"
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
msgid "Previous"
msgstr "上一页"
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
#: sphinx_rtd_theme/layout.html:96
msgid "Copyright"
msgstr "版权所有"
#. Build is a noun, not a verb
#: sphinx_rtd_theme/footer.html:31
msgid "Build"
msgstr "构建"
#: sphinx_rtd_theme/footer.html:41
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "最后更新时间 %(last_updated)s。"
#. the variable "sphinx_web" is a link to the Sphinx project documentation
#. with
#. the text "Sphinx"
#: sphinx_rtd_theme/footer.html:52
#, python-format
msgid "Built with %(sphinx_web)s using a"
msgstr "利用 %(sphinx_web)s 构建,使用了 "
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
#. generated documenation
#: sphinx_rtd_theme/footer.html:54
msgid "theme"
msgstr "主题"
#. this is always used as "provided by Read the Docs", and should not imply
#. Read the Docs is an author of the generated documentation.
#: sphinx_rtd_theme/footer.html:56
#, python-format
msgid "provided by %(readthedocs_web)s"
msgstr "由 %(readthedocs_web)s开发"
#: sphinx_rtd_theme/layout.html:79
#, python-format
msgid "Search within %(docstitle)s"
msgstr "在 %(docstitle)s中搜索"
#: sphinx_rtd_theme/layout.html:87
msgid "About these documents"
msgstr "关于此文档"
#: sphinx_rtd_theme/layout.html:90
msgid "Index"
msgstr "索引"
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
msgid "Search"
msgstr "搜索"
#: sphinx_rtd_theme/layout.html:128
msgid "Logo"
msgstr "Logo"
#: sphinx_rtd_theme/search.html:29
msgid "Please activate JavaScript to enable the search functionality."
msgstr "请启用 JavaScript 以便使用搜索功能"
#. Search is a noun, not a verb
#: sphinx_rtd_theme/search.html:37
msgid "Search Results"
msgstr "搜索结果"
#: sphinx_rtd_theme/search.html:39
msgid ""
"Your search did not match any documents. Please make sure that all words are"
" spelled correctly and that you've selected enough categories."
msgstr "您的搜索没有匹配到任何文档。请确保所有单词拼写正确,并选择了足够多的类别。"
#: sphinx_rtd_theme/searchbox.html:4
msgid "Search docs"
msgstr "在文档中搜索"
#: sphinx_rtd_theme/versions.html:11
msgid "Versions"
msgstr "版本列表"
#: sphinx_rtd_theme/versions.html:17
msgid "Downloads"
msgstr "下载链接"
#. The phrase "Read the Docs" is not translated
#: sphinx_rtd_theme/versions.html:24
msgid "On Read the Docs"
msgstr "托管于 Read the Docs"
#: sphinx_rtd_theme/versions.html:26
msgid "Project Home"
msgstr "项目首页"
#: sphinx_rtd_theme/versions.html:29
msgid "Builds"
msgstr "构建"
#~ msgid "Docs"
#~ msgstr "文档"
#~ msgid "Free document hosting provided by"
#~ msgstr "此文档免费托管于"

View File

@@ -1,55 +0,0 @@
{#
basic/search.html
~~~~~~~~~~~~~~~~~
Template for the search page.
:copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
#}
{%- extends "layout.html" %}
{% set title = _('Search') %}
{% set display_vcs_links = False %}
{%- block scripts %}
{{ super() }}
<script type="text/javascript" src="{{ pathto('_static/searchtools.js', 1) }}"></script>
{%- endblock %}
{% block footer %}
<script type="text/javascript">
jQuery(function() { Search.loadIndex("{{ pathto('searchindex.js', 1) }}"); });
</script>
{# this is used when loading the search index using $.ajax fails,
such as on Chrome for documents on localhost #}
<script type="text/javascript" id="searchindexloader"></script>
{{ super() }}
{% endblock %}
{% block body %}
<noscript>
<div id="fallback" class="admonition warning">
<p class="last">
{% trans trimmed %}Please activate JavaScript to enable the search
functionality.{% endtrans %}
</p>
</div>
</noscript>
{% if search_performed %}
{# Translators: Search is a noun, not a verb #}
<h2>{{ _('Search Results') }}</h2>
{% if not search_results %}
<p>{{ _('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.') }}</p>
{% endif %}
{% endif %}
<div id="search-results">
{% if search_results %}
<ul>
{% for href, caption, context in search_results %}
<li>
<a href="{{ pathto(item.href) }}">{{ caption }}</a>
<p class="context">{{ context|e }}</p>
</li>
{% endfor %}
</ul>
{% endif %}
</div>
{% endblock %}

View File

@@ -1,9 +0,0 @@
{%- if builder != 'singlehtml' %}
<div role="search">
<form id="rtd-search-form" class="wy-form" action="{{ pathto('search') }}" method="get">
<input type="text" name="q" placeholder="{{ _('Search docs') }}" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
{%- endif %}

View File

@@ -1 +0,0 @@
.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 434 KiB

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}({4:function(e,t,r){}});

View File

@@ -1 +0,0 @@
!function(n){var e={};function t(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return n[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=n,t.c=e,t.d=function(n,e,i){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:i})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(i,o,function(e){return n[e]}.bind(null,o));return i},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){t(1),n.exports=t(3)},function(n,e,t){(function(){var e="undefined"!=typeof window?window.jQuery:t(2);n.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(n){var t=this;void 0===n&&(n=!0),t.isRunning||(t.isRunning=!0,e((function(e){t.init(e),t.reset(),t.win.on("hashchange",t.reset),n&&t.win.on("scroll",(function(){t.linkScroll||t.winScroll||(t.winScroll=!0,requestAnimationFrame((function(){t.onScroll()})))})),t.win.on("resize",(function(){t.winResize||(t.winResize=!0,requestAnimationFrame((function(){t.onResize()})))})),t.onResize()})))},enableSticky:function(){this.enable(!0)},init:function(n){n(document);var e=this;this.navBar=n("div.wy-side-scroll:first"),this.win=n(window),n(document).on("click","[data-toggle='wy-nav-top']",(function(){n("[data-toggle='wy-nav-shift']").toggleClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift")})).on("click",".wy-menu-vertical .current ul li a",(function(){var t=n(this);n("[data-toggle='wy-nav-shift']").removeClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift"),e.toggleCurrent(t),e.hashChange()})).on("click","[data-toggle='rst-current-version']",(function(){n("[data-toggle='rst-versions']").toggleClass("shift-up")})),n("table.docutils:not(.field-list,.footnote,.citation)").wrap("<div class='wy-table-responsive'></div>"),n("table.docutils.footnote").wrap("<div class='wy-table-responsive footnote'></div>"),n("table.docutils.citation").wrap("<div class='wy-table-responsive citation'></div>"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n('<span class="toctree-expand"></span>'),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}t.length>0&&($(".wy-menu-vertical .current").removeClass("current"),t.addClass("current"),t.closest("li.toctree-l1").addClass("current"),t.closest("li.toctree-l1").parent().addClass("current"),t.closest("li.toctree-l1").addClass("current"),t.closest("li.toctree-l2").addClass("current"),t.closest("li.toctree-l3").addClass("current"),t.closest("li.toctree-l4").addClass("current"),t.closest("li.toctree-l5").addClass("current"),t[0].scrollIntoView())}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current"),e.siblings().find("li.current").removeClass("current"),e.find("> ul li.current").removeClass("current"),e.toggleClass("current")}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t<e.length&&!window.requestAnimationFrame;++t)window.requestAnimationFrame=window[e[t]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[e[t]+"CancelAnimationFrame"]||window[e[t]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e,t){var i=(new Date).getTime(),o=Math.max(0,16-(i-n)),r=window.setTimeout((function(){e(i+o)}),o);return n=i+o,r}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(n){clearTimeout(n)})}()}).call(window)},function(n,e){n.exports=jQuery},function(n,e,t){}]);

View File

@@ -1,18 +0,0 @@
[theme]
inherit = basic
stylesheet = css/theme.css
pygments_style = default
[options]
canonical_url =
analytics_id =
collapse_navigation = True
sticky_navigation = True
navigation_depth = 4
includehidden = True
titles_only =
logo_only =
display_version = True
prev_next_buttons_location = bottom
style_external_links = False
style_nav_header_background =

View File

@@ -1,34 +0,0 @@
{% if READTHEDOCS %}
{# Add rst-badge after rst-versions for small badge style. #}
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: {{ current_version }}
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>{{ _('Versions') }}</dt>
{% for slug, url in versions %}
<dd><a href="{{ url }}">{{ slug }}</a></dd>
{% endfor %}
</dl>
<dl>
<dt>{{ _('Downloads') }}</dt>
{% for type, url in downloads %}
<dd><a href="{{ url }}">{{ type }}</a></dd>
{% endfor %}
</dl>
<dl>
{# Translators: The phrase "Read the Docs" is not translated #}
<dt>{{ _('On Read the Docs') }}</dt>
<dd>
<a href="//{{ PRODUCTION_DOMAIN }}/projects/{{ slug }}/?fromdocs={{ slug }}">{{ _('Project Home') }}</a>
</dd>
<dd>
<a href="//{{ PRODUCTION_DOMAIN }}/builds/{{ slug }}/?fromdocs={{ slug }}">{{ _('Builds') }}</a>
</dd>
</dl>
</div>
</div>
{% endif %}

View File

@@ -1,5 +0,0 @@
asio_http2.h
============
.. literalinclude:: @top_srcdir@/src/includes/nghttp2/asio_http2.h
:language: cpp

View File

@@ -1,5 +0,0 @@
asio_http2_client.h
===================
.. literalinclude:: @top_srcdir@/src/includes/nghttp2/asio_http2_client.h
:language: cpp

View File

@@ -1,5 +0,0 @@
asio_http2_server.h
===================
.. literalinclude:: @top_srcdir@/src/includes/nghttp2/asio_http2_server.h
:language: cpp

View File

@@ -8,7 +8,7 @@ _h2load()
_get_comp_words_by_ref cur prev _get_comp_words_by_ref cur prev
case $cur in case $cur in
-*) -*)
COMPREPLY=( $( compgen -W '--connection-window-bits --clients --verbose --ciphers --rate --no-tls-proto --connect-to --header-table-size --requests --log-file --base-uri --h1 --threads --npn-list --rate-period --rps --data --version --connection-inactivity-timeout --timing-script-file --encoder-header-table-size --max-concurrent-streams --connection-active-timeout --input-file --help --window-bits --warm-up-time --duration --header ' -- "$cur" ) ) COMPREPLY=( $( compgen -W '--requests --clients --threads --input-file --max-concurrent-streams --max-frame-size --window-bits --connection-window-bits --header --ciphers --tls13-ciphers --no-tls-proto --data --rate --rate-period --duration --warm-up-time --connection-active-timeout --connection-inactivity-timeout --timing-script-file --base-uri --alpn-list --h1 --header-table-size --encoder-header-table-size --log-file --qlog-file-base --connect-to --rps --groups --no-udp-gso --max-udp-payload-size --ktls --sni --verbose --version --help ' -- "$cur" ) )
;; ;;
*) *)
_filedir _filedir

View File

@@ -1,8 +1,6 @@
#!/usr/bin/env python #!/usr/bin/env python3
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from __future__ import unicode_literals
from __future__ import print_function
import subprocess import subprocess
import io import io
import re import re

Some files were not shown because too many files have changed in this diff Show More