* ignore signals in subprocesses
The sub-processes started by ProcessPoolExecutor will also receive SIGINT when the main process receives it. This results in the signal handler running in every subprocess and fail to create the task to close all connections. They print this error to stdout
* cleanup UPnP shutdown
make an explicit call to UPnP shutdown() (which joins the thread). Improve logging a bit
* wait for initialize_weight_proof task when shutting down