forked from Qortal/qortal
Network.shutdown() called Peer.shutdown() on each Peer while holding synchronization lock on this.connectedPeers. This would cause a problem during Peer.shutdown() as some other reachable code would also want synchronized access to this.connectedPeers. Typical symptoms would be log entries like: 2019-07-02 11:13:05 DEBUG Peer:512 - Message processor for peer 192.144.182.73:9889 failed to terminate Eventually Network.shutdown() would exit, releasing synchronization lock and awaking stuck Peer threads, which could then try to access repository (now closed) causing further log spam. Now it uses Network.getConnectedPeers to return duplicated List<Peer>, minimizing lock time on this.connectedPeers. Also made Peer main thread logging more informative when a IOException occurs, as most situations are harmless EOF or connection reset by peer.