412318 HttpChannel fix multiple calls to _transport.completed() if handle() is called multiple times while the channel is COMPLETED
This commit is contained in:
parent
5d1225b60e
commit
2d911612a0
|
@ -235,8 +235,6 @@ public class HttpChannel<T> implements HttpParser.RequestHandler<T>, Runnable
|
||||||
public boolean handle()
|
public boolean handle()
|
||||||
{
|
{
|
||||||
LOG.debug("{} handle enter", this);
|
LOG.debug("{} handle enter", this);
|
||||||
if(_state.isCompleted())
|
|
||||||
return false;
|
|
||||||
|
|
||||||
setCurrentHttpChannel(this);
|
setCurrentHttpChannel(this);
|
||||||
|
|
||||||
|
@ -332,16 +330,11 @@ public class HttpChannel<T> implements HttpParser.RequestHandler<T>, Runnable
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
next=Next.RECYCLE;
|
_request.setHandled(true);
|
||||||
|
_transport.completed();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (next==Next.RECYCLE)
|
|
||||||
{
|
|
||||||
_request.setHandled(true);
|
|
||||||
_transport.completed();
|
|
||||||
}
|
|
||||||
|
|
||||||
LOG.debug("{} handle exit, result {}", this, next);
|
LOG.debug("{} handle exit, result {}", this, next);
|
||||||
|
|
||||||
return next!=Next.WAIT;
|
return next!=Next.WAIT;
|
||||||
|
|
|
@ -76,8 +76,7 @@ public class HttpChannelState
|
||||||
{
|
{
|
||||||
CONTINUE, // Continue handling the channel
|
CONTINUE, // Continue handling the channel
|
||||||
WAIT, // Wait for further events
|
WAIT, // Wait for further events
|
||||||
COMPLETE, // Complete the channel
|
COMPLETE // Complete the channel
|
||||||
RECYCLE, // Channel is completed
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private final HttpChannel<?> _channel;
|
private final HttpChannel<?> _channel;
|
||||||
|
@ -195,7 +194,7 @@ public class HttpChannelState
|
||||||
return Next.WAIT;
|
return Next.WAIT;
|
||||||
|
|
||||||
case COMPLETED:
|
case COMPLETED:
|
||||||
return Next.RECYCLE;
|
return Next.WAIT;
|
||||||
|
|
||||||
case REDISPATCH:
|
case REDISPATCH:
|
||||||
_state=State.REDISPATCHED;
|
_state=State.REDISPATCHED;
|
||||||
|
|
Loading…
Reference in New Issue