Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

transports/webrtc: Implement message framing #10

Merged
merged 44 commits into from
Oct 12, 2022
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
59617de
transports/webrtc/: Test message framing sizes
mxinden Aug 19, 2022
7dc3ce1
transports/webrtc/: Implement message framing
mxinden Aug 22, 2022
503e32f
transports/webrtc: Update protobuf
mxinden Aug 22, 2022
22e97a0
Merge remote-tracking branch 'melekes/anton/webrtc-transport' into we…
mxinden Sep 5, 2022
55da918
transports/webrtc/: Change semantic of RESET
mxinden Sep 5, 2022
11c016f
transports/webrtc/: Import message_proto types
mxinden Sep 10, 2022
1a6e4bd
transports/webrtc/: Refactor AsyncRead match arm
mxinden Sep 10, 2022
d46a171
transports/webrtc/: Handle flags when read side closed
mxinden Sep 10, 2022
9cd4ef7
transports/webrtc: Enforce maximum message length
mxinden Sep 11, 2022
31e019a
minor refactoring
melekes Sep 19, 2022
6f57ed6
rename PollDataChannel to Substream
melekes Sep 19, 2022
421a8ec
Merge branch 'master' into webrtc-message-framing
melekes Sep 19, 2022
4a1d4d6
add comments
melekes Sep 19, 2022
c6c5a96
add debug to handle_flag
melekes Sep 20, 2022
1b0b671
Create noise-prologue from server + client FP in fixed order
thomaseizinger Sep 26, 2022
aa38c81
Make `substream` a top-level module
thomaseizinger Sep 27, 2022
d0e918b
Replace nightly feature with refactoring
thomaseizinger Sep 27, 2022
171c613
Remove use of import rename
thomaseizinger Sep 27, 2022
cb481a6
Merge branch 'anton/webrtc-transport' into webrtc-message-framing
thomaseizinger Sep 27, 2022
6402665
Remove unused public API
thomaseizinger Sep 27, 2022
d537696
Make sure we don't construct substreams outside of this crate
thomaseizinger Sep 27, 2022
c8c2446
Don't expose public APIs for temporary workarounds
thomaseizinger Sep 27, 2022
d58f219
Remove pub where not necessary
thomaseizinger Sep 27, 2022
eb09d36
Remove utilities below usage
thomaseizinger Sep 27, 2022
99af2a1
Remove stale derive
thomaseizinger Sep 27, 2022
2d85ab4
Update docs
thomaseizinger Sep 27, 2022
6e2aeb1
Fix clippy warnings
thomaseizinger Sep 27, 2022
a6b2aac
Revert "Create noise-prologue from server + client FP in fixed order"
thomaseizinger Oct 6, 2022
afac31c
Merge branch 'master' into webrtc-message-framing
thomaseizinger Oct 7, 2022
8266fc4
Merge remote-tracking branch 'melekes/anton/webrtc-transport' into we…
thomaseizinger Oct 11, 2022
d2da793
Add initial test suite for substream state machine
thomaseizinger Oct 11, 2022
1b520a9
Precompute substream ID
thomaseizinger Oct 11, 2022
e483974
Implement new state machine
thomaseizinger Oct 11, 2022
29d6f74
Reset flag clears buffer
thomaseizinger Oct 11, 2022
d829fda
Remove substream ID
thomaseizinger Oct 11, 2022
058a153
Remove use of `map_err`
thomaseizinger Oct 11, 2022
e1df3c4
Replace error with `Poll::Pending`
thomaseizinger Oct 11, 2022
8c8feaa
Remove unnecessary dependency
thomaseizinger Oct 11, 2022
e6c177c
Group imports
thomaseizinger Oct 11, 2022
b2961a0
Add spec wording to constant
thomaseizinger Oct 11, 2022
f827f62
Introduce dedicated `State` submodule
thomaseizinger Oct 11, 2022
16433db
Send reset flag for dropped substreams
thomaseizinger Oct 11, 2022
834ec64
Fix clippy warnings
thomaseizinger Oct 11, 2022
7e0e46d
Fix docs
thomaseizinger Oct 11, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 5 additions & 6 deletions transports/webrtc/src/connection.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ use futures::{
oneshot::{self, Sender},
},
lock::Mutex as FutMutex,
{future::BoxFuture, prelude::*, ready},
{future::BoxFuture, ready},
};
use futures_lite::StreamExt;
use libp2p_core::muxing::{StreamMuxer, StreamMuxerEvent};
Expand Down Expand Up @@ -171,10 +171,7 @@ impl StreamMuxer for Connection {
let peer_conn = peer_conn.lock().await;

// Create a datachannel with label 'data'
let data_channel = peer_conn
.create_data_channel("data", None)
.map_err(Error::WebRTC)
.await?;
let data_channel = peer_conn.create_data_channel("data", None).await?;

trace!("Opening outbound substream {}", data_channel.id());

Expand Down Expand Up @@ -211,7 +208,9 @@ impl StreamMuxer for Connection {
let peer_conn = self.peer_conn.clone();
let fut = self.close_fut.get_or_insert(Box::pin(async move {
let peer_conn = peer_conn.lock().await;
peer_conn.close().await.map_err(Error::WebRTC)
peer_conn.close().await?;

Ok(())
}));

match ready!(fut.as_mut().poll(cx)) {
Expand Down
Loading