Skip to content

Commit 69e7b66

Browse files
committed
Ensure message buffer is released in case of Exceptions
1 parent 27d4580 commit 69e7b66

1 file changed

Lines changed: 16 additions & 13 deletions

File tree

FROST-Server.MQTT.Moquette/src/main/java/de/fraunhofer/iosb/ilt/frostserver/mqtt/moquette/MoquetteMqttServer.java

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -232,19 +232,22 @@ private class AbstractInterceptHandlerImpl extends AbstractInterceptHandler {
232232

233233
@Override
234234
public void onPublish(InterceptPublishMessage msg) {
235-
if (msg.getClientID().equalsIgnoreCase(frostClientId)) {
236-
return;
237-
}
238-
LOGGER.trace(" Moquette -> FROST on {}", msg.getTopicName());
239-
String payload = msg.getPayload().toString(StringHelper.UTF8);
240-
PrincipalExtended userPrincipal;
241-
if (authWrapper == null) {
242-
userPrincipal = PrincipalExtended.ANONYMOUS_PRINCIPAL;
243-
} else {
244-
userPrincipal = authWrapper.getUserPrincipal(msg.getClientID());
235+
try {
236+
if (frostClientId.equals(msg.getClientID())) {
237+
return;
238+
}
239+
LOGGER.trace(" Moquette -> FROST on {}", msg.getTopicName());
240+
String payload = msg.getPayload().toString(StringHelper.UTF8);
241+
PrincipalExtended userPrincipal;
242+
if (authWrapper == null) {
243+
userPrincipal = PrincipalExtended.ANONYMOUS_PRINCIPAL;
244+
} else {
245+
userPrincipal = authWrapper.getUserPrincipal(msg.getClientID());
246+
}
247+
fireEntityCreate(new EntityCreateEvent(this, msg.getTopicName(), payload, userPrincipal));
248+
} finally {
249+
super.onPublish(msg);
245250
}
246-
fireEntityCreate(new EntityCreateEvent(this, msg.getTopicName(), payload, userPrincipal));
247-
super.onPublish(msg);
248251
}
249252

250253
@Override
@@ -288,7 +291,7 @@ public void onSubscribe(InterceptSubscribeMessage msg) {
288291
@Override
289292
public void onUnsubscribe(InterceptUnsubscribeMessage msg) {
290293
final String clientId = msg.getClientID();
291-
if (clientId.equalsIgnoreCase(frostClientId)) {
294+
if (frostClientId.equals(clientId)) {
292295
return;
293296
}
294297
final String topicFilter = msg.getTopicFilter();

0 commit comments

Comments
 (0)