Skip to content

Commit f05cd20

Browse files
committed
Exit gracefully when socket fails to open
This fixes prevents a traceback that was shown when trying to listen to an address on which 'bind' fails.
1 parent 99f83ca commit f05cd20

File tree

1 file changed

+19
-14
lines changed

1 file changed

+19
-14
lines changed

websockify/websockifyserver.py

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -718,20 +718,25 @@ def start_server(self):
718718
be overridden) for each new client connection.
719719
"""
720720

721-
if self.listen_fd != None:
722-
lsock = socket.fromfd(self.listen_fd, socket.AF_INET, socket.SOCK_STREAM)
723-
elif self.unix_listen != None:
724-
lsock = self.socket(host=None,
725-
unix_socket=self.unix_listen,
726-
unix_socket_mode=self.unix_listen_mode,
727-
unix_socket_listen=True)
728-
else:
729-
lsock = self.socket(self.listen_host, self.listen_port, False,
730-
self.prefer_ipv6,
731-
tcp_keepalive=self.tcp_keepalive,
732-
tcp_keepcnt=self.tcp_keepcnt,
733-
tcp_keepidle=self.tcp_keepidle,
734-
tcp_keepintvl=self.tcp_keepintvl)
721+
try:
722+
if self.listen_fd != None:
723+
lsock = socket.fromfd(self.listen_fd, socket.AF_INET, socket.SOCK_STREAM)
724+
elif self.unix_listen != None:
725+
lsock = self.socket(host=None,
726+
unix_socket=self.unix_listen,
727+
unix_socket_mode=self.unix_listen_mode,
728+
unix_socket_listen=True)
729+
else:
730+
lsock = self.socket(self.listen_host, self.listen_port, False,
731+
self.prefer_ipv6,
732+
tcp_keepalive=self.tcp_keepalive,
733+
tcp_keepcnt=self.tcp_keepcnt,
734+
tcp_keepidle=self.tcp_keepidle,
735+
tcp_keepintvl=self.tcp_keepintvl)
736+
except OSError as e:
737+
self.msg("Openening socket failed: %s", str(e))
738+
self.vmsg("exception", exc_info=True)
739+
sys.exit()
735740

736741
if self.daemon:
737742
keepfd = self.get_log_fd()

0 commit comments

Comments
 (0)