[Moscow.pm] AnyEvent::HTTP как ограничить размер ответа?

Ruslan Zakirov ruslan.zakirov на gmail.com
Пт Дек 11 06:00:41 PST 2015


2015-12-11 16:51 GMT+03:00 Oleg Alistratov <ali на ali.org.ua>:

>
> 11.12.2015, 15:36, "Павел Купцов" <pavel на kuptsov.info>:
>
> >>«Бесконечно» — это как именно бесконечно? В заголовках ответа есть
> Content-Length? >Есть, но не соответствует правде? Или нет? Или нет, но
> внезапно есть Upgrade: >WebSocket? ;)
> >>Если там нормальный документ, просто слишком большой, чтобы его
> принимать, >достаточно повесить обработчик на on_header и возвращать из
> него 0, если что-то не >устраивает:
> > На заголовки Content-Length рассчитывать не приходится: зачастую
> неправильные они или вообще их нет.
> > В данном конкретно случае content-lenght нет
> > Вот этот случай:
> > http://avtorradio.ru/
> > :))
>
> Мда, плёхо.
>
> Ну, поскольку AnyEvent::HTTP сам создает себе AnyEvent::Handle и назначает
> ему колбеки, то придется его патчить.
> Передать собственный on_read в AnyEvent::Handle там, afaik, не получится.
>
>
my $body = '';
my $length = 0;
http_get(
    '...',
    on_body => sub { $body .= $_[0];  return length($body) > 1024*1024? 0 :
1;  }
);

как-то так

В основном колбеке используем замыкание на внешнее $body. Ничего не
меняется. В статусе 598 если обрубился запрос по размеру.


>
> --
> Oleg Alistratov
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>



-- 
Best regards, Ruslan.
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20151211/e5ddeabf/attachment.html>


Подробная информация о списке рассылки Moscow-pm