Streaming: Add reset() to I2PSocket API

i2ptunnel: Reset I2P socket on TCP socket errors, in standard servers
that don't have protocol responses
SAM: Reset I2P socket on handler errors
This commit is contained in:
zzz
2017-03-13 14:09:27 +00:00
parent ad810de747
commit e7cfb2d6fe
11 changed files with 65 additions and 10 deletions

View File

@@ -210,13 +210,13 @@ public class I2PTunnelIRCServer extends I2PTunnelServer implements Runnable {
_log.error("Error connecting to IRC server " + remoteHost + ':' + remotePort, ex);
} catch (IOException ex) {
try {
socket.close();
socket.reset();
} catch (IOException ioe) {}
if (_log.shouldLog(Log.WARN))
_log.warn("Error while receiving the new IRC Connection", ex);
} catch (OutOfMemoryError oom) {
try {
socket.close();
socket.reset();
} catch (IOException ioe) {}
if (_log.shouldLog(Log.ERROR))
_log.error("OOM in IRC server", oom);

View File

@@ -680,7 +680,7 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
" [" + timeToHandle + ", socket create: " + (afterSocket-afterAccept) + "]");
} catch (SocketException ex) {
try {
socket.close();
socket.reset();
} catch (IOException ioe) {}
if (_log.shouldLog(Log.ERROR))
_log.error("Error connecting to server " + remoteHost + ':' + remotePort, ex);

View File

@@ -119,7 +119,7 @@ public class I2PTunnelDCCServer extends I2PTunnelServer {
_active.put(Integer.valueOf(myPort), local);
} catch (SocketException ex) {
try {
socket.close();
socket.reset();
} catch (IOException ioe) {}
_log.error("Error relaying incoming DCC connection to IRC client at " + local.ia + ':' + local.port, ex);
}

View File

@@ -87,6 +87,14 @@ class SocketWrapper implements I2PSocket {
socket.close();
}
/**
* Just calls close()
* @since 0.9.30
*/
public void reset() throws IOException {
close();
}
public boolean isClosed() {
return socket.isClosed();
}