You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kw...@apache.org on 2017/05/10 08:22:16 UTC

qpid-broker-j git commit: QPID-7769: [AMQP0-8..0-91] Avoid possibility of the QBB going undisposed if field table decoding fails

Repository: qpid-broker-j
Updated Branches:
  refs/heads/master 0ae8c00e1 -> 66a15452a


QPID-7769: [AMQP0-8..0-91] Avoid possibility of the QBB going undisposed if field table decoding fails

Made QBB's autoclosable so they may be used from try-with-resources.


Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/66a15452
Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/66a15452
Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/66a15452

Branch: refs/heads/master
Commit: 66a15452ae1da2d2a3460db93505ac02764e6f5d
Parents: 0ae8c00
Author: Keith Wall <kw...@apache.org>
Authored: Wed May 10 09:20:32 2017 +0100
Committer: Keith Wall <kw...@apache.org>
Committed: Wed May 10 09:21:30 2017 +0100

----------------------------------------------------------------------
 .../qpid/server/bytebuffer/QpidByteBuffer.java  |  8 +++++-
 .../qpid/server/protocol/v0_8/FieldTable.java   | 26 +++++++++-----------
 2 files changed, 18 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/66a15452/broker-core/src/main/java/org/apache/qpid/server/bytebuffer/QpidByteBuffer.java
----------------------------------------------------------------------
diff --git a/broker-core/src/main/java/org/apache/qpid/server/bytebuffer/QpidByteBuffer.java b/broker-core/src/main/java/org/apache/qpid/server/bytebuffer/QpidByteBuffer.java
index ce02e46..f7a1905 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/bytebuffer/QpidByteBuffer.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/bytebuffer/QpidByteBuffer.java
@@ -45,7 +45,7 @@ import javax.net.ssl.SSLException;
 
 import org.apache.qpid.server.streams.CompositeInputStream;
 
-public class QpidByteBuffer
+public class QpidByteBuffer implements AutoCloseable
 {
     private static final AtomicIntegerFieldUpdater<QpidByteBuffer>
             DISPOSED_UPDATER = AtomicIntegerFieldUpdater.newUpdater(
@@ -125,6 +125,12 @@ public class QpidByteBuffer
         return this;
     }
 
+    @Override
+    public final void close()
+    {
+        dispose();
+    }
+
     public final void dispose()
     {
         if (DISPOSED_UPDATER.compareAndSet(this, 0, 1))

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/66a15452/broker-core/src/main/java/org/apache/qpid/server/protocol/v0_8/FieldTable.java
----------------------------------------------------------------------
diff --git a/broker-core/src/main/java/org/apache/qpid/server/protocol/v0_8/FieldTable.java b/broker-core/src/main/java/org/apache/qpid/server/protocol/v0_8/FieldTable.java
index c8ba379..e183010 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/protocol/v0_8/FieldTable.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/protocol/v0_8/FieldTable.java
@@ -1147,29 +1147,24 @@ public class FieldTable
 
     private void setFromBuffer() throws AMQFrameDecodingException
     {
-
-        final QpidByteBuffer slice = _encodedForm.slice();
-
         if (_encodedSize > 0)
         {
-
-
-            _properties = new LinkedHashMap<>(INITIAL_HASHMAP_CAPACITY);
-
-            do
+            try(QpidByteBuffer slice = _encodedForm.slice())
             {
+                _properties = new LinkedHashMap<>(INITIAL_HASHMAP_CAPACITY);
 
-                final AMQShortString key = AMQShortString.readAMQShortString(slice);
-                AMQTypedValue value = AMQTypedValue.readFromBuffer(slice);
-                _properties.put(key, value);
-
+                do
+                {
+                    final AMQShortString key = AMQShortString.readAMQShortString(slice);
+                    AMQTypedValue value = AMQTypedValue.readFromBuffer(slice);
+                    _properties.put(key, value);
+                }
+                while (slice.hasRemaining());
             }
-            while (slice.hasRemaining());
-
         }
-        slice.dispose();
     }
 
+    @Override
     public int hashCode()
     {
         initMapIfNecessary();
@@ -1177,6 +1172,7 @@ public class FieldTable
         return _properties.hashCode();
     }
 
+    @Override
     public boolean equals(Object o)
     {
         if (o == this)


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org