Open b-zee opened 3 months ago
Is this still applicable @b-zee?
Looks the same to me. When changing the ping
example to use WebRTC:
$ cargo run --release --bin=ping-example -- /ip4/127.0.0.1/udp/37273/webrtc-direct/certhash/uEiBRkOLFJL7kZS7pteN3RmJ20sRzpr7-Pie_ZqDak71SVA
Finished release [optimized] target(s) in 0.17s
Running `target/release/ping-example /ip4/127.0.0.1/udp/37273/webrtc-direct/certhash/uEiBRkOLFJL7kZS7pteN3RmJ20sRzpr7-Pie_ZqDak71SVA`
Dialed /ip4/127.0.0.1/udp/37273/webrtc-direct/certhash/uEiBRkOLFJL7kZS7pteN3RmJ20sRzpr7-Pie_ZqDak71SVA
Listening on "/ip4/127.0.0.1/udp/53704/webrtc-direct/certhash/uEiBqf_AbMhEV1YEhKh-13LtkrXZiAoEum-l-8mWoheGYsg"
ConnectionEstablished { peer_id: PeerId("12D3KooWQo8LAqhzEP81qhecgCHfbqSaqzBc7wMs9PMoyKtUDP7s"), connection_id: ConnectionId(1), endpoint: Dialer { address: "/ip4/127.0.0.1/udp/37273/webrtc-direct/certhash/uEiBRkOLFJL7kZS7pteN3RmJ20sRzpr7-Pie_ZqDak71SVA", role_override: Dialer }, num_established: 1, concurrent_dial_errors: Some([]), established_in: 206.669401ms }
Behaviour(Event { peer: PeerId("12D3KooWQo8LAqhzEP81qhecgCHfbqSaqzBc7wMs9PMoyKtUDP7s"), connection: ConnectionId(1), result: Ok(129.214µs) })
Behaviour(Event { peer: PeerId("12D3KooWQo8LAqhzEP81qhecgCHfbqSaqzBc7wMs9PMoyKtUDP7s"), connection: ConnectionId(1), result: Err(Other { error: Custom { kind: TimedOut, error: "ping protocol negotiation timed out" } }) })
Behaviour(Event { peer: PeerId("12D3KooWQo8LAqhzEP81qhecgCHfbqSaqzBc7wMs9PMoyKtUDP7s"), connection: ConnectionId(1), result: Err(Other { error: Custom { kind: TimedOut, error: "ping protocol negotiation timed out" } }) })
Behaviour(Event { peer: PeerId("12D3KooWQo8LAqhzEP81qhecgCHfbqSaqzBc7wMs9PMoyKtUDP7s"), connection: ConnectionId(1), result: Err(Other { error: Custom { kind: TimedOut, error: "ping protocol negotiation timed out" } }) })
Behaviour(Event { peer: PeerId("12D3KooWQo8LAqhzEP81qhecgCHfbqSaqzBc7wMs9PMoyKtUDP7s"), connection: ConnectionId(1), result: Err(Other { error: Custom { kind: TimedOut, error: "ping protocol negotiation timed out" } }) })
Behaviour(Event { peer: PeerId("12D3KooWQo8LAqhzEP81qhecgCHfbqSaqzBc7wMs9PMoyKtUDP7s"), connection: ConnectionId(1), result: Err(Other { error: Custom { kind: TimedOut, error: "ping protocol negotiation timed out" } }) })
Where it seems like the timeout goes on indefinitely. This is different from using either TCP or QUIC.
Summary
Two nodes are connected by WebRTC and start pinging. When one node disconnects, the ping will fail, but the failing connection will never be detected and Ping continues to timeout (
ping protocol negotiation timed out
). Replacing WebRTC with QUIC, aConnectionClosed
is emitted.Expected behavior
A
ConnectionClosed
event to be emittedActual behavior
I see
Stream dropped without graceful close, sending Reset
messages, but this occurs more often than just when a peer disappears.Relevant log output
No response
Possible Solution
No response
Version
0.53.2
Would you like to work on fixing this bug ?
No