Index: ldirectord =================================================================== RCS file: /home/cvs/linux-ha/linux-ha/ldirectord/ldirectord,v retrieving revision 1.67 diff -u -r1.67 ldirectord --- ldirectord 21 May 2003 02:10:14 -0000 1.67 +++ ldirectord 3 Jun 2003 03:20:34 -0000 @@ -1513,14 +1513,22 @@ sub check_http { - require LWP::UserAgent; + use LWP::UserAgent; + if($DEBUG > 2) { + use LWP::Debug qw(+); + } my ($v, $r) = @_; - my $ua = new LWP::UserAgent; - $ua->agent("LinuxDirector/0.1 ".$ua->agent); - $ua->timeout($$v{negotiatetimeout}); + my $ua = new LWP::UserAgent(); my $req = new HTTP::Request(GET=>"$$r{url}"); - my $res = $ua->request($req); + my $res; + { + # LWP makes ungaurded calls to eval + # which throw a fatal exception if they fail + # Needless to say, this is completely stupid. + local $SIG{'__DIE__'} = "DEFAULT"; + $res = $ua->request($req); + } my $recstr = $$r{receive}; if ($res->is_success && (!($recstr =~ /.+/) || $res->content =~ /$recstr/)) { service_set($v, $r, "up"); @@ -1528,6 +1536,7 @@ return 1; } else { service_set($v, $r, "down"); + &ld_debug(3, "Headers " . $res->headers->as_string); &ld_debug(2, "check_http: $$r{url} is down\n"); return 0; }