Как найти окончание ответа http, который содержит изображение в C, используя http-parser? - PullRequest
0 голосов
/ 13 октября 2018

Я пишу https-клиент для получения необработанных данных https с использованием Wolfssl и http-parser.Он работает на обычных HTML-страницах, но не на файлах типа MIME.

Проблема в том, что http-parser не может определить окончание потока HTTP-ответов.Основываясь на прочтении документов http-parser и http-протокола, я знаю, что есть три сигнала, связанные с окончанием потока: content-length и '\ r \ n' после тела ответа и EOF.Однако я обнаружил, что многие ответы HTTP, которые содержат изображение в формате JPEG, не содержат их.Например, ответ этого URL не имеет ни длины содержимого, ни '\ r \ n', ни EOF.https://raw.githubusercontent.com/wolfSSL/wolfssl-examples/master/SGX_Linux/README-images/expected-make-output.png

Интересно, есть ли другие способы найти конец потока или есть какие-то ошибки в моем коде?

1 Ответ

0 голосов
/ 13 октября 2018

Я нашел ошибку в моем коде.

После чтения некоторых данных из сокета я использовал strlen () из recv_buf в качестве длины принимаемых данных.Это может быть правильным при чтении данных с обычных HTTP-страниц, но завершится ошибкой при чтении файла изображения.

Так что я думаю, http-parser может правильно найти окончание потока ответа.

...