diff --git a/apps/sam/java/src/net/i2p/sam/SAMHandlerFactory.java b/apps/sam/java/src/net/i2p/sam/SAMHandlerFactory.java index fff86fe75..582854d87 100644 --- a/apps/sam/java/src/net/i2p/sam/SAMHandlerFactory.java +++ b/apps/sam/java/src/net/i2p/sam/SAMHandlerFactory.java @@ -46,6 +46,7 @@ class SAMHandlerFactory { try { Socket sock = s.socket(); sock.setSoTimeout(HELLO_TIMEOUT); + sock.setKeepAlive(true); String line = DataHelper.readLine(sock.getInputStream()); sock.setSoTimeout(0); if (line == null) { diff --git a/apps/sam/java/src/net/i2p/sam/SAMv3StreamSession.java b/apps/sam/java/src/net/i2p/sam/SAMv3StreamSession.java index a254d79a3..fe9561ced 100644 --- a/apps/sam/java/src/net/i2p/sam/SAMv3StreamSession.java +++ b/apps/sam/java/src/net/i2p/sam/SAMv3StreamSession.java @@ -263,6 +263,7 @@ class SAMv3StreamSession extends SAMStreamSession implements SAMv3Handler.Sessi // build pipes between both sockets try { + clientServerSock.socket().setKeepAlive(true); if (this.verbose) SAMv3Handler.notifyStreamIncomingConnection( clientServerSock, i2ps.getPeerDestination()); diff --git a/core/java/src/net/i2p/client/I2PSessionImpl.java b/core/java/src/net/i2p/client/I2PSessionImpl.java index ca193f77f..542e08809 100644 --- a/core/java/src/net/i2p/client/I2PSessionImpl.java +++ b/core/java/src/net/i2p/client/I2PSessionImpl.java @@ -488,6 +488,7 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2 try { I2PSSLSocketFactory fact = new I2PSSLSocketFactory(_context, false, "certificates/i2cp"); _socket = fact.createSocket(_hostname, _portNum); + _socket.setKeepAlive(true); } catch (GeneralSecurityException gse) { IOException ioe = new IOException("SSL Fail"); ioe.initCause(gse); @@ -495,6 +496,7 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2 } } else { _socket = new Socket(_hostname, _portNum); + _socket.setKeepAlive(true); } // _socket.setSoTimeout(1000000); // Uhmmm we could really-really use a real timeout, and handle it. OutputStream out = _socket.getOutputStream(); diff --git a/core/java/src/net/i2p/client/I2PSimpleSession.java b/core/java/src/net/i2p/client/I2PSimpleSession.java index b6f8bb7eb..ce0ef254f 100644 --- a/core/java/src/net/i2p/client/I2PSimpleSession.java +++ b/core/java/src/net/i2p/client/I2PSimpleSession.java @@ -89,6 +89,7 @@ class I2PSimpleSession extends I2PSessionImpl2 { } else { _socket = new Socket(_hostname, _portNum); } + _socket.setKeepAlive(true); OutputStream out = _socket.getOutputStream(); out.write(I2PClient.PROTOCOL_BYTE); out.flush(); diff --git a/router/java/src/net/i2p/router/client/ClientListenerRunner.java b/router/java/src/net/i2p/router/client/ClientListenerRunner.java index 8510fa071..e88339b0e 100644 --- a/router/java/src/net/i2p/router/client/ClientListenerRunner.java +++ b/router/java/src/net/i2p/router/client/ClientListenerRunner.java @@ -93,6 +93,7 @@ class ClientListenerRunner implements Runnable { if (validate(socket)) { if (_log.shouldLog(Log.DEBUG)) _log.debug("Connection received"); + socket.setKeepAlive(true); runConnection(socket); } else { if (_log.shouldLog(Log.WARN))