Skip to content

Commit 6baea60

Browse files
committed
test fixes
1 parent 755548f commit 6baea60

File tree

3 files changed

+49
-97
lines changed

3 files changed

+49
-97
lines changed

hivemq-edge/src/main/java/com/hivemq/codec/decoder/MQTTMessageDecoder.java

Lines changed: 42 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -193,9 +193,9 @@ protected void decode(
193193
}
194194

195195
private void handlePacketTooLarge(
196-
final @com.hivemq.extension.sdk.api.annotations.NotNull ByteBuf buf,
197-
final @com.hivemq.extension.sdk.api.annotations.NotNull MessageType messageType,
198-
final @com.hivemq.extension.sdk.api.annotations.NotNull ClientConnection clientConnectionContext) {
196+
final @NotNull ByteBuf buf,
197+
final @NotNull MessageType messageType,
198+
final @NotNull ClientConnection clientConnectionContext) {
199199
//connack with PACKET_TOO_LARGE for Mqtt5
200200
if (messageType == MessageType.CONNECT) {
201201
// Theoretically, remaining length could be too short to read the protocol version.
@@ -236,18 +236,6 @@ private void handlePacketTooLarge(
236236
final int packetSize,
237237
final int remainingLength) {
238238

239-
//this is the message size HiveMQ allows for incoming messages
240-
if (packetSize > maxPacketSize) {
241-
connectDecoder.decodeProtocolVersion(clientConnection, buf);
242-
mqttConnacker.connackError(clientConnection.getChannel(),
243-
"A client (IP: {}) connect packet exceeded the maximum permissible size.",
244-
"Sent CONNECT exceeded the maximum permissible size",
245-
Mqtt5ConnAckReasonCode.PACKET_TOO_LARGE,
246-
ReasonStrings.CONNACK_PACKET_TOO_LARGE);
247-
248-
return null;
249-
}
250-
251239
// Check if the client is already connected
252240
if (clientConnection.getProtocolVersion() != null) {
253241
mqttServerDisconnector.disconnect(clientConnection.getChannel(),
@@ -283,22 +271,6 @@ private void handlePacketTooLarge(
283271

284272
final ProtocolVersion protocolVersion = clientConnection.getProtocolVersion();
285273

286-
//this is the message size HiveMQ allows for incoming messages
287-
if (packetSize > maxPacketSize) {
288-
289-
//force channel close for Mqtt3.1, Mqtt3.1.1 and null (before connect)
290-
final boolean forceClose = protocolVersion != ProtocolVersion.MQTTv5;
291-
mqttServerDisconnector.disconnect(clientConnection.getChannel(),
292-
"A client (IP: {}) sent a message, that was bigger than the maximum message size. Disconnecting client.",
293-
"Sent a message that was bigger than the maximum size",
294-
Mqtt5DisconnectReasonCode.PACKET_TOO_LARGE,
295-
ReasonStrings.DISCONNECT_PACKET_TOO_LARGE_MESSAGE,
296-
Mqtt5UserProperties.NO_USER_PROPERTIES,
297-
false,
298-
forceClose);
299-
return null;
300-
}
301-
302274
// Check if client is connected
303275
if (protocolVersion == null) {
304276
mqttServerDisconnector.logAndClose(clientConnection.getChannel(),
@@ -317,58 +289,45 @@ private void handlePacketTooLarge(
317289
final MqttDecoder<?> decoder = mqttDecoders.decoder(messageType, protocolVersion);
318290
if (decoder != null) {
319291
return decoder.decode(clientConnection, messageBuffer, fixedHeader);
320-
} else {
321-
switch (messageType) {
322-
case RESERVED_ZERO:
323-
mqttServerDisconnector.disconnect(clientConnection.getChannel(),
324-
"A client (IP: {}) sent a message with an invalid message type '0'. This message type is reserved. Disconnecting client.",
325-
"Sent a message with message type '0'",
326-
Mqtt5DisconnectReasonCode.PROTOCOL_ERROR,
327-
ReasonStrings.DISCONNECT_MESSAGE_TYPE_ZERO);
328-
return null;
329-
case CONNACK:
330-
mqttServerDisconnector.disconnect(clientConnection.getChannel(),
331-
"A client (IP: {}) sent a CONNACK message. This is invalid because clients are not allowed to send CONNACKs. Disconnecting client.",
332-
"Sent a CONNACK message",
333-
Mqtt5DisconnectReasonCode.PROTOCOL_ERROR,
334-
ReasonStrings.DISCONNECT_CONNACK_RECEIVED);
335-
return null;
336-
case SUBACK:
337-
mqttServerDisconnector.disconnect(clientConnection.getChannel(),
338-
"A client (IP: {}) sent a SUBACK message. This is invalid because clients are not allowed to send SUBACKs. Disconnecting client.",
339-
"Sent a SUBACK message",
340-
Mqtt5DisconnectReasonCode.PROTOCOL_ERROR,
341-
ReasonStrings.DISCONNECT_SUBACK_RECEIVED);
342-
return null;
343-
case UNSUBACK:
344-
mqttServerDisconnector.disconnect(clientConnection.getChannel(),
345-
"A client (IP: {}) sent a UNSUBACK message. This is invalid because clients are not allowed to send UNSUBACKs. Disconnecting client.",
346-
"Sent a UNSUBACK message",
347-
Mqtt5DisconnectReasonCode.PROTOCOL_ERROR,
348-
ReasonStrings.DISCONNECT_UNSUBACK_RECEIVED);
349-
return null;
350-
case PINGRESP:
351-
mqttServerDisconnector.disconnect(clientConnection.getChannel(),
352-
"A client (IP: {}) sent a PINGRESP message. This is invalid because clients are not allowed to send PINGRESPs. Disconnecting client.",
353-
"Sent a PINGRESP message",
354-
Mqtt5DisconnectReasonCode.PROTOCOL_ERROR,
355-
ReasonStrings.DISCONNECT_PINGRESP_RECEIVED);
356-
return null;
357-
case AUTH:
358-
mqttServerDisconnector.disconnect(clientConnection.getChannel(),
359-
"A client (IP: {}) sent a message with an invalid message type '15'. This message type is reserved. Disconnecting client.",
360-
"Sent a message with message type '15'",
361-
Mqtt5DisconnectReasonCode.PROTOCOL_ERROR,
362-
ReasonStrings.DISCONNECT_MESSAGE_TYPE_FIFTEEN);
363-
return null;
364-
default:
365-
mqttServerDisconnector.disconnect(clientConnection.getChannel(),
366-
"A client (IP: {}) connected but the message type could not get determined. Disconnecting client.",
367-
"Sent a message with invalid message type",
368-
Mqtt5DisconnectReasonCode.PROTOCOL_ERROR,
369-
ReasonStrings.DISCONNECT_MESSAGE_TYPE_INVALID);
370-
return null;
371-
}
372292
}
293+
294+
switch (messageType) {
295+
case RESERVED_ZERO -> mqttServerDisconnector.disconnect(clientConnection.getChannel(),
296+
"A client (IP: {}) sent a message with an invalid message type '0'. This message type is reserved. Disconnecting client.",
297+
"Sent a message with message type '0'",
298+
Mqtt5DisconnectReasonCode.PROTOCOL_ERROR,
299+
ReasonStrings.DISCONNECT_MESSAGE_TYPE_ZERO);
300+
case CONNACK -> mqttServerDisconnector.disconnect(clientConnection.getChannel(),
301+
"A client (IP: {}) sent a CONNACK message. This is invalid because clients are not allowed to send CONNACKs. Disconnecting client.",
302+
"Sent a CONNACK message",
303+
Mqtt5DisconnectReasonCode.PROTOCOL_ERROR,
304+
ReasonStrings.DISCONNECT_CONNACK_RECEIVED);
305+
case SUBACK -> mqttServerDisconnector.disconnect(clientConnection.getChannel(),
306+
"A client (IP: {}) sent a SUBACK message. This is invalid because clients are not allowed to send SUBACKs. Disconnecting client.",
307+
"Sent a SUBACK message",
308+
Mqtt5DisconnectReasonCode.PROTOCOL_ERROR,
309+
ReasonStrings.DISCONNECT_SUBACK_RECEIVED);
310+
case UNSUBACK -> mqttServerDisconnector.disconnect(clientConnection.getChannel(),
311+
"A client (IP: {}) sent a UNSUBACK message. This is invalid because clients are not allowed to send UNSUBACKs. Disconnecting client.",
312+
"Sent a UNSUBACK message",
313+
Mqtt5DisconnectReasonCode.PROTOCOL_ERROR,
314+
ReasonStrings.DISCONNECT_UNSUBACK_RECEIVED);
315+
case PINGRESP -> mqttServerDisconnector.disconnect(clientConnection.getChannel(),
316+
"A client (IP: {}) sent a PINGRESP message. This is invalid because clients are not allowed to send PINGRESPs. Disconnecting client.",
317+
"Sent a PINGRESP message",
318+
Mqtt5DisconnectReasonCode.PROTOCOL_ERROR,
319+
ReasonStrings.DISCONNECT_PINGRESP_RECEIVED);
320+
case AUTH -> mqttServerDisconnector.disconnect(clientConnection.getChannel(),
321+
"A client (IP: {}) sent a message with an invalid message type '15'. This message type is reserved. Disconnecting client.",
322+
"Sent a message with message type '15'",
323+
Mqtt5DisconnectReasonCode.PROTOCOL_ERROR,
324+
ReasonStrings.DISCONNECT_MESSAGE_TYPE_FIFTEEN);
325+
default -> mqttServerDisconnector.disconnect(clientConnection.getChannel(),
326+
"A client (IP: {}) connected but the message type could not get determined. Disconnecting client.",
327+
"Sent a message with invalid message type",
328+
Mqtt5DisconnectReasonCode.PROTOCOL_ERROR,
329+
ReasonStrings.DISCONNECT_MESSAGE_TYPE_INVALID);
330+
}
331+
return null;
373332
}
374333
}

hivemq-edge/src/main/java/com/hivemq/configuration/entity/mqtt/PacketsConfigEntity.java

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,10 @@
1919
import jakarta.xml.bind.annotation.XmlAccessorType;
2020
import jakarta.xml.bind.annotation.XmlElement;
2121
import jakarta.xml.bind.annotation.XmlRootElement;
22-
23-
import java.util.Objects;
22+
import org.jetbrains.annotations.Nullable;
2423

2524
import static com.hivemq.mqtt.message.connack.Mqtt5CONNACK.DEFAULT_MAXIMUM_PACKET_SIZE_NO_LIMIT;
2625

27-
/**
28-
* @author Florian Limpöck
29-
* @since 4.0.0
30-
*/
3126
@XmlRootElement(name = "packets")
3227
@XmlAccessorType(XmlAccessType.NONE)
3328
@SuppressWarnings({"FieldMayBeFinal", "FieldCanBeLocal"})
@@ -41,15 +36,15 @@ public int getMaxPacketSize() {
4136
}
4237

4338
@Override
44-
public boolean equals(final Object o) {
45-
if (this == o) return true;
46-
if (o == null || getClass() != o.getClass()) return false;
47-
final PacketsConfigEntity that = (PacketsConfigEntity) o;
48-
return getMaxPacketSize() == that.getMaxPacketSize();
39+
public boolean equals(final @Nullable Object o) {
40+
if (this == o) {
41+
return true;
42+
}
43+
return o instanceof final PacketsConfigEntity that && maxPacketSize == that.maxPacketSize;
4944
}
5045

5146
@Override
5247
public int hashCode() {
53-
return Objects.hashCode(getMaxPacketSize());
48+
return Integer.hashCode(maxPacketSize);
5449
}
5550
}

hivemq-edge/src/test/java/com/hivemq/codec/decoder/MQTTMessageDecoderTest.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import org.jetbrains.annotations.NotNull;
2828
import org.junit.Before;
2929
import org.junit.Test;
30-
import org.mockito.MockitoAnnotations;
3130
import util.TestConfigurationBootstrap;
3231
import util.TestMqttDecoder;
3332

@@ -44,7 +43,6 @@ public class MQTTMessageDecoderTest {
4443

4544
@Before
4645
public void setUp() throws Exception {
47-
MockitoAnnotations.initMocks(this);
4846
channel = new EmbeddedChannel(TestMqttDecoder.create());
4947
clientConnection = new ClientConnection(channel, null);
5048
//setting version to fake "connected" state

0 commit comments

Comments
 (0)