Fix duplicate call to unsubscribe.
This commit is contained in:
Timothy Bish 2014-07-30 20:03:48 -04:00
parent 2cd54248c6
commit efa55278ec
1 changed files with 9 additions and 15 deletions

View File

@ -154,7 +154,8 @@ public class MQTTProtocolConverter {
if (command instanceof ActiveMQMessage) {
ActiveMQMessage msg = (ActiveMQMessage) command;
if (!getPublishDollarTopics() && msg.getDestination().getPhysicalName().startsWith("$")) {
// We don't allow users to send to $ prefixed topics to avoid failing MQTT 3.1.1 spec requirements
// We don't allow users to send to $ prefixed topics to avoid failing MQTT 3.1.1
// specification requirements
if (handler != null) {
try {
handler.onResponse(this, new Response());
@ -186,7 +187,6 @@ public class MQTTProtocolConverter {
* Convert a MQTT command
*/
public void onMQTTCommand(MQTTFrame frame) throws IOException, JMSException {
switch (frame.messageType()) {
case PINGREQ.TYPE: {
LOG.debug("Received a ping from client: " + getClientId());
@ -240,7 +240,6 @@ public class MQTTProtocolConverter {
}
void onMQTTConnect(final CONNECT connect) throws MQTTProtocolException {
if (connected.get()) {
throw new MQTTProtocolException("Already connected.");
}
@ -423,12 +422,10 @@ public class MQTTProtocolConverter {
// remove old subscription as the QoS has changed
onUnSubscribe(topicName);
} else {
// duplicate SUBSCRIBE packet, find all matching topics and resend retained messages
// duplicate SUBSCRIBE packet, find all matching topics and re-send retained messages
resendRetainedMessages(topicName, destination, mqttSubscription);
return (byte) topicQoS.ordinal();
}
onUnSubscribe(topicName);
}
ConsumerId id = new ConsumerId(sessionId, consumerIdGenerator.getNextSequenceId());
@ -914,7 +911,6 @@ public class MQTTProtocolConverter {
char[] chars = name.toCharArray();
for (int i = 0; i < chars.length; i++) {
switch(chars[i]) {
case '#':
chars[i] = '>';
break;
@ -928,14 +924,12 @@ public class MQTTProtocolConverter {
case '*':
chars[i] = '+';
break;
case '/':
chars[i] = '.';
break;
case '.':
chars[i] = '/';
break;
}
}
String rc = new String(chars);