Velaki has asked for the wisdom of the Perl Monks concerning the following question:
I have a situation where my SOAP code works fine, up until the point I need to connect to a service that is unavailable. When I do, the process simply hangs.
The on_fault executes on call() after a few minutes, but never appears to return; instead, the process simply dies. No traps, eval doesn't protect it, no messages; just dies.
# This should work, not sure. use SOAP::Lite on_fault => sub { my $msg = "ERROR: "; my ($soap, $result) = @_; $msg .= ref $result ? $result->faultstring : $soap->transport->status; print STDERR "\tFault -> $msg\n"; }; # This works! my $c = eval { SOAP::Lite->uri($uri) ->on_action(sub { join '', @_ }) ->proxy($proxy); }; # This is suspect. $c->transport->timeout(5); # This hangs for minutes. my $r = eval { $c->call( SOAP::Data->name('FooService'), SOAP::Data->name('FooVar')->value($foo)->type('int')); };
And the timeout doesn't seem to work. Even when set to 2 seconds, it still hangs for minutes.
Thoughts?
"Perl. There is no substitute."
Back to
Seekers of Perl Wisdom