Fix outgoing maximum-packet-size limit check.

Closes #3503. Thanks to Julian Graf.
This commit is contained in:
Roger A. Light
2026-05-18 18:38:53 +01:00
parent f5559a6a1f
commit 42d49fc095
6 changed files with 10 additions and 9 deletions
+1
View File
@@ -14,6 +14,7 @@ Broker:
mosquitto 1.5 or earlier is loaded. Closes #3439.
- Limit auto_id_prefix to 50 characters. Closes #3440.
- Fix max_connections not being honoured on websockets listeners. Closes #3455.
- Fix outgoing maximum-packet-size limit check. Closes #3503.
Library:
- Fix mosquitto_loop_start() leaving the mosq stuct in an invalid state if
+1 -1
View File
@@ -215,7 +215,7 @@ int packet__check_oversize(struct mosquitto *mosq, uint32_t remaining_length)
if(mosq->maximum_packet_size == 0) return MOSQ_ERR_SUCCESS;
len = remaining_length + packet__varint_bytes(remaining_length);
len = 1 + remaining_length + packet__varint_bytes(remaining_length);
if(len > mosq->maximum_packet_size){
return MOSQ_ERR_OVERSIZE_PACKET;
}else{
@@ -17,11 +17,11 @@ subscribe_packet = mosq_test.gen_subscribe(mid, "test/topic", 1, proto_ver=5)
suback_packet = mosq_test.gen_suback(mid, 1, proto_ver=5)
mid=1
publish1_packet = mosq_test.gen_publish(topic="test/topic", mid=mid, qos=1, payload="12345678901234567890", proto_ver=5)
publish1_packet = mosq_test.gen_publish(topic="test/topic", mid=mid, qos=1, payload="1234", proto_ver=5)
puback1_packet = mosq_test.gen_puback(mid, proto_ver=5)
mid=2
publish2_packet = mosq_test.gen_publish(topic="test/topic", mid=mid, qos=1, payload="7890", proto_ver=5)
publish2_packet = mosq_test.gen_publish(topic="test/topic", mid=mid, qos=1, payload="789", proto_ver=5)
puback2_packet = mosq_test.gen_puback(mid, proto_ver=5)
port = mosq_test.get_port()
@@ -17,13 +17,13 @@ subscribe_packet = mosq_test.gen_subscribe(mid, "test/topic", 2, proto_ver=5)
suback_packet = mosq_test.gen_suback(mid, 2, proto_ver=5)
mid=1
publish1_packet = mosq_test.gen_publish(topic="test/topic", mid=mid, qos=2, payload="12345678901234567890", proto_ver=5)
publish1_packet = mosq_test.gen_publish(topic="test/topic", mid=mid, qos=2, payload="1234", proto_ver=5)
pubrec1_packet = mosq_test.gen_pubrec(mid, proto_ver=5)
pubrel1_packet = mosq_test.gen_pubrel(mid, proto_ver=5)
pubcomp1_packet = mosq_test.gen_pubcomp(mid, proto_ver=5)
mid=2
publish2_packet = mosq_test.gen_publish(topic="test/topic", mid=mid, qos=2, payload="7890", proto_ver=5)
publish2_packet = mosq_test.gen_publish(topic="test/topic", mid=mid, qos=2, payload="789", proto_ver=5)
pubrec2_packet = mosq_test.gen_pubrec(mid, proto_ver=5)
pubrel2_packet = mosq_test.gen_pubrel(mid, proto_ver=5)
pubcomp2_packet = mosq_test.gen_pubcomp(mid, proto_ver=5)
+2 -2
View File
@@ -14,8 +14,8 @@ connect_packet = mosq_test.gen_connect("publish-qos0-test", keepalive=keepalive,
props = mqtt5_props.gen_uint32_prop(mqtt5_props.PROP_MAXIMUM_PACKET_SIZE, 30)
connack_packet = mosq_test.gen_connack(rc=0, proto_ver=5, properties=props)
bad_publish_packet = mosq_test.gen_publish("pub/test", qos=0, payload="0123456789012345678", proto_ver=5)
publish_packet = mosq_test.gen_publish("pub/test", qos=0, payload="012345678901234567", proto_ver=5)
bad_publish_packet = mosq_test.gen_publish("pub/test", qos=0, payload="123456789012345678", proto_ver=5)
publish_packet = mosq_test.gen_publish("pub/test", qos=0, payload="12345678901234567", proto_ver=5)
disconnect_packet = mosq_test.gen_disconnect()
+2 -2
View File
@@ -24,12 +24,12 @@ void on_connect(struct mosquitto *mosq, void *obj, int rc)
exit(1);
}
rc = mosquitto_publish(mosq, &sent_mid, "pub/test", strlen("0123456789012345678"), "0123456789012345678", 0, false);
rc = mosquitto_publish(mosq, &sent_mid, "pub/test", strlen("123456789012345678"), "123456789012345678", 0, false);
if(rc != MOSQ_ERR_OVERSIZE_PACKET){
printf("Fail on publish 1\n");
exit(1);
}
rc = mosquitto_publish(mosq, &sent_mid, "pub/test", strlen("012345678901234567"), "012345678901234567", 0, false);
rc = mosquitto_publish(mosq, &sent_mid, "pub/test", strlen("12345678901234567"), "12345678901234567", 0, false);
if(rc != MOSQ_ERR_SUCCESS){
printf("Fail on publish 2\n");
exit(1);