瀏覽代碼

Don't print a traceback when remote host closes connection

Jonas Borgström 12 年之前
父節點
當前提交
175f4bb505
共有 2 個文件被更改,包括 10 次插入2 次删除
  1. 4 1
      darc/archiver.py
  2. 6 1
      darc/remote.py

+ 4 - 1
darc/archiver.py

@@ -13,7 +13,7 @@ from .key import key_creator
 from .helpers import location_validator, format_time, \
     format_file_mode, IncludePattern, ExcludePattern, exclude_path, adjust_patterns, to_localtime, \
     get_cache_dir, get_keys_dir, format_timedelta, prune_split, Manifest, Location, remove_surrogates
-from .remote import RepositoryServer, RemoteRepository
+from .remote import RepositoryServer, RemoteRepository, ConnectionClosed
 
 
 class Archiver:
@@ -428,6 +428,9 @@ def main():
     except Archive.DoesNotExist as e:
         archiver.print_error('Error: Archive "%s" does not exist', e)
         exit_code = 1
+    except ConnectionClosed:
+        archiver.print_error('Connection closed by remote host')
+        exit_code = 1
     except KeyboardInterrupt:
         archiver.print_error('Error: Keyboard interrupt')
         exit_code = 1

+ 6 - 1
darc/remote.py

@@ -12,6 +12,11 @@ from .lrucache import LRUCache
 BUFSIZE = 10 * 1024 * 1024
 
 
+class ConnectionClosed(Exception):
+    """Connection closed by remote host
+    """
+
+
 class RepositoryServer(object):
 
     def __init__(self):
@@ -109,7 +114,7 @@ class RemoteRepository(object):
             if r:
                 data = os.read(self.stdout_fd, BUFSIZE)
                 if not data:
-                    raise Exception('Remote host closed connection')
+                    raise ConnectionClosed()
                 self.unpacker.feed(data)
                 for type, msgid, error, res in self.unpacker:
                     if msgid == self.msgid: