diff options
-rw-r--r-- | plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPChannel.java | 12 | ||||
-rw-r--r-- | plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPConnector.java | 11 |
2 files changed, 21 insertions, 2 deletions
diff --git a/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPChannel.java b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPChannel.java index 6e5d20569d..804d642bea 100644 --- a/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPChannel.java +++ b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPChannel.java @@ -31,6 +31,8 @@ public class HTTPChannel extends Channel private CountDownLatch openAck = new CountDownLatch(1); + private boolean inverseRemoved; + public HTTPChannel() { } @@ -81,6 +83,16 @@ public class HTTPChannel extends Channel } } + public boolean isInverseRemoved() + { + return inverseRemoved; + } + + public void setInverseRemoved() + { + inverseRemoved = true; + } + @Override protected void doDeactivate() throws Exception { diff --git a/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPConnector.java b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPConnector.java index c470916e2a..71ed9bcb28 100644 --- a/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPConnector.java +++ b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPConnector.java @@ -198,8 +198,13 @@ public abstract class HTTPConnector extends Connector implements IHTTPConnector { if (super.removeChannel(channel)) { - ChannelOperation operation = new CloseChannelOperation((HTTPChannel)channel); - outputOperations.add(operation); + HTTPChannel httpChannel = (HTTPChannel)channel; + if (!httpChannel.isInverseRemoved()) + { + ChannelOperation operation = new CloseChannelOperation(httpChannel); + outputOperations.add(operation); + } + return true; } @@ -455,6 +460,8 @@ public abstract class HTTPConnector extends Connector implements IHTTPConnector @Override public void doEexecute(HTTPChannel channel) { + // TODO Fix protocol between Channel.close and Connector.removeChannel/inverserRemoveChannel + channel.setInverseRemoved(); inverseRemoveChannel(channel.getChannelID(), channel.getChannelIndex()); } } |