X-Git-Url: https://git.pterodactylus.net/?p=xudocci.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fxdcc%2Fcore%2FCore.java;h=d39ee2bd0ffe241a933ad8ae0c844f99c21a93f4;hp=b020c1a74edc045d2db8cf46dbb220fb625be016;hb=d8c6d72caaa1ba75d09bd28f2bb10ae6f4964bf4;hpb=2769f52b856c2ebb1ec06836ca81591b7e99a4ba diff --git a/src/main/java/net/pterodactylus/xdcc/core/Core.java b/src/main/java/net/pterodactylus/xdcc/core/Core.java index b020c1a..d39ee2b 100644 --- a/src/main/java/net/pterodactylus/xdcc/core/Core.java +++ b/src/main/java/net/pterodactylus/xdcc/core/Core.java @@ -428,17 +428,17 @@ public class Core extends AbstractExecutionThreadService { } Map timesForNextConnects = new TreeMap<>(missingNetworks.stream() - .collect(Collectors.toMap(connectionBackoff::getBackoff, Function.identity(), (network, ignore) -> network))); + .collect(Collectors.toMap(connectionBackoff::getConnectionTime, Function.identity(), (network, ignore) -> network))); Optional> firstNetwork = Optional.fromNullable(timesForNextConnects.entrySet().stream().findFirst().orElse(null)); if (!firstNetwork.isPresent()) { continue; } - if (firstNetwork.get().getKey() > 0) { - eventBus.post(new GenericMessage(String.format("Waiting %d minutes to connect to %s...", TimeUnit.MILLISECONDS.toMinutes(firstNetwork.get().getKey()), firstNetwork.get().getValue().name()))); + if (firstNetwork.get().getKey() > System.currentTimeMillis()) { + eventBus.post(new GenericMessage(String.format("Will connect to %2$s at %1$tH:%1$tM...", firstNetwork.get().getKey(), firstNetwork.get().getValue().name()))); synchronized (syncObject) { try { - syncObject.wait(firstNetwork.get().getKey()); + syncObject.wait(firstNetwork.get().getKey() - System.currentTimeMillis()); } catch (InterruptedException ie1) { /* ignore. */ } @@ -446,6 +446,9 @@ public class Core extends AbstractExecutionThreadService { if (!isRunning()) { break; } + if (firstNetwork.get().getKey() > System.currentTimeMillis()) { + continue; + } } connectNetwork(firstNetwork.get().getValue()); @@ -655,30 +658,23 @@ public class Core extends AbstractExecutionThreadService { .forEach(bot -> networkBots.row(network.get()) .remove(bot.name())); + channelBanManager.ban(channel.get()); if (channelNotJoined.reason() == registeredNicknamesOnly) { - channels.remove(channel.get()); eventBus.post(new GenericMessage( format("Not trying to join %s anymore.", channel.get()))); - return; - } - if (channelNotJoined.reason() == inviteOnly) { - channelBanManager.ban(channel.get()); + } else if (channelNotJoined.reason() == inviteOnly) { eventBus.post(new GenericMessage( format("%s is invite-only, suspending join for a day.", channel.get()))); - return; - } - if (channelNotJoined.reason() == banned) { - channelBanManager.ban(channel.get()); + } else if (channelNotJoined.reason() == banned) { eventBus.post(new GenericMessage( format("Banned from %s, suspending join for a day.", channel.get()))); - return; + } else { + eventBus.post(new GenericMessage( + format("Could not join %s: %s", channelNotJoined.channel(), + channelNotJoined.reason()))); } - - eventBus.post(new GenericMessage( - format("Could not join %s: %s", channelNotJoined.channel(), - channelNotJoined.reason()))); } /**