From b3dbcd4b32954c0c374f3269f667176f3fc1c3fe Mon Sep 17 00:00:00 2001 From: shadowsocked Date: Mon, 2 Apr 2018 14:55:57 +0800 Subject: [PATCH] Fix #1209 --- shadowsocks/manager.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/shadowsocks/manager.py b/shadowsocks/manager.py index 62f187e..ba072fa 100644 --- a/shadowsocks/manager.py +++ b/shadowsocks/manager.py @@ -18,6 +18,8 @@ from __future__ import absolute_import, division, print_function, \ with_statement +import os +import atexit import errno import traceback import socket @@ -35,6 +37,9 @@ STAT_SEND_LIMIT = 50 class Manager(object): def __init__(self, config): + atexit.register(self.cleanup) + self._is_unix = False + self._mngr_address = None self._config = config self._relays = {} # (tcprelay, udprelay) self._loop = eventloop.EventLoop() @@ -57,6 +62,8 @@ class Manager(object): else: addr = manager_address family = socket.AF_UNIX + self._is_unix = True + self._mngr_address = manager_address self._control_socket = socket.socket(family, socket.SOCK_DGRAM) self._control_socket.bind(addr) @@ -78,6 +85,13 @@ class Manager(object): a_config['password'] = password self.add_port(a_config) + def cleanup(self): + if self._is_unix: + try: + os.unlink(self._mngr_address) + except: + pass + def add_port(self, config): port = int(config['server_port']) servers = self._relays.get(port, None)