in reply to How to specify outlet interface for LWP?

HTTP::Request::Common - how to bind to specific IP address?, binding to a vhost using LWP
  • Comment on Re: How to specify outlet interface for LWP?

Replies are listed 'Best First'.
Re^2: How to specify outlet interface for LWP?
by sunshine_august (Scribe) on May 25, 2009 at 05:46 UTC
    Doesn't work... It seems that there is no way to specify an interface for LWP. The only way works for me seems to add a proper rule into the route table, but doing this needs root privileges.
      Doesn't work... It seems that there is no way to specify an interface for LWP

      ?? bullpucky

      #!/usr/bin/perl -- use strict; use warnings; use LWP 5.826; use LWP::Protocol::http; #perldoc -q "How do I find out my hostname/domainname/IP address?" use Socket; use Sys::Hostname; my $host = hostname(); my $addr = inet_ntoa(scalar gethostbyname($host || 'localhost')); my $ua = LWP::UserAgent->new(); { print "# works like default\n"; local @LWP::Protocol::http::EXTRA_SOCK_OPTS = ( LocalAddr => $addr ) +; print $ua->get("http://www.example.com")->status_line,"\n"; } { print "# bad hostname\n"; local @LWP::Protocol::http::EXTRA_SOCK_OPTS = ( LocalAddr => "nohost +:666" ); print $ua->get("http://www.example.com")->status_line,"\n"; } { print "# unknown error\n"; local @LWP::Protocol::http::EXTRA_SOCK_OPTS = ( LocalAddr => "localh +ost" ); print $ua->get("http://www.example.com")->status_line,"\n"; printf "$^E\n"; } __END__ # works like default 200 OK # bad hostname 500 Can't connect to www.example.com:80 (Bad hostname 'nohost:666') # unknown error 500 Can't connect to www.example.com:80 (connect: Unknown error) A connection attempt failed because the connected party did not proper +ly respond after a period of time, or established connection failed because connected host has failed to respond
        oh, yes, it works now, there is some bug in my script break the lwp part, now I fix it, and it works fine for me. Thanks and sorry for my mistake:).