Two dials to the same peer at once (for example, two services that
start together) shared one UDX socket. The second dial waited on a
socket that the first dial had already set up, timed out after 15 s,
and its cleanup closed the shared socket. The connection that the first
dial made then stopped 30 s after it opened, although the peer did not
close it.
- Swarm.dialPeer: concurrent calls to the same peer join one dial, as in
go-libp2p. A dial with forceDirectDial or forceFreshDial joins only a
dial with the same options.
- UDXTransport: each dial is its own UDX connection
(dart_udx 4.1.0, createSocket(shared: false)).
Also adds bin/interop_reqresp_client.dart, the Dart client for the
request/response interop test in go-libp2p-udx-transport.
Release 4.1.6. Requires dart_udx ^4.1.0.