From 12f790c7cf9548a811baae3f5cad3b9d12b4da01 Mon Sep 17 00:00:00 2001 From: Erik Eriksson Date: Tue, 13 Dec 2016 07:02:24 +0100 Subject: [PATCH] Display error message instead of exception (#4866) * Display error message instead of exception Display error message in log instead of stack trace. (Usually happens when a server is already running at the same port.) * Update __init__.py Better error handling when reading SSL certificate * Update __init__.py * Update __init__.py --- homeassistant/components/http/__init__.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/http/__init__.py b/homeassistant/components/http/__init__.py index de864a0c193..bfc5d662105 100644 --- a/homeassistant/components/http/__init__.py +++ b/homeassistant/components/http/__init__.py @@ -288,10 +288,16 @@ class HomeAssistantWSGI(object): cors_added.add(route) if self.ssl_certificate: - context = ssl.SSLContext(SSL_VERSION) - context.options |= SSL_OPTS - context.set_ciphers(CIPHERS) - context.load_cert_chain(self.ssl_certificate, self.ssl_key) + try: + context = ssl.SSLContext(SSL_VERSION) + context.options |= SSL_OPTS + context.set_ciphers(CIPHERS) + context.load_cert_chain(self.ssl_certificate, self.ssl_key) + except OSError as error: + _LOGGER.error("Could not read SSL certificate from %s: %s", + self.ssl_certificate, error) + context = None + return else: context = None @@ -305,8 +311,12 @@ class HomeAssistantWSGI(object): self._handler = self.app.make_handler() - self.server = yield from self.hass.loop.create_server( - self._handler, self.server_host, self.server_port, ssl=context) + try: + self.server = yield from self.hass.loop.create_server( + self._handler, self.server_host, self.server_port, ssl=context) + except OSError as error: + _LOGGER.error("Failed to create HTTP server at port %d: %s", + self.server_port, error) self.app._frozen = False # pylint: disable=protected-access