You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Free pbufs after they were used in multiple callbacks: http_client_header_print_fn and http_client_receive_print_fn are example callbacks, that print the received data. The buffers should be freed afterwards, as they are not further used,
internal_header_fn is the internal function, that later calls a user callback. Only free the pbuf if no user callback is called. When a user callback is called, the freeing has to take place in there.
If the buffers are not freed, the MCU will eventually run out of RAM (in my application where I found the issue this occurred already after about twelve requests)
Do you have an example that demonstrates the problem? I'm not convinced. pbuf_free is called in internal_recv_fn.
I changed the code to call http_client_request_sync 100 times and it worked ok.
Notice how a call to pbuf_free is done if no recv callback is supplied.
But I don't think we should call pbuf_free in each of the example_http_client_util.c callbacks, as it will be applied to the same pbuf: both headers_done and recv are handled sequentially in httpc_tcp_recv (the lwip fun I just linked above).
Now I'm wondering if we miss a altcp_recved(conn, p->tot_len) too? :|
Edit: I just did a checkout develop, and now I see why @peterharperuk says the pbuf_free is already in internal_recv_fn ... there is also the altcp_recved hahaha!
Sorry about that, cheers
A leak was fixed in this commit on the develop branch d3c4bac
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Free pbufs after they were used in multiple callbacks:
http_client_header_print_fnandhttp_client_receive_print_fnare example callbacks, that print the received data. The buffers should be freed afterwards, as they are not further used,internal_header_fnis the internal function, that later calls a user callback. Only free the pbuf if no user callback is called. When a user callback is called, the freeing has to take place in there.If the buffers are not freed, the MCU will eventually run out of RAM (in my application where I found the issue this occurred already after about twelve requests)