Merge branch 'master' into python3
authorFredrik Tolf <fredrik@dolda2000.com>
Mon, 7 Jan 2013 06:28:45 +0000 (07:28 +0100)
committerFredrik Tolf <fredrik@dolda2000.com>
Mon, 7 Jan 2013 06:28:45 +0000 (07:28 +0100)
Conflicts:
pdm/sshsock.py

1  2 
pdm-repl
pdm/sshsock.py

diff --cc pdm-repl
Simple merge
diff --cc pdm/sshsock.py
@@@ -9,9 -9,33 +9,33 @@@ class sshsocket(object)
          if port is not None:
              args += ["-p", str(int(port))]
          args += [host]
 -        args += ["python", "-m", "pdm.sshsock", path]
 +        args += ["python3", "-m", "pdm.sshsock", path]
          self.proc = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, close_fds=True)
          fcntl.fcntl(self.proc.stdout, fcntl.F_SETFL, fcntl.fcntl(self.proc.stdout, fcntl.F_GETFL) | os.O_NONBLOCK)
 -        if head != "SSOCK":
+         head = self.recv(5)
 -        if head == "+":
 -            buf = ""
++        if head != b"SSOCK":
+             raise socket.error("unexpected reply from %s: %r" % (host, head))
+         head = self.recv(1)
 -                if r == "":
++        if head == b"+":
++            buf = b""
+             while True:
+                 r = self.recv(1)
 -                elif r == "\n":
++                if r == b"":
+                     raise socket.error("unexpected EOF in SSH socket stream")
 -        elif head == "-":
 -            buf = ""
++                elif r == b"\n":
+                     break
+                 buf += r
+             return
 -                if r in ("\n", ""):
++        elif head == b"-":
++            buf = b""
+             while True:
+                 r = self.recv(1)
 -            raise socket.error(buf)
++                if r in {b"\n", b""}:
+                     break
+                 buf += r
++            raise socket.error(buf.decode("utf-8"))
+         else:
+             raise socket.error("unexpected reply from %s: %r" % (host, head))
  
      def close(self):
          if self.proc is not None:
          self.close()
  
  def cli():
 -    fcntl.fcntl(sys.stdin, fcntl.F_SETFL, fcntl.fcntl(sys.stdin, fcntl.F_GETFL) | os.O_NONBLOCK)
 +    fcntl.fcntl(sys.stdin.buffer, fcntl.F_SETFL, fcntl.fcntl(sys.stdin.buffer, fcntl.F_GETFL) | os.O_NONBLOCK)
      sk = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
      try:
-         sk.connect(sys.argv[1])
+         try:
+             sk.connect(sys.argv[1])
+         except socket.error as err:
+             sys.stdout.write("SSOCK-connect: %s\n" % err)
+             return
+         sys.stdout.write("SSOCK+\n")
 -        buf1 = ""
 -        buf2 = ""
 +        buf1 = b""
 +        buf2 = b""
          while True:
              wfd = []
              if buf1: wfd.append(sk)