mirror of
https://github.com/9001/copyparty.git
synced 2025-08-19 18:02:28 -06:00
mute exception on zip abort
This commit is contained in:
parent
10430b347f
commit
2fb1e6dab8
|
@ -65,17 +65,19 @@ class StreamTar(StreamArc):
|
||||||
w.start()
|
w.start()
|
||||||
|
|
||||||
def gen(self) -> Generator[Optional[bytes], None, None]:
|
def gen(self) -> Generator[Optional[bytes], None, None]:
|
||||||
while True:
|
try:
|
||||||
buf = self.qfile.q.get()
|
while True:
|
||||||
if not buf:
|
buf = self.qfile.q.get()
|
||||||
break
|
if not buf:
|
||||||
|
break
|
||||||
|
|
||||||
self.co += len(buf)
|
self.co += len(buf)
|
||||||
yield buf
|
yield buf
|
||||||
|
|
||||||
yield None
|
yield None
|
||||||
if self.errf:
|
finally:
|
||||||
bos.unlink(self.errf["ap"])
|
if self.errf:
|
||||||
|
bos.unlink(self.errf["ap"])
|
||||||
|
|
||||||
def ser(self, f: dict[str, Any]) -> None:
|
def ser(self, f: dict[str, Any]) -> None:
|
||||||
name = f["vp"]
|
name = f["vp"]
|
||||||
|
|
|
@ -272,41 +272,44 @@ class StreamZip(StreamArc):
|
||||||
|
|
||||||
def gen(self) -> Generator[bytes, None, None]:
|
def gen(self) -> Generator[bytes, None, None]:
|
||||||
errors = []
|
errors = []
|
||||||
for f in self.fgen:
|
try:
|
||||||
if "err" in f:
|
for f in self.fgen:
|
||||||
errors.append((f["vp"], f["err"]))
|
if "err" in f:
|
||||||
continue
|
errors.append((f["vp"], f["err"]))
|
||||||
|
continue
|
||||||
|
|
||||||
try:
|
try:
|
||||||
for x in self.ser(f):
|
for x in self.ser(f):
|
||||||
|
yield x
|
||||||
|
except GeneratorExit:
|
||||||
|
raise
|
||||||
|
except:
|
||||||
|
ex = min_ex(5, True).replace("\n", "\n-- ")
|
||||||
|
errors.append((f["vp"], ex))
|
||||||
|
|
||||||
|
if errors:
|
||||||
|
errf, txt = errdesc(errors)
|
||||||
|
self.log("\n".join(([repr(errf)] + txt[1:])))
|
||||||
|
for x in self.ser(errf):
|
||||||
yield x
|
yield x
|
||||||
except:
|
|
||||||
ex = min_ex(5, True).replace("\n", "\n-- ")
|
|
||||||
errors.append((f["vp"], ex))
|
|
||||||
|
|
||||||
if errors:
|
cdir_pos = self.pos
|
||||||
errf, txt = errdesc(errors)
|
for name, sz, ts, crc, h_pos in self.items:
|
||||||
self.log("\n".join(([repr(errf)] + txt[1:])))
|
buf = gen_hdr(h_pos, name, sz, ts, self.utf8, crc, self.pre_crc)
|
||||||
for x in self.ser(errf):
|
yield self._ct(buf)
|
||||||
yield x
|
cdir_end = self.pos
|
||||||
|
|
||||||
cdir_pos = self.pos
|
_, need_64 = gen_ecdr(self.items, cdir_pos, cdir_end)
|
||||||
for name, sz, ts, crc, h_pos in self.items:
|
if need_64:
|
||||||
buf = gen_hdr(h_pos, name, sz, ts, self.utf8, crc, self.pre_crc)
|
ecdir64_pos = self.pos
|
||||||
yield self._ct(buf)
|
buf = gen_ecdr64(self.items, cdir_pos, cdir_end)
|
||||||
cdir_end = self.pos
|
yield self._ct(buf)
|
||||||
|
|
||||||
_, need_64 = gen_ecdr(self.items, cdir_pos, cdir_end)
|
buf = gen_ecdr64_loc(ecdir64_pos)
|
||||||
if need_64:
|
yield self._ct(buf)
|
||||||
ecdir64_pos = self.pos
|
|
||||||
buf = gen_ecdr64(self.items, cdir_pos, cdir_end)
|
|
||||||
yield self._ct(buf)
|
|
||||||
|
|
||||||
buf = gen_ecdr64_loc(ecdir64_pos)
|
ecdr, _ = gen_ecdr(self.items, cdir_pos, cdir_end)
|
||||||
yield self._ct(buf)
|
yield self._ct(ecdr)
|
||||||
|
finally:
|
||||||
ecdr, _ = gen_ecdr(self.items, cdir_pos, cdir_end)
|
if errors:
|
||||||
yield self._ct(ecdr)
|
bos.unlink(errf["ap"])
|
||||||
|
|
||||||
if errors:
|
|
||||||
bos.unlink(errf["ap"])
|
|
||||||
|
|
Loading…
Reference in a new issue