Skip to content

Commit ca65d8d

Browse files
hmvpjpwsutton
authored andcommitted
Don't use messageIds when publishes cannot be sent (#318)
When maxInflight is reached all new messages do get a message id. At some point the available messageids will get exausted resulting in even bigger issues This patch prevents messageids from being exausted by reclaiming them for undoed messages Signed-off-by: Hmvp <github@hmvp.nl>
1 parent 90d76d1 commit ca65d8d

1 file changed

Lines changed: 7 additions & 0 deletions

File tree

  • org.eclipse.paho.client.mqttv3/src/main/java/org/eclipse/paho/client/mqttv3/internal

org.eclipse.paho.client.mqttv3/src/main/java/org/eclipse/paho/client/mqttv3/internal/ClientState.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -615,6 +615,13 @@ protected void undo(MqttPublish message) throws MqttPersistenceException {
615615
pendingMessages.removeElement(message);
616616
persistence.remove(getSendPersistenceKey(message));
617617
tokenStore.removeToken(message);
618+
if(message.getMessage().getQos() > 0){
619+
//Free this message Id so it can be used again
620+
releaseMessageId(message.getMessageId());
621+
//Set the messageId to 0 so if it's ever retried, it will get a new messageId
622+
message.setMessageId(0);
623+
}
624+
618625
checkQuiesceLock();
619626
}
620627
}

0 commit comments

Comments
 (0)