You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ri...@apache.org on 2007/04/26 14:38:42 UTC

svn commit: r532728 - /incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionStartOkMethodHandler.java

Author: ritchiem
Date: Thu Apr 26 05:38:41 2007
New Revision: 532728

URL: http://svn.apache.org/viewvc?view=rev&rev=532728
Log:
QPID-292 - Authentication not handled correctly.

Copied handling from SecureOkMethod handler.

Modified:
    incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionStartOkMethodHandler.java

Modified: incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionStartOkMethodHandler.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionStartOkMethodHandler.java?view=diff&rev=532728&r1=532727&r2=532728
==============================================================================
--- incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionStartOkMethodHandler.java (original)
+++ incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionStartOkMethodHandler.java Thu Apr 26 05:38:41 2007
@@ -30,6 +30,7 @@
 import org.apache.qpid.framing.ConnectionSecureBody;
 import org.apache.qpid.framing.ConnectionStartOkBody;
 import org.apache.qpid.framing.ConnectionTuneBody;
+import org.apache.qpid.framing.ConnectionCloseBody;
 import org.apache.qpid.protocol.AMQMethodEvent;
 import org.apache.qpid.protocol.AMQConstant;
 import org.apache.qpid.server.protocol.AMQProtocolSession;
@@ -93,10 +94,24 @@
             switch (authResult.status)
             {
                 case ERROR:
-                    throw new AMQException("Authentication failed");
+                    _logger.info("Authentication failed");
+                    stateManager.changeState(AMQState.CONNECTION_CLOSING);
+                    // AMQP version change: Hardwire the version to 0-8 (major=8, minor=0)
+                    // TODO: Connect this to the session version obtained from ProtocolInitiation for this session.
+                    // Be aware of possible changes to parameter order as versions change.
+                    AMQFrame close = ConnectionCloseBody.createAMQFrame(0,
+                                                                        (byte) 8, (byte) 0,    // AMQP version (major, minor)
+                                                                        ConnectionCloseBody.getClazz((byte) 8, (byte) 0),        // classId
+                                                                        ConnectionCloseBody.getMethod((byte) 8, (byte) 0),    // methodId
+                                                                        AMQConstant.NOT_ALLOWED.getCode(),    // replyCode
+                                                                        AMQConstant.NOT_ALLOWED.getName());    // replyText
+                    session.writeFrame(close);
+                    disposeSaslServer(session);
+                    break;
+
                 case SUCCESS:
                     _logger.info("Connected as: " + ss.getAuthorizationID());
-                    session.setAuthorizedID(new UsernamePrincipal(ss.getAuthorizationID()));                
+                    session.setAuthorizedID(new UsernamePrincipal(ss.getAuthorizationID()));
 
                     stateManager.changeState(AMQState.CONNECTION_NOT_TUNED);
                     // AMQP version change: Hardwire the version to 0-8 (major=8, minor=0)