Author: rgodfrey
Date: Thu Jun  9 10:15:53 2016
New Revision: 1747526

URL: http://svn.apache.org/viewvc?rev=1747526&view=rev
Log:
QPID-7298 : prevent exchange-declare-ok being sent when nowait=true

Modified:
    
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java

Modified: 
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java?rev=1747526&r1=1747525&r2=1747526&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java
 (original)
+++ 
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java
 Thu Jun  9 10:15:53 2016
@@ -2938,10 +2938,10 @@ public class AMQChannel
             }
             else
             {
+                String name = exchangeName.toString();
+                String typeString = type == null ? null : type.toString();
                 try
                 {
-                    String name = exchangeName.toString();
-                    String typeString = type == null ? null : type.toString();
 
                     Map<String, Object> attributes = new HashMap<String, 
Object>();
                     if (arguments != null)
@@ -2968,23 +2968,23 @@ public class AMQChannel
                 }
                 catch (ReservedExchangeNameException e)
                 {
-                    Exchange existing = getExchange(exchangeName.toString());
-                    if (existing != null && new 
AMQShortString(existing.getType()).equals(type))
+                    Exchange existing = getExchange(name);
+                    if (existing == null || 
!existing.getType().equals(typeString))
                     {
-                        sync();
-                        
_connection.writeFrame(declareOkBody.generateFrame(getChannelId()));
+                        
_connection.sendConnectionClose(AMQConstant.NOT_ALLOWED,
+                                                        "Attempt to declare 
exchange: '" + exchangeName +
+                                                        "' which begins with 
reserved prefix.", getChannelId());
                     }
-                    else
+                    else if(!nowait)
                     {
-                        
_connection.sendConnectionClose(AMQConstant.NOT_ALLOWED,
-                                "Attempt to declare exchange: '" + 
exchangeName +
-                                        "' which begins with reserved 
prefix.", getChannelId());
+                        sync();
+                        
_connection.writeFrame(declareOkBody.generateFrame(getChannelId()));
                     }
                 }
                 catch (ExchangeExistsException e)
                 {
                     exchange = e.getExistingExchange();
-                    if (!new AMQShortString(exchange.getType()).equals(type))
+                    if (!exchange.getType().equals(typeString))
                     {
                         
_connection.sendConnectionClose(AMQConstant.NOT_ALLOWED, "Attempt to redeclare 
exchange: '"
                                 + exchangeName + "' of type "



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to