From 65177e791f069954d46cd5738b25ab964e6e9650 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jannes=20H=C3=B6ke?= Date: Sun, 22 Nov 2015 16:46:17 +0100 Subject: [PATCH] raise error instead of quietly exiting on bad SSL cert --- telegram/boteventhandler.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/telegram/boteventhandler.py b/telegram/boteventhandler.py index b1c8ae442..4121e06f2 100644 --- a/telegram/boteventhandler.py +++ b/telegram/boteventhandler.py @@ -6,6 +6,7 @@ This module contains the class BotEventHandler, which tries to make creating Telegram Bots intuitive! """ import logging +import os import ssl from threading import Thread from time import sleep @@ -180,8 +181,11 @@ class BotEventHandler: # Check SSL-Certificate with openssl, if possible try: + DEVNULL = open(os.devnull, 'wb') exit_code = subprocess.call(["openssl", "x509", "-text", "-noout", - "-in", cert]) + "-in", cert], + stdout=DEVNULL, + stderr=subprocess.STDOUT) except OSError: exit_code = 0 @@ -191,12 +195,13 @@ class BotEventHandler: certfile=cert, keyfile=key, server_side=True) + self.httpd.serve_forever(poll_interval=1) except ssl.SSLError as error: self.logger.error(str(error)) - return - - self.httpd.serve_forever(poll_interval=1) - self.logger.info('Event Handler thread stopped') + finally: + self.logger.info('Event Handler thread stopped') + else: + raise TelegramError('SSL Certificate invalid') def stop(self): """