Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MQTT / nxd_mqtt_client_message_get() : Release packet if topic or message is bigger than destination buffer #269

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

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