* refs/pull/32712/head:
cephadm: SO_REUSEADDR when doing bind check
Reviewed-by: Michael Fritch <mfritch@suse.com>
def attempt_bind(s, address, port):
# type (str) -> None
try:
+ s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((address, port))
except (socket.error, OSError) as e: # py2 and py3
+ msg = 'Cannot bind to IP %s port %d: %s' % (address, port, e)
+ logger.warning(msg)
if e.errno == errno.EADDRINUSE:
- raise OSError
+ raise OSError(msg)
elif e.errno == errno.EADDRNOTAVAIL:
- return
+ pass
finally:
s.close()