Guarded against NPE.

This commit is contained in:
Simone Bordet 2015-08-20 16:31:09 +02:00
parent 9b6ba2477c
commit fd335d6c3e

View File

@ -115,24 +115,27 @@ public class BufferingFlowControlStrategy extends AbstractFlowControlStrategy
else
{
AtomicInteger streamLevel = streamLevels.get(stream);
level = streamLevel.addAndGet(length);
maxLevel = (int)(getInitialStreamRecvWindow() * bufferRatio);
if (level > maxLevel)
if (streamLevel != null)
{
level = streamLevel.getAndSet(0);
stream.updateRecvWindow(level);
if (LOG.isDebugEnabled())
LOG.debug("Data consumed, updated stream recv window by {}/{} for {}", level, maxLevel, stream);
WindowUpdateFrame frame = new WindowUpdateFrame(stream.getId(), level);
if (windowFrame == null)
windowFrame = frame;
level = streamLevel.addAndGet(length);
maxLevel = (int)(getInitialStreamRecvWindow() * bufferRatio);
if (level > maxLevel)
{
level = streamLevel.getAndSet(0);
stream.updateRecvWindow(level);
if (LOG.isDebugEnabled())
LOG.debug("Data consumed, updated stream recv window by {}/{} for {}", level, maxLevel, stream);
WindowUpdateFrame frame = new WindowUpdateFrame(stream.getId(), level);
if (windowFrame == null)
windowFrame = frame;
else
windowFrames = new Frame[]{frame};
}
else
windowFrames = new Frame[]{frame};
}
else
{
if (LOG.isDebugEnabled())
LOG.debug("Data consumed, stream recv window level {}/{} for {}", level, maxLevel, session);
{
if (LOG.isDebugEnabled())
LOG.debug("Data consumed, stream recv window level {}/{} for {}", level, maxLevel, session);
}
}
}
}