Ошибка "неблокирующая работа сокета" в пакете LWP::UserAgent Perl


Приведенный ниже код выдает ошибку в Windows 7 Pro, он читает 5-8 Кбайт веб-страницы, а затем завершается:

use strict;
use LWP::UserAgent;
my $url = 'https://www.flickr.com/photos/71475421@N02/26176178323/';
my $ua = LWP::UserAgent->new;
my $res = $ua->get($url);
print $res->headers->as_string;

Ошибка:

X-Died: read failed: A non-blocking socket operation could not be 
completed immediately. at C:/Perl/lib/LWP/Protocol/http.pm line 467.

ОС: Win 7 Pro (64 бит)
Perl: 5.20.1 (32 бита)
LWP: 6,08
LWP-Protocols-https: 6.06

Есть идеи, почему это не работает, и как это можно исправить?

Благодарю.

2 ответа

Эта проблема, вероятно, связана с проверкой только на EAGAIN, а не на EWOULDBLOCK. Эти коды ошибок одинаковы в большинстве UNIX, но различаются в Windows. Я рекомендую использовать более новую версию LWP (по крайней мере, версию 6.09), потому что там она явно решает эту проблему и проверяет оба условия.

Сам ActivePerl (с его устаревшим пакетом LWP) кажется виновником.
Переключился на Strawberry Perl и он работает как шарм.
Дамп ActivePerl...

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