Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPChannel.java12
-rw-r--r--plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPConnector.java11
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());
}
}

Back to the top