PROTON-955: only pass the payload that will be included in the transfer, not the full remaining payload
Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/b0f3a987 Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/b0f3a987 Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/b0f3a987 Branch: refs/heads/master Commit: b0f3a9873fa0cb430c69ac3dd5fa262e338f7263 Parents: c72ec77 Author: Robert Gemmell <[email protected]> Authored: Thu Jul 23 12:56:12 2015 +0100 Committer: Robert Gemmell <[email protected]> Committed: Thu Jul 23 12:56:12 2015 +0100 ---------------------------------------------------------------------- .../qpid/proton/engine/impl/FrameWriter.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/b0f3a987/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter.java ---------------------------------------------------------------------- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter.java b/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter.java index 382c726..b23932a 100644 --- a/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter.java +++ b/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter.java @@ -146,10 +146,19 @@ class FrameWriter writePerformative(frameBody); } + int capacity; + if (_maxFrameSize > 0) { + capacity = _maxFrameSize - _performativeSize; + } else { + capacity = Integer.MAX_VALUE; + } + int payloadSize = Math.min(payload == null ? 0 : payload.remaining(), capacity); + ByteBuffer originalPayload = null; if( payload!=null ) { originalPayload = payload.duplicate(); + originalPayload.limit(payload.position() + payloadSize); } // XXX: this is a bit of a hack but it eliminates duplicate @@ -165,14 +174,6 @@ class FrameWriter } } - int capacity; - if (_maxFrameSize > 0) { - capacity = _maxFrameSize - _performativeSize; - } else { - capacity = Integer.MAX_VALUE; - } - int payloadSize = Math.min(payload == null ? 0 : payload.remaining(), capacity); - if(payloadSize > 0) { while (_buffer.remaining() < payloadSize) { --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
