Skip to content
This repository was archived by the owner on Aug 11, 2020. It is now read-only.

Commit b69367d

Browse files
jasnelladdaleaxdanbevgengjiawenLPardue
committed
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]>
1 parent 5f51577 commit b69367d

File tree

126 files changed

+26530
-457
lines changed

Some content is hidden

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

126 files changed

+26530
-457
lines changed

LICENSE

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1316,6 +1316,32 @@ 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+
13191345
- node-inspect, located at deps/node-inspect, is licensed as follows:
13201346
"""
13211347
Copyright Node.js contributors. All rights reserved.

configure.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,11 @@
117117
choices=valid_os,
118118
help='operating system to build for ({0})'.format(', '.join(valid_os)))
119119

120+
parser.add_option('--experimental-quic',
121+
action='store_true',
122+
dest='experimental_quic',
123+
help='enable experimental quic support')
124+
120125
parser.add_option('--gdb',
121126
action='store_true',
122127
dest='gdb',
@@ -259,6 +264,27 @@
259264
dest='shared_nghttp2_libpath',
260265
help='a directory to search for the shared nghttp2 DLLs')
261266

267+
shared_optgroup.add_option('--shared-ngtcp2',
268+
action='store_true',
269+
dest='shared_ngtcp2',
270+
help='link to a shared ngtcp2 DLL instead of static linking')
271+
272+
shared_optgroup.add_option('--shared-ngtcp2-includes',
273+
action='store',
274+
dest='shared_ngtcp2_includes',
275+
help='directory containing ngtcp2 header files')
276+
277+
shared_optgroup.add_option('--shared-ngtcp2-libname',
278+
action='store',
279+
dest='shared_ngtcp2_libname',
280+
default='ngtcp2',
281+
help='alternative lib name to link to [default: %default]')
282+
283+
shared_optgroup.add_option('--shared-ngtcp2-libpath',
284+
action='store',
285+
dest='shared_ngctp2_libpath',
286+
help='a directory to search for the shared ngtcp2 DLLs')
287+
262288
shared_optgroup.add_option('--shared-openssl',
263289
action='store_true',
264290
dest='shared_openssl',
@@ -1121,6 +1147,14 @@ def configure_node(o):
11211147
else:
11221148
o['variables']['debug_nghttp2'] = 'false'
11231149

1150+
if options.experimental_quic:
1151+
if options.shared_openssl:
1152+
raise Exception('QUIC requires modified version of OpenSSL and cannot be'
1153+
' enabled with --shared-openssl.')
1154+
o['variables']['experimental_quic'] = 1
1155+
else:
1156+
o['variables']['experimental_quic'] = 'false'
1157+
11241158
o['variables']['node_no_browser_globals'] = b(options.no_browser_globals)
11251159

11261160
o['variables']['node_shared'] = b(options.shared)
@@ -1248,6 +1282,8 @@ def without_ssl_error(option):
12481282
without_ssl_error('--openssl-no-asm')
12491283
if options.openssl_fips:
12501284
without_ssl_error('--openssl-fips')
1285+
if options.experimental_quic:
1286+
without_ssl_error('--experimental-quic')
12511287
return
12521288

12531289
if options.use_openssl_ca_store:

doc/api/errors.md

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1640,6 +1640,125 @@ A non-context-aware native addon was loaded in a process that disallows them.
16401640

16411641
A given value is out of the accepted range.
16421642

1643+
<a id="ERR_QUIC_CANNOT_SET_GROUPS"></a>
1644+
### `ERR_QUIC_CANNOT_SET_GROUPS`
1645+
1646+
> Stability: 1 - Experimental
1647+
1648+
TBD
1649+
1650+
<a id="ERR_QUIC_ERROR"></a>
1651+
### `ERR_QUIC_ERROR`
1652+
1653+
> Stability: 1 - Experimental
1654+
1655+
TBD
1656+
1657+
<a id="ERR_QUIC_TLS13_REQUIRED"></a>
1658+
### `ERR_QUIC_TLS13_REQUIRED`
1659+
1660+
> Stability: 1 - Experimental
1661+
1662+
TBD
1663+
1664+
<a id="ERR_QUICCLIENTSESSION_FAILED"></a>
1665+
### `ERR_QUICCLIENTSESSION_FAILED`
1666+
1667+
> Stability: 1 - Experimental
1668+
1669+
TBD
1670+
1671+
<a id="ERR_QUICCLIENTSESSION_FAILED_SETSOCKET"></a>
1672+
### `ERR_QUICCLIENTSESSION_FAILED_SETSOCKET`
1673+
1674+
> Stability: 1 - Experimental
1675+
1676+
TBD
1677+
1678+
<a id="ERR_QUICSESSION_DESTROYED"></a>
1679+
### `ERR_QUICSESSION_DESTROYED`
1680+
1681+
> Stability: 1 - Experimental
1682+
1683+
TBD
1684+
1685+
<a id="ERR_QUICSESSION_INVALID_DCID"></a>
1686+
### `ERR_QUICSESSION_INVALID_DCID`
1687+
1688+
> Stability: 1 - Experimental
1689+
1690+
TBD
1691+
1692+
<a id="ERR_QUICSESSION_UPDATEKEY"></a>
1693+
### `ERR_QUICSESSION_UPDATEKEY`
1694+
1695+
> Stability: 1 - Experimental
1696+
1697+
TBD
1698+
1699+
<a id="ERR_QUICSESSION_VERSION_NEGOTIATION"></a>
1700+
### `ERR_QUICSESSION_VERSION_NEGOTIATION`
1701+
1702+
> Stability: 1 - Experimental
1703+
1704+
TBD
1705+
1706+
<a id="ERR_QUICSOCKET_DESTROYED"></a>
1707+
### `ERR_QUICSOCKET_DESTROYED`
1708+
1709+
> Stability: 1 - Experimental
1710+
1711+
TBD
1712+
1713+
<a id="ERR_QUICSOCKET_INVALID_STATELESS_RESET_SECRET_LENGTH"></a>
1714+
### `ERR_QUICSOCKET_INVALID_STATELESS_RESET_SECRET_LENGTH`
1715+
1716+
> Stability: 1 - Experimental
1717+
1718+
TBD
1719+
1720+
<a id="ERR_QUICSOCKET_LISTENING"></a>
1721+
### `ERR_QUICSOCKET_LISTENING`
1722+
1723+
> Stability: 1 - Experimental
1724+
1725+
TBD
1726+
1727+
<a id="ERR_QUICSOCKET_UNBOUND"></a>
1728+
### `ERR_QUICSOCKET_UNBOUND`
1729+
1730+
> Stability: 1 - Experimental
1731+
1732+
TBD
1733+
1734+
<a id="ERR_QUICSTREAM_DESTROYED"></a>
1735+
### `ERR_QUICSTREAM_DESTROYED`
1736+
1737+
> Stability: 1 - Experimental
1738+
1739+
TBD
1740+
1741+
<a id="ERR_QUICSTREAM_INVALID_PUSH"></a>
1742+
### `ERR_QUICSTREAM_INVALID_PUSH`
1743+
1744+
> Stability: 1 - Experimental
1745+
1746+
TBD
1747+
1748+
<a id="ERR_QUICSTREAM_OPEN_FAILED"></a>
1749+
### `ERR_QUICSTREAM_OPEN_FAILED`
1750+
1751+
> Stability: 1 - Experimental
1752+
1753+
TBD
1754+
1755+
<a id="ERR_QUICSTREAM_UNSUPPORTED_PUSH"></a>
1756+
### `ERR_QUICSTREAM_UNSUPPORTED_PUSH`
1757+
1758+
> Stability: 1 - Experimental
1759+
1760+
TBD
1761+
16431762
<a id="ERR_REQUIRE_ESM"></a>
16441763
### `ERR_REQUIRE_ESM`
16451764

doc/api/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
* [Process](process.html)
4444
* [Punycode](punycode.html)
4545
* [Query Strings](querystring.html)
46+
* [QUIC](quic.html)
4647
* [Readline](readline.html)
4748
* [REPL](repl.html)
4849
* [Report](report.html)

0 commit comments

Comments
 (0)