Обработка неполного кадра в HTTP2

Я использую nghttp2 для создания сервера. Я не использую ssl просто TCP, а затем HTTP2. Для получения данных из сокета я использую nghttp2_session_recv в моем обратном вызове я делаю одноразовое чтение из сокета. Когда я читаю полный буфер (буфер предоставляется функцией nghttp2 из функции: nghttp2_session_recv, она имеет размер 16384), может случиться так, что я получу только частичные данные.
Например, сервер читает кадр DATA, а содержимое отсутствует, скажем, 200 байтов. Это вызывает проблемы в приложении.
Как я могу преодолеть эту проблему и всегда читать полный кадр?
Похоже, что nghttp2's nghttp2_session_recv получит как можно больше. Есть ли способ узнать, что в каком-то кадре отсутствуют данные?
Как обрабатываются эти случаи?
Я понимаю, что приложению необходимо буферизовать неполный кадр и получить его полностью после другого чтения из сокета, но я не могу найти способ определить, был ли полностью принят кадр, и смещение буфера, которое было успешно обработано, поэтому я знаю, что хранить до следующего чтения.

Спасибо за помощь.

0 ответов

Другие вопросы по тегам