lntransport: CancelledError needs priority over LPConnClosed
Scenario (prior this change):
A task in lnpeer.Peer.taskgroup raises ORIG_EXC, e.g. in htlc_switch.
The taskgroup then cancels all its tasks and then awaits each (in cancel_remaining):
4e64c56042/aiorpcx/curio.py (L217-L221)
In Peer.main_loop, we would want ORIG_EXC to be raised,
but instead LightningPeerConnectionClosed() will be raised as
the Peer._message_loop() task is cancelled, and it is awaited first in cancel_remaining.
We should make sure that if a task is cancelled it will let the CancelledError
propagate out, or at least it does not raise a different exception instead.
This commit is contained in:
@@ -123,7 +123,9 @@ class LNTransportBase:
|
|||||||
break
|
break
|
||||||
try:
|
try:
|
||||||
s = await self.reader.read(2**10)
|
s = await self.reader.read(2**10)
|
||||||
except:
|
except asyncio.CancelledError:
|
||||||
|
raise
|
||||||
|
except Exception:
|
||||||
s = None
|
s = None
|
||||||
if not s:
|
if not s:
|
||||||
raise LightningPeerConnectionClosed()
|
raise LightningPeerConnectionClosed()
|
||||||
|
|||||||
Reference in New Issue
Block a user