in reply to SOAP::Lite and Win32::Daemon

Here is a thought - I know you would resist a forked solution, but it seems to solve the issues in this problem domain. How about the main service (Process A) loop Fork off a process that handles the XML-HTTP/Soap etc (Process B).

Now, Process A can also be a client of Process B.
When we receive a Service termination request in Process A, we simply turn around and do a SOAP call to process B, asking it to please terminate. Then Process A terminates, and everyone dies happily.

(I dislike the idea of a cruel Infanticide, particularly when the victim is completely clueless why it is being killed.)

"When you are faced with a dilemma, might as well make dilemmanade. "