Browse Source

'firstDataTimeout' param added

master
Nikita 10 years ago
parent
commit
f61b5e9801
  1. 14
      src/main/java/com/corundumstudio/socketio/Configuration.java
  2. 4
      src/main/java/com/corundumstudio/socketio/handler/AuthorizeHandler.java

14
src/main/java/com/corundumstudio/socketio/Configuration.java

@ -43,6 +43,7 @@ public class Configuration {
private int upgradeTimeout = 10000;
private int pingTimeout = 60000;
private int pingInterval = 25000;
private int firstDataTimeout = 5000;
private int maxHttpContentLength = 64 * 1024;
private int maxFramePayloadLength = 64 * 1024;
@ -508,5 +509,18 @@ public class Configuration {
return sslProtocol;
}
/**
* Timeout between channel opening and first data transfer
* Helps to avoid 'silent channel' attack and prevents
* 'Too many open files' problem in this case
*
* @param firstDataTimeout
*/
public void setFirstDataTimeout(int firstDataTimeout) {
this.firstDataTimeout = firstDataTimeout;
}
public int getFirstDataTimeout() {
return firstDataTimeout;
}
}

4
src/main/java/com/corundumstudio/socketio/handler/AuthorizeHandler.java

@ -95,7 +95,7 @@ public class AuthorizeHandler extends ChannelInboundHandlerAdapter implements Di
ctx.channel().close();
log.debug("Client with ip {} opens channel but not sended any data! Channel closed!", ctx.channel().remoteAddress());
}
}, configuration.getPingTimeout() + configuration.getPingInterval(), TimeUnit.MILLISECONDS);
}, configuration.getFirstDataTimeout(), TimeUnit.MILLISECONDS);
super.channelActive(ctx);
}
@ -202,8 +202,6 @@ public class AuthorizeHandler extends ChannelInboundHandlerAdapter implements Di
Namespace ns = namespacesHub.get(Namespace.DEFAULT_NAME);
if (!client.getNamespaces().contains(ns)) {
// connect(client.getSessionId());
Packet packet = new Packet(PacketType.MESSAGE);
packet.setSubType(PacketType.CONNECT);
client.send(packet);

Loading…
Cancel
Save