roslib: make xmlrpc server more robust to signals
This commit is contained in:
parent
1450c4a03a
commit
5c6c008862
|
@ -231,9 +231,18 @@ class XmlRpcNode(object):
|
||||||
if self.handler is not None:
|
if self.handler is not None:
|
||||||
self.handler._ready(self.uri)
|
self.handler._ready(self.uri)
|
||||||
logger.info("xml rpc node: starting XML-RPC server")
|
logger.info("xml rpc node: starting XML-RPC server")
|
||||||
try:
|
while not self.is_shutdown:
|
||||||
self.server.serve_forever()
|
try:
|
||||||
except:
|
self.server.serve_forever()
|
||||||
# ignore on shutdown
|
except IOError as (errno, errstr):
|
||||||
if not self.is_shutdown:
|
# check for interrupted call, which can occur if we're
|
||||||
raise
|
# embedded in a program using signals. All other
|
||||||
|
# exceptions break _run.
|
||||||
|
if errno != 4:
|
||||||
|
self.is_shutdown = True
|
||||||
|
logger.error("serve forever IOError: %s, %s"%(errno, errstr))
|
||||||
|
# re-raise
|
||||||
|
raise
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue