Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hi Monks,
I'm getting the following error from a piece of code I found on the intertubes
Cannot initialize proxy daemon: Can't assign requested address at /Lib +rary/Perl/5.10.0/HTTP/Proxy.pm line 271.
This is running on OSX 10.6.3 with the latest modules downloaded from cpan today.
I've tried running it under sudo, but the same error occurs.
Can anyone point me in the right direction to solve this?
#!/usr/bin/perl use HTTP::Recorder "0.03_01"; use HTTP::Proxy; # Set everything to undef if you have no proxy-servers # in your organisation my %whoami = ( # listen to every network interface on this machine: # host => undef, # host => "127.0.0.1", # listen only to network interface 10.1.1.5 host => "10.95.81.5", # which is the port I shall listen port => "3128", ); # this is for forwarding all requests to my proxy in the company my %proxy = ( host => "http://proxy.zdf:3128", user => undef, pass => undef, ); # set HTTP::Recorder as the agent my $agent = HTTP::Recorder->new( # Log to a file # file => "/tmp/tmpfile", file => "proxy.log", showwindow => 1); # Set my own proxy to forward requests $agent->proxy( "http", $proxy{host} ) if $proxy{host}; $request->proxy_authorization_basic( @proxy{ qw/user pass/ } ) if $proxy{user}; my $proxy = HTTP::Proxy->new; $proxy->agent( $agent ); $proxy->port( $whoami{port} ) if $whoami{port}; # Set how I get soon from my users if ( $whoami{host} ) { # My interface to be reached $proxy->host( $whoami{host} ); } # My port to be reached $proxy->port( $whoami{port} ); # you may need to set the host print "Your proxy-server in your web-browser shall be:\n"; printf "\t%s:%s\n", $whoami{host} ? $whoami{host} : "the_host_i_run", $whoami{port} ? $whoami{port} : 8080; print "Navigate to http://http-recorder/ to download the script\n"; print "\twhich has been generated\n"; # Endless loop $proxy->start();

Replies are listed 'Best First'.
Re: HTTP::Proxy error
by Anonymous Monk on Apr 19, 2010 at 04:51 UTC
    "Can't assign requested address" means
    • it doesn't exist
    • its in use
    • you don't have permission
    • your firewall is blocking it (or some antispyware)
    eliminate the possibilities one by one
Re: HTTP::Proxy error
by Khen1950fx (Canon) on Apr 19, 2010 at 05:24 UTC
    I tinkered with it and this works, but I have my doubts about the utility of HTTP::Recorder. It hasn't been upgraded in five years, and it's been a few years since I used it.
    #!/usr/bin/perl use strict; use warnings; use HTTP::Proxy; use HTTP::Recorder "0.03_01"; # Set everything to undef if you have no proxy-servers # in your organisation my %whoami = ( # listen to every network interface on this machine: # host => undef, # host => "127.0.0.1", # listen only to network interface 10.1.1.5 host => "10.95.81.5", # which is the port I shall listen port => "3128", ); # this is for forwarding all requests to my proxy in the company my %proxy = ( host => "http://proxy.zdf:3128", user => undef, pass => undef, ); # set HTTP::Recorder as the agent my $agent = HTTP::Recorder->new( # Log to a file # file => "/tmp/tmpfile", file => "proxy.log", showwindow => 1); # Set my own proxy to forward requests $agent->proxy( "http", $proxy{host} ) if $proxy{host}; my $request->proxy_authorization_basic( @proxy{ qw/user pass/ } ) if $proxy{user}; my $proxy = HTTP::Proxy->new; $proxy->agent( $agent ); $proxy->port(8080); $proxy->init; $proxy->port( $whoami{port} ) if $whoami{port}; # Set how I get soon from my users if ( $whoami{host} ) { # My interface to be reached $proxy->host( $whoami{host} ); } # My port to be reached $proxy->port( $whoami{port} ); # you may need to set the host print "Your proxy-server in your web-browser shall be:\n"; printf "\t%s:%s\n", $whoami{host} ? $whoami{host} : "the_host_i_run", $whoami{port} ? $whoami{port} : 8080; print "Navigate to http://http-recorder/ to download the script\n"; print "\twhich has been generated\n"; $proxy->start;