aboutsummaryrefslogtreecommitdiff
path: root/juick-xmpp
diff options
context:
space:
mode:
Diffstat (limited to 'juick-xmpp')
-rw-r--r--juick-xmpp/src/main/java/com/juick/components/CleaningUp.java37
-rw-r--r--juick-xmpp/src/main/java/com/juick/components/s2s/Connection.java9
2 files changed, 23 insertions, 23 deletions
diff --git a/juick-xmpp/src/main/java/com/juick/components/CleaningUp.java b/juick-xmpp/src/main/java/com/juick/components/CleaningUp.java
index 067af6e8..16747ea4 100644
--- a/juick-xmpp/src/main/java/com/juick/components/CleaningUp.java
+++ b/juick-xmpp/src/main/java/com/juick/components/CleaningUp.java
@@ -23,6 +23,8 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.inject.Inject;
+import java.time.Duration;
+import java.time.Instant;
/**
*
@@ -33,29 +35,26 @@ public class CleaningUp {
private static final Logger logger = LoggerFactory.getLogger(CleaningUp.class);
+ private static final int TIMEOUT_MINUTES = 15;
+
@Inject
XMPPServer xmpp;
@Scheduled(fixedDelay = 10000)
public void cleanUp() {
- long now = System.currentTimeMillis();
-
- xmpp.getOutConnections().stream().filter(c -> {
- int inactive = (int) ((double) (now - c.tsLocalData) / 1000.0);
- return inactive > 900;
- }).forEach(c -> {
- logger.info("closing idle outgoing connection to {}", c.to);
- c.closeConnection();
- xmpp.getOutConnections().remove(c);
- });
-
- xmpp.getInConnections().stream().filter(c -> {
- int inactive = (int) ((double) (now - c.tsRemoteData) / 1000.0);
- return inactive > 900;
- }).forEach(c -> {
- logger.info("closing idle incoming connection from {}", c.from);
- c.closeConnection();
- xmpp.getInConnections().remove(c);
- });
+ Instant now = Instant.now();
+ xmpp.getOutConnections().stream().filter(c -> Duration.between(now, c.updated).toMinutes() > TIMEOUT_MINUTES)
+ .forEach(c -> {
+ logger.info("closing idle outgoing connection to {}", c.to);
+ c.closeConnection();
+ xmpp.getOutConnections().remove(c);
+ });
+
+ xmpp.getInConnections().stream().filter(c -> Duration.between(now, c.updated).toMinutes() > TIMEOUT_MINUTES)
+ .forEach(c -> {
+ logger.info("closing idle incoming connection from {}", c.from);
+ c.closeConnection();
+ xmpp.getInConnections().remove(c);
+ });
}
}
diff --git a/juick-xmpp/src/main/java/com/juick/components/s2s/Connection.java b/juick-xmpp/src/main/java/com/juick/components/s2s/Connection.java
index 7fd036eb..86f276b4 100644
--- a/juick-xmpp/src/main/java/com/juick/components/s2s/Connection.java
+++ b/juick-xmpp/src/main/java/com/juick/components/s2s/Connection.java
@@ -33,6 +33,7 @@ import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.security.*;
import java.security.cert.CertificateException;
+import java.time.Instant;
import java.util.UUID;
/**
@@ -44,8 +45,8 @@ public class Connection {
protected static final Logger logger = LoggerFactory.getLogger(Connection.class);
public String streamID;
- public long tsCreated = 0;
- public long tsLocalData = 0;
+ public Instant created;
+ public Instant updated;
public long bytesLocal = 0;
public long packetsLocal = 0;
XMPPServer xmpp;
@@ -74,7 +75,7 @@ public class Connection {
public Connection(XMPPServer xmpp) throws XmlPullParserException, KeyStoreException, CertificateException, NoSuchAlgorithmException, IOException, UnrecoverableKeyException, KeyManagementException {
this.xmpp = xmpp;
- tsCreated = System.currentTimeMillis();
+ created = Instant.now();
KeyStore ks = KeyStore.getInstance("JKS");
try (InputStream ksIs = new FileInputStream(xmpp.keystore)) {
ks.load(ksIs, xmpp.keystorePassword.toCharArray());
@@ -111,7 +112,7 @@ public class Connection {
logger.error("send stanza failed", e);
}
- tsLocalData = System.currentTimeMillis();
+ updated = Instant.now();
bytesLocal += xml.length();
packetsLocal++;
}