diff --git a/secop/lib/__init__.py b/secop/lib/__init__.py index 96fb073..ce72e16 100644 --- a/secop/lib/__init__.py +++ b/secop/lib/__init__.py @@ -29,6 +29,7 @@ import threading import traceback from os import environ, path + repodir = path.abspath(path.join(path.dirname(__file__), '..', '..')) if path.splitext(sys.executable)[1] == ".exe" and not path.basename(sys.executable).startswith('python'): diff --git a/secop/server.py b/secop/server.py index 5ad87bb..833dc14 100644 --- a/secop/server.py +++ b/secop/server.py @@ -232,7 +232,7 @@ class Server: if opts: errors.append(self.unknown_options(cls, opts)) self.modules = OrderedDict() - failure_traceback = None # traceback for the last error + failure_traceback = None # traceback for the first error failed = set() # python modules failed to load self.lastError = None for modname, options in self.module_cfg.items(): @@ -249,7 +249,8 @@ class Server: errors.append('%s not found' % classname) else: failed.add(pymodule) - failure_traceback = traceback.format_exc() + if failure_traceback is None: + failure_traceback = traceback.format_exc() errors.append('error importing %s' % classname) else: try: @@ -263,7 +264,8 @@ class Server: for errtxt in e.args[0] if isinstance(e.args[0], list) else [e.args[0]]: errors.append(' ' + errtxt) except Exception: - failure_traceback = traceback.format_exc() + if failure_traceback is None: + failure_traceback = traceback.format_exc() errors.append('error creating %s' % modname) poll_table = dict() @@ -292,7 +294,8 @@ class Server: try: modobj.initModule() except Exception as e: - failure_traceback = traceback.format_exc() + if failure_traceback is None: + failure_traceback = traceback.format_exc() errors.append('error initializing %s: %r' % (modname, e)) if errors: