Perl. POE. POE::Component::Client::HTTP bugs.
POE::Component::Client::HTTP. Bugs.
1. Не умеет обрабатывать пустой ответ сервера, если запрос не HEAD.
2. Некорректно работает с HTTP::Request, если содержимое запроса - анонимная функция, которая позволяет читать содержимое из дескриптора.
Вот такие баги :)
1. Не умеет обрабатывать пустой ответ сервера, если запрос не HEAD.
Например, nginx отвечает на PUT-запросы без содержимого, HTTP-клиент данный ответ не верно обрабатывает, и возращает ошибку - 406 Response larger than MaxSize.
2. Некорректно работает с HTTP::Request, если содержимое запроса - анонимная функция, которая позволяет читать содержимое из дескриптора.
Если тело запроса пустое, т.е. передаваемый файл пустой, то длина такого запроса равна 0, но содержимое читаем из функции, то HTTP-клиент понимает это не верно, думает, что тело запроса не функция, а строка - 'CODE(...)', длина которой равна 15 и исправляет длину всего запроса на 15. После чего такой запрос клиент не может отправить, возращая ошибку - 400 Bad Request. Если тело запроса НЕ пустое, то все работает нормально, как и должно :)
LWP::UserAgent такой HTTP::Request корректно обрабатывает, а POE::Component::Client::HTTP нет, хотя в доке заявлена поддержка анонимных функций в качестве тела запроса.
Вот такие баги :)
