Fixed dispatching of data frames in another thread.

This commit is contained in:
Simone Bordet 2012-02-29 00:32:33 +01:00
parent 9575e8a7d2
commit 95ffdd8feb
1 changed files with 17 additions and 8 deletions

View File

@ -337,7 +337,7 @@ public class StandardSession implements ISession, Parser.Listener, Handler<Stand
}
@Override
public void onDataFrame(DataFrame frame, ByteBuffer data)
public void onDataFrame(final DataFrame frame, final ByteBuffer data)
{
logger.debug("Processing {}, {} data bytes", frame, data.remaining());
@ -348,12 +348,19 @@ public class StandardSession implements ISession, Parser.Listener, Handler<Stand
}
int streamId = frame.getStreamId();
IStream stream = streams.get(streamId);
final IStream stream = streams.get(streamId);
if (stream == null)
{
rst(new RstInfo(streamId, StreamStatus.INVALID_STREAM));
RstInfo rstInfo = new RstInfo(streamId, StreamStatus.INVALID_STREAM);
logger.debug("Unknown stream {}", rstInfo);
rst(rstInfo);
}
else
{
stream.post(new Runnable()
{
@Override
public void run()
{
stream.handle(frame, data);
if (stream.isClosed())
@ -362,6 +369,8 @@ public class StandardSession implements ISession, Parser.Listener, Handler<Stand
removeStream(stream);
}
}
});
}
}
@Override