mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-04-28 06:49:46 +00:00
SFTP: avoid race condition where .write could be called on an OverwriteableFileConsumer after it had been closed.
This commit is contained in:
parent
c6b414c815
commit
6e114e44b5
@ -336,6 +336,7 @@ class OverwriteableFileConsumer(PrefixingLogMixin):
|
|||||||
self.downloaded = 0
|
self.downloaded = 0
|
||||||
self.milestones = [] # empty heap of (offset, d)
|
self.milestones = [] # empty heap of (offset, d)
|
||||||
self.overwrites = [] # empty heap of (start, end)
|
self.overwrites = [] # empty heap of (start, end)
|
||||||
|
self.is_closed = False
|
||||||
self.done = self.when_reached(download_size) # adds a milestone
|
self.done = self.when_reached(download_size) # adds a milestone
|
||||||
self.is_done = False
|
self.is_done = False
|
||||||
def _signal_done(ign):
|
def _signal_done(ign):
|
||||||
@ -376,6 +377,8 @@ class OverwriteableFileConsumer(PrefixingLogMixin):
|
|||||||
|
|
||||||
def write(self, data):
|
def write(self, data):
|
||||||
if noisy: self.log(".write(<data of length %r>)" % (len(data),), level=NOISY)
|
if noisy: self.log(".write(<data of length %r>)" % (len(data),), level=NOISY)
|
||||||
|
if self.is_closed:
|
||||||
|
return
|
||||||
if self.check_abort():
|
if self.check_abort():
|
||||||
self.close()
|
self.close()
|
||||||
return
|
return
|
||||||
@ -520,6 +523,7 @@ class OverwriteableFileConsumer(PrefixingLogMixin):
|
|||||||
#self.unregisterProducer()
|
#self.unregisterProducer()
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
|
self.is_closed = True
|
||||||
self.finish()
|
self.finish()
|
||||||
self.f.close()
|
self.f.close()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user