hgext/largefiles/remotestore.py
changeset 30142 3dcaf1c4e90d
parent 29313 0ccab84f9630
child 30180 736f92c44656
equal deleted inserted replaced
30141:c01acee367ec 30142:3dcaf1c4e90d
    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: