43 return dict((h, s == 0) for (h, s) in # dict-from-generator |
43 return dict((h, s == 0) for (h, s) in # dict-from-generator |
44 self._stat(hashes).iteritems()) |
44 self._stat(hashes).iteritems()) |
45 |
45 |
46 def sendfile(self, filename, hash): |
46 def sendfile(self, filename, hash): |
47 self.ui.debug('remotestore: sendfile(%s, %s)\n' % (filename, hash)) |
47 self.ui.debug('remotestore: sendfile(%s, %s)\n' % (filename, hash)) |
48 fd = None |
|
49 try: |
48 try: |
50 fd = lfutil.httpsendfile(self.ui, filename) |
49 with lfutil.httpsendfile(self.ui, filename) as fd: |
51 return self._put(hash, fd) |
50 return self._put(hash, fd) |
52 except IOError as e: |
51 except IOError as e: |
53 raise error.Abort( |
52 raise error.Abort( |
54 _('remotestore: could not open file %s: %s') |
53 _('remotestore: could not open file %s: %s') |
55 % (filename, str(e))) |
54 % (filename, str(e))) |
56 finally: |
|
57 if fd: |
|
58 fd.close() |
|
59 |
55 |
60 def _getfile(self, tmpfile, filename, hash): |
56 def _getfile(self, tmpfile, filename, hash): |
61 try: |
57 try: |
62 chunks = self._get(hash) |
58 chunks = self._get(hash) |
63 except urlerr.httperror as e: |
59 except urlerr.httperror as e: |