diff --git a/modules/cpr/src/main/java/org/atmosphere/websocket/DefaultWebSocketProcessor.java b/modules/cpr/src/main/java/org/atmosphere/websocket/DefaultWebSocketProcessor.java index bb92de1388e..8418388cfc4 100644 --- a/modules/cpr/src/main/java/org/atmosphere/websocket/DefaultWebSocketProcessor.java +++ b/modules/cpr/src/main/java/org/atmosphere/websocket/DefaultWebSocketProcessor.java @@ -620,7 +620,7 @@ protected void dispatchStream(WebSocket webSocket, InputStream is) throws IOExce while (read > -1) { bb.position(bb.position() + read); if (bb.remaining() == 0) { - resizeByteBuffer(webSocket); + bb = resizeByteBuffer(webSocket); } read = is.read(bb.array(), bb.position(), bb.remaining()); } @@ -639,7 +639,7 @@ protected void dispatchReader(WebSocket webSocket, Reader r) throws IOException while (read > -1) { cb.position(cb.position() + read); if (cb.remaining() == 0) { - resizeCharBuffer(webSocket); + cb = resizeCharBuffer(webSocket); } read = r.read(cb.array(), cb.position(), cb.remaining()); } @@ -650,7 +650,7 @@ protected void dispatchReader(WebSocket webSocket, Reader r) throws IOException } } - private void resizeByteBuffer(WebSocket webSocket) throws IOException { + private ByteBuffer resizeByteBuffer(WebSocket webSocket) throws IOException { int maxSize = getByteBufferMaxSize(); ByteBuffer bb = webSocket.bb; if (bb.limit() >= maxSize) { @@ -667,9 +667,10 @@ private void resizeByteBuffer(WebSocket webSocket) throws IOException { bb.rewind(); newBuffer.put(bb); webSocket.bb = newBuffer; + return newBuffer; } - private void resizeCharBuffer(WebSocket webSocket) throws IOException { + private CharBuffer resizeCharBuffer(WebSocket webSocket) throws IOException { int maxSize = getCharBufferMaxSize(); CharBuffer cb = webSocket.cb; if (cb.limit() >= maxSize) { @@ -686,6 +687,7 @@ private void resizeCharBuffer(WebSocket webSocket) throws IOException { cb.rewind(); newBuffer.put(cb); webSocket.cb = newBuffer; + return newBuffer; } /**