From 1338fcf9b9dc89890127b5d20e43726c56d9b579 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maxime=20=E2=80=9Cpep=E2=80=9D=20Buquet?= Date: Mon, 4 Apr 2022 21:53:34 +0200 Subject: core: Log InvalidCABundle error in info buffer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Maxime “pep” Buquet --- poezio/core/core.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'poezio/core') diff --git a/poezio/core/core.py b/poezio/core/core.py index 0c71b566..7690e769 100644 --- a/poezio/core/core.py +++ b/poezio/core/core.py @@ -29,9 +29,11 @@ from typing import ( TYPE_CHECKING, ) from xml.etree import ElementTree as ET +from pathlib import Path from slixmpp import Iq, JID, InvalidJID from slixmpp.util import FileSystemPerJidCache +from slixmpp.xmlstream.xmlstream import InvalidCABundle from slixmpp.xmlstream.handler import Callback from slixmpp.exceptions import IqError, IqTimeout, XMPPError @@ -674,6 +676,26 @@ class Core: self.do_command(''.join(char_list), True) self.doupdate() + def loop_exception_handler(self, loop, context) -> None: + """Do not log unhandled iq errors and timeouts""" + handled_exceptions = (IqError, IqTimeout, InvalidCABundle) + if not isinstance(context['exception'], handled_exceptions): + loop.default_exception_handler(context) + elif isinstance(context['exception'], InvalidCABundle): + paths = context['exception'].path + error = ( + 'Poezio could not find a valid CA bundle file automatically. ' + 'Ensure the ca_cert_path configuration is set to a valid ' + 'CA bundle path, generally provided by the \'ca-certificates\' ' + 'package in your distribution.' + ) + if isinstance(paths, (str, Path)): + # error += '\nFound the following value: {path}'.format(path=str(path)) + paths = [paths] + if paths is not None: + error += f"\nThe following values were tried: {str([str(s) for s in paths])}" + self.information(error, 'Error') + def save_config(self): """ Save config in the file just before exit -- cgit v1.2.3