forked from Qortal/qortal
Filter out on demand connections when using fixed network
This commit is contained in:
parent
58a7203ede
commit
9027cd290c
@ -522,14 +522,24 @@ public class Network {
|
|||||||
if (socketChannel == null) {
|
if (socketChannel == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
PeerAddress address = PeerAddress.fromSocket(socketChannel.socket());
|
||||||
|
List<String> fixedNetwork = Settings.getInstance().getFixedNetwork();
|
||||||
|
if (fixedNetwork != null && !fixedNetwork.isEmpty() && ipNotInFixedList(address, fixedNetwork)) {
|
||||||
|
try {
|
||||||
|
socketChannel.close();
|
||||||
|
LOGGER.debug("Connection discarded from peer {} as not in the fixed network list", address);
|
||||||
|
} catch (IOException e) {
|
||||||
|
// IGNORE
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Long now = NTP.getTime();
|
final Long now = NTP.getTime();
|
||||||
Peer newPeer;
|
Peer newPeer;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (now == null) {
|
if (now == null) {
|
||||||
LOGGER.debug("Connection discarded from peer {} due to lack of NTP sync",
|
LOGGER.debug("Connection discarded from peer {} due to lack of NTP sync", address);
|
||||||
PeerAddress.fromSocket(socketChannel.socket()));
|
|
||||||
socketChannel.close();
|
socketChannel.close();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -537,12 +547,12 @@ public class Network {
|
|||||||
synchronized (this.connectedPeers) {
|
synchronized (this.connectedPeers) {
|
||||||
if (connectedPeers.size() >= maxPeers) {
|
if (connectedPeers.size() >= maxPeers) {
|
||||||
// We have enough peers
|
// We have enough peers
|
||||||
LOGGER.debug("Connection discarded from peer {}", PeerAddress.fromSocket(socketChannel.socket()));
|
LOGGER.debug("Connection discarded from peer {}", address);
|
||||||
socketChannel.close();
|
socketChannel.close();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOGGER.debug("Connection accepted from peer {}", PeerAddress.fromSocket(socketChannel.socket()));
|
LOGGER.debug("Connection accepted from peer {}", address);
|
||||||
|
|
||||||
newPeer = new Peer(socketChannel, channelSelector);
|
newPeer = new Peer(socketChannel, channelSelector);
|
||||||
this.connectedPeers.add(newPeer);
|
this.connectedPeers.add(newPeer);
|
||||||
@ -561,6 +571,16 @@ public class Network {
|
|||||||
this.onPeerReady(newPeer);
|
this.onPeerReady(newPeer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean ipNotInFixedList(PeerAddress address, List<String> fixedNetwork) {
|
||||||
|
for (String ipAddress : fixedNetwork) {
|
||||||
|
String[] bits = ipAddress.split(":");
|
||||||
|
if (bits.length >= 1 && bits.length <= 2 && address.getHost().equals(bits[0])) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
private Peer getConnectablePeer(final Long now) throws InterruptedException {
|
private Peer getConnectablePeer(final Long now) throws InterruptedException {
|
||||||
// We can't block here so use tryRepository(). We don't NEED to connect a new peer.
|
// We can't block here so use tryRepository(). We don't NEED to connect a new peer.
|
||||||
try (Repository repository = RepositoryManager.tryRepository()) {
|
try (Repository repository = RepositoryManager.tryRepository()) {
|
||||||
|
Loading…
Reference in New Issue
Block a user