@Override public void onDataFrame(DataFrame frame, ByteBuffer data) { notifyIdle(idleListener, false); try { LOG.debug("Processing {}, {} data bytes", frame, data.remaining()); if (goAwaySent.get()) { LOG.debug("Skipped processing of {}", frame); return; } int streamId = frame.getStreamId(); IStream stream = streams.get(streamId); if (stream == null) { RstInfo rstInfo = new RstInfo(streamId, StreamStatus.INVALID_STREAM); LOG.debug("Unknown stream {}", rstInfo); rst(rstInfo, new Callback.Adapter()); } else { processData(stream, frame, data); } } finally { notifyIdle(idleListener, true); } }