From 47dbb01552caa4708d82f8baa644edd8dbe06318 Mon Sep 17 00:00:00 2001
From: Anders Blomdell <anders.blomdell@control.lth.se>
Date: Wed, 17 Feb 2016 16:41:07 +0100
Subject: [PATCH] Fixed asyncio reader. Added -n to ssh command.

---
 loghandler.py | 23 ++++++++++++++++++-----
 primary.py    |  2 +-
 2 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/loghandler.py b/loghandler.py
index 4fdd78f..bba9c42 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 90c127f..bfacebb 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
-- 
GitLab