Skip to content

Conversation

EdouardMALOT
Copy link

When configuring the MQTT client to subscribe to a topic, we receive payloads of unknown size.

To read the MQTT message (and release the received TCP packet), we must use nxd_mqtt_client_message_get() with the buffer and buffer size as arguments.

If the received message (payload or topic) is larger than the user buffer, this function returns an error but does not release the TCP packet. This can cause an endless issue where the client cannot receive any more messages (nxd_mqtt_client_message_get() always responds with an error without releasing the TCP packet).

In this pull request, the received packet is released if the destination buffer is too small. This way, messages that are too large are rejected (the user is informed with the return value NXD_MQTT_INSUFFICIENT_BUFFER_SPACE), and the user can continue to receive smaller messages later.

@hwmaier
Copy link

hwmaier commented Apr 10, 2024

Hi @EdouardMALOT,
Please refer to my previous PR #14 which is related and there is already some discussion how to deal with buffers and messages staying in the TX queue.

@EdouardMALOT
Copy link
Author

This issue is also discussed with another approach here: #14

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants