You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ra...@apache.org on 2015/10/05 18:46:51 UTC
[5/5] qpid-proton git commit: Bug fixes
Bug fixes
Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/12ff4f5c
Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/12ff4f5c
Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/12ff4f5c
Branch: refs/heads/rajith-codec
Commit: 12ff4f5cb0c179cbce4d7c98df3b182681c21f8f
Parents: e0325d5
Author: Rajith Attapattu <ra...@apache.org>
Authored: Sun Oct 4 18:14:57 2015 -0400
Committer: Rajith Attapattu <ra...@apache.org>
Committed: Sun Oct 4 18:14:57 2015 -0400
----------------------------------------------------------------------
.../qpid/proton/engine/impl/FrameParser2.java | 28 +++++++++++++++++---
.../qpid/proton/engine/impl/FrameWriter2.java | 17 +++++-------
.../qpid/proton/engine/impl/TransportImpl2.java | 12 +++++++--
3 files changed, 40 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/12ff4f5c/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameParser2.java
----------------------------------------------------------------------
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameParser2.java b/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameParser2.java
index c1ab38b..e45a25e 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameParser2.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameParser2.java
@@ -379,16 +379,19 @@ class FrameParser2 implements TransportInput
// temp workaround
byte[] body = new byte[in.remaining()];
in.get(body);
- _decoder.init(body, 0, body.length);
+
+ int payloadStart = payloadStart(body);
+
+ _decoder.init(body, 0, payloadStart);
POJOBuilder pb = new POJOBuilder();
_decoder.decode(pb);
List l = (List) pb.build();
Object obj = l.get(0);
byte[] payloadBytes = null;
- if(in.hasRemaining())
+ if(payloadStart < body.length)
{
- payloadBytes = new byte[in.remaining()];
- in.get(payloadBytes);
+ payloadBytes = new byte[body.length - payloadStart];
+ System.arraycopy(body, payloadStart, payloadBytes, 0, payloadBytes.length);
}
if(obj instanceof Performative)
@@ -475,6 +478,23 @@ class FrameParser2 implements TransportInput
}
}
+ int payloadStart(byte[] body)
+ {
+ if (body.length > 15 && body[9] == 0x14)
+ {
+ int a = 0xFF & body[11];
+ int b = 0xFF & body[12];
+ int c = 0xFF & body[13];
+ int d = 0xFF & body[14];
+ int value = a << 24 | b << 16 | c << 8 | d;
+ return value + 11;
+ }
+ else
+ {
+ return body.length;
+ }
+ }
+
@Override
public int capacity()
{
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/12ff4f5c/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter2.java
----------------------------------------------------------------------
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter2.java b/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter2.java
index 757302e..4340002 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter2.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameWriter2.java
@@ -96,10 +96,9 @@ class FrameWriter2
{
byte[] old = _buffer;
_buffer = new byte[_buffer.length * 2];
- int pos = _position;
- System.arraycopy(old, 0, _buffer, 0, pos);
+ System.arraycopy(old, 0, _buffer, 0, _position);
- _encoder.init(_buffer, pos, _buffer.length * 2);
+ _encoder.init(_buffer, _position, _buffer.length * 2);
}
void writeHeader(byte[] header)
@@ -203,7 +202,7 @@ class FrameWriter2
}
payload.get(_buffer, _position, payloadSize);
- _position = _position + payloadSize + 1;
+ _position = _position + payloadSize;
}
endFrame(channel);
_framesOutput += 1;
@@ -237,17 +236,13 @@ class FrameWriter2
int size = Math.min(_position - _read, dst.remaining());
dst.put(_buffer, _read, size);
- _read = _position - (_read + size);
+ _read = _read + size;
- // If we have have copied everything we can go back to the beginning
- // size > 0 ensures we go reset the buffer if we don't endup reading at
- // all.
- if (_read == 0 && size > 0)
+ if (_read == _position)
{
_position = 0;
+ _read = 0;
}
- // System.out.println("RAW: \"" + new Binary(dst.array(),
- // dst.arrayOffset(), dst.position()) + "\"");
return size;
}
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/12ff4f5c/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl2.java
----------------------------------------------------------------------
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl2.java b/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl2.java
index 8ae4a4c..beaca12 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl2.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl2.java
@@ -1354,7 +1354,7 @@ public class TransportImpl2 extends EndpointImpl
int channel = frame.getChannel();
if (Transfer.CODE == performative.getCode())
{
- this.handleTransfer((Transfer) performative, frame.getPayload(), 0, frame.getPayload().length, channel);
+ this.handleTransfer((Transfer) performative, frame.getPayload(), 0, frame.getPayload() == null ? 0 : frame.getPayload().length, channel);
}
else if (Disposition.CODE == performative.getCode())
{
@@ -1498,7 +1498,15 @@ public class TransportImpl2 extends EndpointImpl
try {
init();
int beforePosition = _inputProcessor.position();
- _inputProcessor.process();
+ try
+ {
+ _inputProcessor.process();
+ }
+ catch (Exception e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
_bytesInput += beforePosition - _inputProcessor.position();
} catch (TransportException e) {
_head_closed = true;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org