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)