This adds two checks after a successful conn.Dial
* if the remote peer is not who we wanted, close conn
* if the remove peer is outselves, close conn
(the second is redundant, but the codebase may evolve to
end up disabling the first check, so keeping the second
in place helps)
note:
Loopback addresses are actually sent out (they _have to be_,
in cases where there are >1 node in the same machine), so
many times when trying connections, nodes end up dialing
themselves.
Instead of erroring out, which would break the listener,
we instead log a message and continue. This is not an error,
the internet is a place with lots of probing + connection
failures.
This should handle early breakages, where a failing connection
would take out the listener entirely.
There are probably other errors we should be handling here,
like secure connection failures.
This commit makes all network tests use ZeroLocalTCPAddress
as the initial peer address, and then relies on
net.ListenAddresses()
This should get rid of the tcp addr clash problems.