Browse Source

SocketIOEncoder memory leak fixed

master
Nikita 12 years ago
parent
commit
d1771b0d67
  1. 8
      src/main/java/com/corundumstudio/socketio/SocketIOEncoder.java
  2. 3
      src/main/java/com/corundumstudio/socketio/SocketIOPipelineFactory.java

8
src/main/java/com/corundumstudio/socketio/SocketIOEncoder.java

@ -57,9 +57,10 @@ import com.corundumstudio.socketio.messages.XHRPacketMessage;
import com.corundumstudio.socketio.messages.XHROutMessage; import com.corundumstudio.socketio.messages.XHROutMessage;
import com.corundumstudio.socketio.parser.Encoder; import com.corundumstudio.socketio.parser.Encoder;
import com.corundumstudio.socketio.parser.Packet; import com.corundumstudio.socketio.parser.Packet;
import com.corundumstudio.socketio.transport.BaseClient;
@Sharable @Sharable
public class SocketIOEncoder extends SimpleChannelDownstreamHandler implements MessageHandler {
public class SocketIOEncoder extends SimpleChannelDownstreamHandler implements MessageHandler, Disconnectable {
class XHRClientEntry { class XHRClientEntry {
@ -216,4 +217,9 @@ public class SocketIOEncoder extends SimpleChannelDownstreamHandler implements M
sendMessage(xhrErrorMessage.getOrigin(), null, channel, message); sendMessage(xhrErrorMessage.getOrigin(), null, channel, message);
} }
@Override
public void onDisconnect(BaseClient client) {
sessionId2ActiveChannelId.remove(client.getSessionId());
}
} }

3
src/main/java/com/corundumstudio/socketio/SocketIOPipelineFactory.java

@ -181,13 +181,14 @@ public class SocketIOPipelineFactory implements ChannelPipelineFactory, Disconne
} }
public void onDisconnect(BaseClient client) { public void onDisconnect(BaseClient client) {
log.debug("Client with sessionId: {} disconnected", client.getSessionId());
heartbeatHandler.onDisconnect(client); heartbeatHandler.onDisconnect(client);
ackManager.onDisconnect(client); ackManager.onDisconnect(client);
xhrPollingTransport.onDisconnect(client); xhrPollingTransport.onDisconnect(client);
webSocketTransport.onDisconnect(client); webSocketTransport.onDisconnect(client);
flashSocketTransport.onDisconnect(client); flashSocketTransport.onDisconnect(client);
authorizeHandler.onDisconnect(client); authorizeHandler.onDisconnect(client);
socketIOEncoder.onDisconnect(client);
log.debug("Client with sessionId: {} disconnected", client.getSessionId());
} }
public void stop() { public void stop() {

Loading…
Cancel
Save