Browse Source

use file socket for daemon

283
ThomasV 10 years ago
parent
commit
59c76f5e09
  1. 18
      lib/daemon.py
  2. 2
      lib/network_proxy.py

18
lib/daemon.py

@ -30,7 +30,7 @@ from network import Network
from util import print_error, print_stderr, parse_json from util import print_error, print_stderr, parse_json
from simple_config import SimpleConfig from simple_config import SimpleConfig
DAEMON_PORT=8001 DAEMON_SOCKET = 'daemon.sock'
def do_start_daemon(config): def do_start_daemon(config):
@ -43,14 +43,14 @@ def do_start_daemon(config):
def get_daemon(config, start_daemon=True): def get_daemon(config, start_daemon=True):
import socket import socket
daemon_port = config.get('daemon_port', DAEMON_PORT) daemon_socket = os.path.join(config.path, DAEMON_SOCKET)
daemon_started = False daemon_started = False
while True: while True:
try: try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.connect(('localhost', daemon_port)) s.connect(daemon_socket)
if not daemon_started: if not daemon_started:
print_stderr("Connected to daemon on port %d"%daemon_port) print_stderr("Connected to daemon on", daemon_socket)
return s return s
except socket.error: except socket.error:
if not start_daemon: if not start_daemon:
@ -187,11 +187,13 @@ class NetworkServer(threading.Thread):
def daemon_loop(server): def daemon_loop(server):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
daemon_port = server.config.get('daemon_port', DAEMON_PORT) daemon_socket = os.path.join(server.config.path, DAEMON_SOCKET)
if os.path.exists(daemon_socket):
os.remove(daemon_socket)
daemon_timeout = server.config.get('daemon_timeout', 5*60) daemon_timeout = server.config.get('daemon_timeout', 5*60)
s.bind(('localhost', daemon_port)) s.bind(daemon_socket)
s.listen(5) s.listen(5)
s.settimeout(1) s.settimeout(1)
t = time.time() t = time.time()

2
lib/network_proxy.py

@ -29,7 +29,7 @@ import util
from network import Network from network import Network
from util import print_error, print_stderr, parse_json from util import print_error, print_stderr, parse_json
from simple_config import SimpleConfig from simple_config import SimpleConfig
from daemon import NetworkServer, DAEMON_PORT from daemon import NetworkServer

Loading…
Cancel
Save