Without this change, it is possible to get an assertion to fail by continuing to call http_parser_execute after it has returned an error. Specifically, the parser could be called with parser->state == s_chunk_size_almost_done and parser->flags & F_CHUNKED set. Then, F_CHUNKED could have been cleared, and an error could be hit. In this case, the parser would have returned with F_CHUNKED clear, but parser->state == s_chunk_size_almost_done, resulting in an assertion failure on the next call. There are alternate solutions possible, including just saving all of the fields (state included) on error. I didn't add a test case because this is a bit annoying to test, but I can add one if necesssary.event_stream
parent
cbb194ea8c
commit
459507f534
Loading…
Reference in new issue