diff options
-rw-r--r-- | rdiff-backup/rdiff_backup/connection.py | 6 | ||||
-rw-r--r-- | rdiff-backup/src/connection.py | 6 | ||||
-rw-r--r-- | rdiff-backup/src/setconnections.py | 17 |
3 files changed, 22 insertions, 7 deletions
diff --git a/rdiff-backup/rdiff_backup/connection.py b/rdiff-backup/rdiff_backup/connection.py index 4c87979..9842480 100644 --- a/rdiff-backup/rdiff_backup/connection.py +++ b/rdiff-backup/rdiff_backup/connection.py @@ -7,6 +7,7 @@ import types, os, tempfile, cPickle, shutil, traceback # class ConnectionError(Exception): pass +class ConnectionReadError(ConnectionError): pass class ConnectionQuit(Exception): pass @@ -210,8 +211,9 @@ class LowLevelPipeConnection(Connection): def _get(self): """Read an object from the pipe and return (req_num, value)""" header_string = self.inpipe.read(9) - assert len(header_string) == 9, \ - "Error reading from pipe (problem probably originated remotely)" + if not len(header_string) == 9: + raise ConnectionReadError("Truncated header string (problem " + "probably originated remotely)") try: format_string, req_num, length = (header_string[0], ord(header_string[1]), diff --git a/rdiff-backup/src/connection.py b/rdiff-backup/src/connection.py index 4c87979..9842480 100644 --- a/rdiff-backup/src/connection.py +++ b/rdiff-backup/src/connection.py @@ -7,6 +7,7 @@ import types, os, tempfile, cPickle, shutil, traceback # class ConnectionError(Exception): pass +class ConnectionReadError(ConnectionError): pass class ConnectionQuit(Exception): pass @@ -210,8 +211,9 @@ class LowLevelPipeConnection(Connection): def _get(self): """Read an object from the pipe and return (req_num, value)""" header_string = self.inpipe.read(9) - assert len(header_string) == 9, \ - "Error reading from pipe (problem probably originated remotely)" + if not len(header_string) == 9: + raise ConnectionReadError("Truncated header string (problem " + "probably originated remotely)") try: format_string, req_num, length = (header_string[0], ord(header_string[1]), diff --git a/rdiff-backup/src/setconnections.py b/rdiff-backup/src/setconnections.py index 07c6893..c423294 100644 --- a/rdiff-backup/src/setconnections.py +++ b/rdiff-backup/src/setconnections.py @@ -109,15 +109,26 @@ class SetConnections: conn_number = len(Globals.connections) conn = PipeConnection(stdout, stdin, conn_number) - cls.check_connection_version(conn) + cls.check_connection_version(conn, remote_cmd) Log("Registering connection %d" % conn_number, 7) cls.init_connection_routing(conn, conn_number, remote_cmd) cls.init_connection_settings(conn) return conn - def check_connection_version(cls, conn): + def check_connection_version(cls, conn, remote_cmd): """Log warning if connection has different version""" - remote_version = conn.Globals.get('version') + try: remote_version = conn.Globals.get('version') + except ConnectionReadError, exception: + Log.FatalError("""%s + +Couldn't start up the remote connection by executing + + %s + +Remember that, under the default settings, rdiff-backup must be +installed in the PATH on the remote system. See the man page for more +information.""" % (exception, remote_cmd)) + if remote_version != Globals.version: Log("Warning: Local version %s does not match remote version %s." % (Globals.version, remote_version), 2) |