+ head = self.recv(5)
+ if head != b"SSOCK":
+ raise socket.error("unexpected reply from %s: %r" % (host, head))
+ head = self.recv(1)
+ if head == b"+":
+ buf = b""
+ while True:
+ r = self.recv(1)
+ if r == b"":
+ raise socket.error("unexpected EOF in SSH socket stream")
+ elif r == b"\n":
+ break
+ buf += r
+ return
+ elif head == b"-":
+ buf = b""
+ while True:
+ r = self.recv(1)
+ 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))