]> git.kaiwu.me - haproxy.git/commitdiff
BUG/MINOR: mqtt: connect parser uses wrong bit field for TOPIC_ALIAS_MAXIMUM
authorWilly Tarreau <w@1wt.eu>
Mon, 11 May 2026 13:34:15 +0000 (15:34 +0200)
committerWilly Tarreau <w@1wt.eu>
Mon, 11 May 2026 14:04:19 +0000 (16:04 +0200)
In mqtt_parse_connect(), the MQTT_PROP_TOPIC_ALIAS_MAXIMUM case was checking
and setting MQTT_FN_BIT_TOPIC_ALIAS instead of MQTT_FN_BIT_TOPIC_ALIAS_MAXIMUM.
This means duplicate detection for Topic-Alias-Maximum property was using the
wrong bitmask, and the actual Topic-Alias-Maximum bit was never set, making
duplicate detection ineffective for this property. The CONNACK parser already
had this correct.

src/mqtt.c

index 9ff977ef6dba30f112fe6b1cdd625be7f41a3b97..772d683c4f569174e4551a8268377295752ef148 100644 (file)
@@ -789,10 +789,10 @@ static int mqtt_parse_connect(struct ist parser, struct mqtt_pkt *mpkt)
                                break;
 
                        case MQTT_PROP_TOPIC_ALIAS_MAXIMUM:
-                               if (fields & MQTT_FN_BIT_TOPIC_ALIAS)
+                               if (fields & MQTT_FN_BIT_TOPIC_ALIAS_MAXIMUM)
                                        goto end;
                                props = mqtt_read_2byte_int(istnext(props), &mpkt->data.connect.var_hdr.props.topic_alias_maximum);
-                               fields |= MQTT_FN_BIT_TOPIC_ALIAS;
+                               fields |= MQTT_FN_BIT_TOPIC_ALIAS_MAXIMUM;
                                break;
 
                        case MQTT_PROP_REQUEST_RESPONSE_INFORMATION: