2012-01-27 3 views
1

«Received проблема 3 в коренастом парсер»локон коренастых ошибок синтаксического анализатора

я не могу за жизнь мне найти то, что «проблема 3» в завитке относится. Я уверен, что он имеет отношение к формату куска, который я отправляю с сервера приложений, чтобы завивать, но я не могу понять, что не так с куском, потому что я не могу сказать, что такое «проблема 3» ,

Любые идеи?

+0

Некоторые дополнительные сведения были бы хорошей идеей, если вы хотите получить помощь. – flesk

ответ

1

Число, которое вы видите, есть CHUNKE_BAD_CHUNK из перечисления CHUNKcode от lib/http_chunks.h из исходного кода libcurl. Учитывая быстрый взгляд, кажется, что он в основном используется, когда отсутствует CR или LF из данных с каналами.

Я бы порекомендовал вам исследовать поток необработанного HTTP-контента, чтобы узнать, в чем проблема с фрагментированным форматом. RFC2616 section 3.6.1 документирует его.

+0

В конечном итоге я отследил его, прочитав статью Википедии о кодировке chunked (http://en.wikipedia.org/wiki/Chunked_transfer_encoding), некоторые пробные версии и ошибки и Wireshark. Проблема заключалась в том, что я использовал длину моей строки, но буфер ответа, который был фактически написан, был больше, чем исходная строка, поэтому он включал несколько октетов нулей, в результате чего мой счетчик и фактические октеты были разными. –

0

Итак, я столкнулся с этим с помощью программы CGI.

Короче говоря, сценарий CGI использовал Python, и печать заголовка куска, используя длину строки, а затем отправить клиенту с помощью:

print data, 

Это добавляет пространство, делая одну данных байт дольше, чем заголовок блока, говорит, что это так. Я это исправил, изменив эту строку:

stdout.write(data) 

шестнадцатеричные данных из сценария CGI был инструмент, который, наконец, сказал мне, что происходит.

Смежные вопросы