Skip to content

Commit 5536044

Browse files
committedJun 16, 2020
quic: initial QUIC implementation
Co-authored-by: Anna Henningsen <[email protected]> Co-authored-by: Daniel Bevenius <[email protected]> Co-authored-by: gengjiawen <[email protected]> Co-authored-by: James M Snell <[email protected]> Co-authored-by: Lucas Pardue <[email protected]> Co-authored-by: Ouyang Yadong <[email protected]> Co-authored-by: Juan Jos<C3><A9> Arboleda <[email protected]> Co-authored-by: Trivikram Kamat <[email protected]> Co-authored-by: Denys Otrishko <[email protected]> PR-URL: nodejs#32379 Reviewed-By: Anna Henningsen <[email protected]>
1 parent bccb514 commit 5536044

File tree

102 files changed

+25305
-15
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

102 files changed

+25305
-15
lines changed
 

‎LICENSE

+52
Original file line numberDiff line numberDiff line change
@@ -1316,6 +1316,58 @@ The externally maintained libraries used by Node.js are:
13161316
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
13171317
"""
13181318

1319+
- ngtcp2, located at deps/ngtcp2, is licensed as follows:
1320+
"""
1321+
The MIT License
1322+
1323+
Copyright (c) 2016 ngtcp2 contributors
1324+
1325+
Permission is hereby granted, free of charge, to any person obtaining
1326+
a copy of this software and associated documentation files (the
1327+
"Software"), to deal in the Software without restriction, including
1328+
without limitation the rights to use, copy, modify, merge, publish,
1329+
distribute, sublicense, and/or sell copies of the Software, and to
1330+
permit persons to whom the Software is furnished to do so, subject to
1331+
the following conditions:
1332+
1333+
The above copyright notice and this permission notice shall be
1334+
included in all copies or substantial portions of the Software.
1335+
1336+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
1337+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
1338+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
1339+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
1340+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
1341+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
1342+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1343+
"""
1344+
1345+
- nghttp3, located at deps/nghttp3, is licensed as follows:
1346+
"""
1347+
The MIT License
1348+
1349+
Copyright (c) 2019 nghttp3 contributors
1350+
1351+
Permission is hereby granted, free of charge, to any person obtaining
1352+
a copy of this software and associated documentation files (the
1353+
"Software"), to deal in the Software without restriction, including
1354+
without limitation the rights to use, copy, modify, merge, publish,
1355+
distribute, sublicense, and/or sell copies of the Software, and to
1356+
permit persons to whom the Software is furnished to do so, subject to
1357+
the following conditions:
1358+
1359+
The above copyright notice and this permission notice shall be
1360+
included in all copies or substantial portions of the Software.
1361+
1362+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
1363+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
1364+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
1365+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
1366+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
1367+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
1368+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1369+
"""
1370+
13191371
- node-inspect, located at deps/node-inspect, is licensed as follows:
13201372
"""
13211373
Copyright Node.js contributors. All rights reserved.

‎configure.py

+57
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,11 @@
122122
dest='error_on_warn',
123123
help='Turn compiler warnings into errors for node core sources.')
124124

125+
parser.add_option('--experimental-quic',
126+
action='store_true',
127+
dest='experimental_quic',
128+
help='enable experimental quic support')
129+
125130
parser.add_option('--gdb',
126131
action='store_true',
127132
dest='gdb',
@@ -269,6 +274,48 @@
269274
dest='shared_nghttp2_libpath',
270275
help='a directory to search for the shared nghttp2 DLLs')
271276

277+
shared_optgroup.add_option('--shared-ngtcp2',
278+
action='store_true',
279+
dest='shared_ngtcp2',
280+
help='link to a shared ngtcp2 DLL instead of static linking')
281+
282+
shared_optgroup.add_option('--shared-ngtcp2-includes',
283+
action='store',
284+
dest='shared_ngtcp2_includes',
285+
help='directory containing ngtcp2 header files')
286+
287+
shared_optgroup.add_option('--shared-ngtcp2-libname',
288+
action='store',
289+
dest='shared_ngtcp2_libname',
290+
default='ngtcp2',
291+
help='alternative lib name to link to [default: %default]')
292+
293+
shared_optgroup.add_option('--shared-ngtcp2-libpath',
294+
action='store',
295+
dest='shared_ngtcp2_libpath',
296+
help='a directory to search for the shared ngtcp2 DLLs')
297+
298+
shared_optgroup.add_option('--shared-nghttp3',
299+
action='store_true',
300+
dest='shared_nghttp3',
301+
help='link to a shared nghttp3 DLL instead of static linking')
302+
303+
shared_optgroup.add_option('--shared-nghttp3-includes',
304+
action='store',
305+
dest='shared_nghttp3_includes',
306+
help='directory containing nghttp3 header files')
307+
308+
shared_optgroup.add_option('--shared-nghttp3-libname',
309+
action='store',
310+
dest='shared_nghttp3_libname',
311+
default='nghttp3',
312+
help='alternative lib name to link to [default: %default]')
313+
314+
shared_optgroup.add_option('--shared-nghttp3-libpath',
315+
action='store',
316+
dest='shared_nghttp3_libpath',
317+
help='a directory to search for the shared nghttp3 DLLs')
318+
272319
shared_optgroup.add_option('--shared-openssl',
273320
action='store_true',
274321
dest='shared_openssl',
@@ -1178,6 +1225,14 @@ def configure_node(o):
11781225
else:
11791226
o['variables']['debug_nghttp2'] = 'false'
11801227

1228+
if options.experimental_quic:
1229+
if options.shared_openssl:
1230+
raise Exception('QUIC requires a modified version of OpenSSL and '
1231+
'cannot be enabled when using --shared-openssl.')
1232+
o['variables']['experimental_quic'] = 1
1233+
else:
1234+
o['variables']['experimental_quic'] = 'false'
1235+
11811236
o['variables']['node_no_browser_globals'] = b(options.no_browser_globals)
11821237

11831238
o['variables']['node_shared'] = b(options.shared)
@@ -1309,6 +1364,8 @@ def without_ssl_error(option):
13091364
without_ssl_error('--openssl-fips')
13101365
if options.openssl_default_cipher_list:
13111366
without_ssl_error('--openssl-default-cipher-list')
1367+
if options.experimental_quic:
1368+
without_ssl_error('--experimental-quic')
13121369
return
13131370

13141371
if options.use_openssl_ca_store:

0 commit comments

Comments
 (0)
Please sign in to comment.