use
strict;
# Idea and implementation of Michael Douglass
@ISA
=
qw(SOAP::Transport::HTTP::Daemon)
;
sub
handle {
my
$self
=
shift
->new;
CLIENT:
while
(
my
$c
=
$self
->
accept
) {
my
$pid
=
fork
();
# We are going to close the new connection on one of two conditions
# 1. The fork failed ($pid is undefined)
# 2. We are the parent ($pid != 0)
unless
(
defined
$pid
&&
$pid
== 0 ) {
$c
->
close
;
next
;
}
# From this point on, we are the child.
$self
->
close
;
# Close the listening socket (always done in children)
# Handle requests as they come in
while
(
my
$r
=
$c
->get_request) {
$self
->request(
$r
);
$self
->SOAP::Transport::HTTP::Server::handle;
$c
->send_response(
$self
->response);
}
$c
->
close
;
return
;
}
}
1;