[MEGOLDVA] Perl HTTP header lekérdezési probléma

Sziasztok!

Adott egy évekkel ezelőtt megírt Icecast2 szervert lekérdező perl script ami a szerver headerét szedi le, viszont e script esetén a “http://streaming.radionomy.com:80/00s-dance-classics” lekérdezésekor nem a várt eredményt adja hanem ezt:


HTTP/1.0 401 Authentication Required
WWW-Authenticate: Basic realm="Icecast 2.3.3-kh8"

You need to authenticate

Ha viszont ugyanezt curl-al kérdezem le akkor azt hozza le amit kellene:


dev@dev:~/streaminfo# curl -I -X GET "http://streaming.radionomy.com:80/00s-dance-classics"
HTTP/1.1 200 OK
Content-Type: audio/mpeg
Date: Sat, 02 Apr 2016 07:33:26 GMT
icy-br:128
ice-audio-info: bitrate=128;samplerate=44100;channels=2
icy-br:128
icy-description:Classic dance hits from the 00s
icy-genre:Dance
icy-name:00sDanceClassics
icy-pub:1
icy-url:http://00s-dance-classics.playtheradio.com
Server: Icecast 2.3.3-kh8
Cache-Control: no-cache, no-store
Pragma: no-cache
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Origin, Accept, X-Requested-With, Content-Type
Access-Control-Allow-Methods: GET, OPTIONS, HEAD
Connection: close
Expires: Mon, 26 Jul 1997 05:00:00 GMT

dev@dev:~/streaminfo#

A perl script ami eddig mindennel jól működött:


#!/usr/bin/perl

use IO::Socket::INET;
$socket=new IO::Socket::INET
(
PeerHost=>"streaming.radionomy.com",
PeerPort=>"80",
Proto=>"tcp",
Timeout=>2,
);
if($socket ne())
{
$req="GET /00s-dance-classics HTTP/1.0\r
Host: streaming.radionomy.com\r
\r
";
$size=$socket->send($req);
shutdown($socket,1);
$response=();
$socket->recv($response,1024);
$socket->close();
print "$response";
}

Mit rontottam el, ami ráadásul eddig jól működött?
A perl verziója:


dev@dev:~/streaminfo# perl -v | grep version
This is perl 5, version 20, subversion 2 (v5.20.2) built for i586-linux-gnu-thread-multi-64int
dev@dev:~/streaminfo#

Hozzászólások

Nem értek a perlhez, de a sok varázslás a végén micsoda?
Ha kiveszed belőle a shutdown($socket,1) sort megy. :P