Skip to content

Commit ccd3758

Browse files
authored
refactor(quic): introduce endpoint, 0rtt, cleanup (denoland#27444)
A QUIC endpoint is a UDP socket which multiplexes QUIC sessions, which may be initiated in either direction. This PR exposes endpoints and moves things around as needed. Now that endpoints can be reused between client connections, we have a way to share tls tickets between them and allow 0rtt. This interface currently works by conditionally returning a promise. Also cleaned up the rust op names, fixed some lingering problems in the data transmission, and switched to explicit error types.
1 parent 4b35ba6 commit ccd3758

File tree

8 files changed

+1059
-527
lines changed

8 files changed

+1059
-527
lines changed

ext/net/03_quic.js

Lines changed: 280 additions & 196 deletions
Large diffs are not rendered by default.

ext/net/lib.deno_net.d.ts

Lines changed: 208 additions & 95 deletions
Large diffs are not rendered by default.

ext/net/lib.rs

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ use deno_core::OpState;
2020
use deno_permissions::PermissionCheckError;
2121
use deno_tls::rustls::RootCertStore;
2222
use deno_tls::RootCertStoreProvider;
23+
pub use quic::QuicError;
2324

2425
pub const UNSTABLE_FEATURE_NAME: &str = "net";
2526

@@ -161,33 +162,42 @@ deno_core::extension!(deno_net,
161162
ops_unix::op_net_recv_unixpacket,
162163
ops_unix::op_net_send_unixpacket<P>,
163164

164-
quic::op_quic_accept,
165-
quic::op_quic_accept_bi,
166-
quic::op_quic_accept_incoming,
167-
quic::op_quic_accept_uni,
168-
quic::op_quic_close_connection,
169-
quic::op_quic_close_endpoint,
165+
quic::op_quic_connecting_0rtt,
166+
quic::op_quic_connecting_1rtt,
167+
quic::op_quic_connection_accept_bi,
168+
quic::op_quic_connection_accept_uni,
169+
quic::op_quic_connection_close,
170170
quic::op_quic_connection_closed,
171171
quic::op_quic_connection_get_protocol,
172172
quic::op_quic_connection_get_remote_addr,
173-
quic::op_quic_connect<P>,
173+
quic::op_quic_connection_get_server_name,
174+
quic::op_quic_connection_handshake,
175+
quic::op_quic_connection_open_bi,
176+
quic::op_quic_connection_open_uni,
177+
quic::op_quic_connection_get_max_datagram_size,
178+
quic::op_quic_connection_read_datagram,
179+
quic::op_quic_connection_send_datagram,
180+
quic::op_quic_endpoint_close,
181+
quic::op_quic_endpoint_connect<P>,
182+
quic::op_quic_endpoint_create<P>,
174183
quic::op_quic_endpoint_get_addr,
175-
quic::op_quic_get_send_stream_priority,
184+
quic::op_quic_endpoint_listen,
176185
quic::op_quic_incoming_accept,
177-
quic::op_quic_incoming_refuse,
186+
quic::op_quic_incoming_accept_0rtt,
178187
quic::op_quic_incoming_ignore,
179188
quic::op_quic_incoming_local_ip,
189+
quic::op_quic_incoming_refuse,
180190
quic::op_quic_incoming_remote_addr,
181191
quic::op_quic_incoming_remote_addr_validated,
182-
quic::op_quic_listen<P>,
183-
quic::op_quic_max_datagram_size,
184-
quic::op_quic_open_bi,
185-
quic::op_quic_open_uni,
186-
quic::op_quic_read_datagram,
187-
quic::op_quic_send_datagram,
188-
quic::op_quic_set_send_stream_priority,
192+
quic::op_quic_listener_accept,
193+
quic::op_quic_listener_stop,
194+
quic::op_quic_recv_stream_get_id,
195+
quic::op_quic_send_stream_get_id,
196+
quic::op_quic_send_stream_get_priority,
197+
quic::op_quic_send_stream_set_priority,
189198
],
190-
esm = [ "01_net.js", "02_tls.js", "03_quic.js" ],
199+
esm = [ "01_net.js", "02_tls.js" ],
200+
lazy_loaded_esm = [ "03_quic.js" ],
191201
options = {
192202
root_cert_store_provider: Option<Arc<dyn RootCertStoreProvider>>,
193203
unsafely_ignore_certificate_errors: Option<Vec<String>>,

0 commit comments

Comments
 (0)