diff --git a/loghandler.py b/loghandler.py index 4fdd78f31b0512bf3d38f8dfdafbef9eb680bba6..bba9c429274881b78987fd5b85fb8652e7d42475 100644 --- a/loghandler.py +++ b/loghandler.py @@ -75,10 +75,22 @@ class LOG: self.decode = decode - def __call__(self, flush=False): + def __call__(self): with self.mutex: + buf = os.read(self.fd, 4096) + self.buf.extend(buf) while True: - buf = os.read(self.fd, 10) + i = self.buf.find(b'\n') + if i < 0: break + self.log.MESSAGE(self.decode(self.buf[0:i]), + level=level) + self.buf = self.buf[i+1:] + + def flush(self): + with self.mutex: + while True: + + buf = os.read(self.fd, 4096) if len(buf) == 0: break self.buf.extend(buf) while True: @@ -87,8 +99,8 @@ class LOG: self.log.MESSAGE(self.decode(self.buf[0:i]), level=level) self.buf = self.buf[i+1:] - if len(self.buf) > 0 and flush: - self.log.MESSAGE(self.decode(self.buf), level=level) + if len(self.buf) > 0: + self.log.MESSAGE(self.decode(self.buf), level=level) class MakeFile: def __init__(self, log): @@ -102,5 +114,6 @@ class LOG: def __del__(self): loop.remove_reader(self.rpipe) os.close(self.wpipe) - self.reader(flush=True) + self.reader.flush() + return MakeFile(self) diff --git a/primary.py b/primary.py index 90c127ff48f314ed9845cf8d223396626882a5b1..bfacebb2c35c46a4b229fc20ab652890229910d0 100644 --- a/primary.py +++ b/primary.py @@ -156,7 +156,7 @@ class Client: log=self.server_log) socket_path = '/tmp/%s_client' % (self.uuid) cmd = ( - [ 'ssh', self.entry.mount.host ] + + [ 'ssh', '-n', self.entry.mount.host ] + ( self.options.user and [ '-l', self.options.user ] or []) + ( self.options.identity and