mirror of
https://github.com/alexhopeoconnor/firmware.git
synced 2026-10-20 02:11:28 +10:00
Honour which_payload_variant on MQTT client-proxy ingress (#11097)
This commit is contained in:
+14
-1
@@ -337,7 +337,20 @@ void MQTT::mqttCallback(char *topic, byte *payload, unsigned int length)
|
||||
|
||||
void MQTT::onClientProxyReceive(meshtastic_MqttClientProxyMessage msg)
|
||||
{
|
||||
onReceive(msg.topic, msg.payload_variant.data.bytes, msg.payload_variant.data.size);
|
||||
// payload_variant is a union: on the text variant, data.size aliases the first bytes of the
|
||||
// string, so reading it unconditionally let a client name any length up to PB_SIZE_MAX.
|
||||
switch (msg.which_payload_variant) {
|
||||
case meshtastic_MqttClientProxyMessage_data_tag:
|
||||
onReceive(msg.topic, msg.payload_variant.data.bytes, msg.payload_variant.data.size);
|
||||
break;
|
||||
case meshtastic_MqttClientProxyMessage_text_tag:
|
||||
onReceive(msg.topic, (byte *)msg.payload_variant.text,
|
||||
strnlen(msg.payload_variant.text, sizeof(msg.payload_variant.text)));
|
||||
break;
|
||||
default:
|
||||
LOG_WARN("MQTT proxy message carries no payload, topic %s", msg.topic);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void MQTT::onReceive(char *topic, byte *payload, size_t length)
|
||||
|
||||
Reference in New Issue
Block a user