34 tests failed outside the Docker hole-punch suite. Fixing them found
these library bugs:
- udx: a dial reused a listener of the same family whatever its address,
so a listener bound to 127.0.0.1 could not reach another host (EADDR-
NOTAVAIL). A loopback listener now serves loopback targets only, and a
listener on all interfaces is preferred. Regression from 4.1.0.
- resource manager: changes passed up parent by parent, so the system
scope counted a stream once per path (peer, transient, protocol). Each
ancestor now counts a resource once, as in go-libp2p; setPeer,
setProtocol and setService move resources with ResourceScopeImpl
.reparent() between the scopes that change.
- swarm: a closed stream stayed in its connection's stream list. It is
removed again; SwarmConn.close() closes streams outside its lock, the
reason the removal had been dropped.
- host: BasicHost.create links itself to a Swarm with no host, so a
hand-built host answers identify instead of stalling peers.
- multistream: MessageTooLargeException and IncorrectVersionException
extend FormatException and keep their type instead of being wrapped
and logged at SEVERE; writing to a closed stream fails like a read.
- relaysvc: an error on the reachability stream was raised uncaught.
- ping: per-ping logs lowered from WARNING to FINE.
Tests brought up to current behaviour (timeouts, Noise framing and key
lifecycle, circuit address format, AutoRelay emission), mocks whose
close() never completed fixed, unawaited expectations awaited, and the
mock-based ping test replaced by one with two real hosts.
Suite: 909 passed, 4 failed (Docker hole-punch harness only).
Release 4.1.4.