Hi,

I am having trouble closing properly a soap server, so I'm trying here !

I have a soap_serve method, that is going to use a soap socket to
receive messages from network. I am using keep alive sockets and
soap->bind_flags = SO_REUSEADDR; on them.

The thing is, my method is blocking in soap_serve, more precisely in
soap_begin_recv. 
This is exactly the behavior I want : a socket used may times.

However, whenever I want to exit the thread in which I'm waiting on
soap_begin_recv, I seem not to be able to do it properly.
On Windows, it works fine : I call 
      soap_destroy(fSoap); // dealloc C++ data
      soap_end(fSoap); // dealloc data and clean up
      soap_done(fSoap); // detach soap struct
on the soap object, and that wakes up the soap_begin_serve and exits
the soap_serve method.
On Linux, doing the same thing does not seem to wake up my thread. I
cannot wait for the thread to finish, as it won't exit properly. Well
it will, but I have to wait fSoap->recv_timeout, which I set to 5
minutes...

Am I missing something ? I tried so many soap method to wake this
soap_begin_serve mathod on Linux, but nothing seems to work...

Thanks !
Emmanuel

Reply via email to