diff --git a/common/src/main/java/org/red5/server/net/rtmp/codec/RTMPProtocolDecoder.java b/common/src/main/java/org/red5/server/net/rtmp/codec/RTMPProtocolDecoder.java
index 9366d6b5d712eef2871f5de481cbfac34204a3d1..1de887f534b2255281a027dfa869ef33354776ba 100644
--- a/common/src/main/java/org/red5/server/net/rtmp/codec/RTMPProtocolDecoder.java
+++ b/common/src/main/java/org/red5/server/net/rtmp/codec/RTMPProtocolDecoder.java
@@ -269,7 +269,7 @@ public class RTMPProtocolDecoder implements Constants, IEventDecoder {
             log.trace("Source buffer position: {}, limit: {}, packet-buf.position {}, packet size: {}", in.position(), in.limit(), buf.position(), header.getSize());
         }
         // read chunk
-        int length = Math.max(buf.remaining(), readChunkSize);
+        int length = Math.min(buf.remaining(), readChunkSize);
         if (in.remaining() < length) {
             log.debug("In buffer is too small, buffering ({},{})", in.remaining(), length);
             // how much more data we need to continue?