don't crash when plugin backends do

This commit is contained in:
AAGaming
2022-09-18 14:51:17 -04:00
parent 62a5bdbbb0
commit c774451ff4
+8
View File
@@ -5,6 +5,8 @@ from asyncio import (Lock, get_event_loop, new_event_loop,
from concurrent.futures import ProcessPoolExecutor from concurrent.futures import ProcessPoolExecutor
from importlib.util import module_from_spec, spec_from_file_location from importlib.util import module_from_spec, spec_from_file_location
from json import dumps, load, loads from json import dumps, load, loads
from logging import getLogger
from traceback import format_exc
from os import path, setgid, setuid from os import path, setgid, setuid
from signal import SIGINT, signal from signal import SIGINT, signal
from sys import exit from sys import exit
@@ -40,12 +42,15 @@ class PluginWrapper:
self.author = json["author"] self.author = json["author"]
self.flags = json["flags"] self.flags = json["flags"]
self.log = getLogger("plugin")
self.passive = not path.isfile(self.file) self.passive = not path.isfile(self.file)
def __str__(self) -> str: def __str__(self) -> str:
return self.name return self.name
def _init(self): def _init(self):
try:
signal(SIGINT, lambda s, f: exit(0)) signal(SIGINT, lambda s, f: exit(0))
set_event_loop(new_event_loop()) set_event_loop(new_event_loop())
@@ -62,6 +67,9 @@ class PluginWrapper:
get_event_loop().create_task(self.Plugin._main(self.Plugin)) get_event_loop().create_task(self.Plugin._main(self.Plugin))
get_event_loop().create_task(self._setup_socket()) get_event_loop().create_task(self._setup_socket())
get_event_loop().run_forever() get_event_loop().run_forever()
except:
self.log.error("Failed to start " + self.name + "!\n" + format_exc())
exit(0)
async def _setup_socket(self): async def _setup_socket(self):
self.socket = await start_unix_server(self._listen_for_method_call, path=self.socket_addr, limit=BUFFER_LIMIT) self.socket = await start_unix_server(self._listen_for_method_call, path=self.socket_addr, limit=BUFFER_LIMIT)