HTTP_DATA_FINAL was incorrectly notified in case Content Length field was present in the HTTP respone - in such case it was set for every response fragment, not only the last one. Fix this by relying on `message_complete` flag instead of `http_should_keep_alive()` function to determine whether to notify HTTP_DATA_FINAL or not. As the HTTP parser calls the `on_message_complete()` callback in either case (response is chunked or not), this seems to be a more reasonable apporach to determine whether the fragment is final or not. Additinally, instead of calling response callback for `on_body`/`on_message_complete` separately, call it directly from `http_wait_data()` function, after the parsing round. This fixes the case when headers were not reported correctly when the provided buffer was smaller than the total headers length, resulting in corrupted data being reported to the user. Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no> |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
http_client.c | ||
http_parser.c | ||
http_parser_url.c | ||
Kconfig | ||
README_http_parser |