diff options
author | ben <ben@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109> | 2002-03-26 20:43:33 +0000 |
---|---|---|
committer | ben <ben@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109> | 2002-03-26 20:43:33 +0000 |
commit | b3ed4655ef3b9694c53325eb952f5affc45cdb51 (patch) | |
tree | 19dfb6f5fb455caea9e86f98ff80b38213bfca12 | |
parent | abbd3dde1b37b92be97c099edc1d31745b9b21ae (diff) | |
download | rdiff-backup-b3ed4655ef3b9694c53325eb952f5affc45cdb51.tar.gz |
Improved error reporting when rdiff-backup doesn't start correctly on
the remote side.
git-svn-id: http://svn.savannah.nongnu.org/svn/rdiff-backup/trunk@27 2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109
-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) |