[issue2302] Uses of SocketServer.BaseServer.shutdown have a race

Rafael Zanella report at bugs.python.org
Wed May 7 20:16:16 CEST 2008


Rafael Zanella <rafael.zanella at yahoo.com.br> added the comment:

>With the code as it stands, calls to shutdown that happen before
>serve_forever enters its loop will deadlock, and there's no simple way
>for the user to avoid this. The attached patch prevents the deadlock and
>allows multiple serve_forever..shutdown cycles, but it's pretty
>complicated. I could make it a lot simpler by making shutdown permanent:
>any later serve_forever calls would return immediately.

Never thought of using the SocketServer taht way, wouldn't the person
doing this bunch of shutdown()s and serve_forever()s be better off using
handle_request() on a loop instead ?

>A third choice would be to add a .serve_in_thread function that returns
>a token that can be used to shut down exactly that loop, instead of
>putting .shutdown() on the server. Any opinions?

I don't think I understand this part, what loop do you refer to ?

----------
nosy: +zanella

__________________________________
Tracker <report at bugs.python.org>
<http://bugs.python.org/issue2302>
__________________________________


More information about the Python-bugs-list mailing list