mirror of
https://github.com/ilyakooo0/urbit.git
synced 2024-09-20 15:08:34 +03:00
Merge pull request #5932 from urbit/ted/ack-crash
ames: fix "ack crash"
This commit is contained in:
commit
a5f08643ff
@ -1746,6 +1746,14 @@
|
|||||||
++ on-plea
|
++ on-plea
|
||||||
|= [=ship =plea]
|
|= [=ship =plea]
|
||||||
^+ event-core
|
^+ event-core
|
||||||
|
:: since flow kill goes like:
|
||||||
|
:: client vane cork task -> client ames pass cork as plea ->
|
||||||
|
:: -> server ames sinks plea -> server ames +on-plea (we are here);
|
||||||
|
:: if it's %cork plea passed to ames from its sink,
|
||||||
|
:: give %done and process flow closing after +on-take-done call
|
||||||
|
::
|
||||||
|
?: =([%a /close ~] plea)
|
||||||
|
(emit duct %give %done ~)
|
||||||
:: .plea is from local vane to foreign ship
|
:: .plea is from local vane to foreign ship
|
||||||
::
|
::
|
||||||
=/ ship-state (~(get by peers.ames-state) ship)
|
=/ ship-state (~(get by peers.ames-state) ship)
|
||||||
@ -1764,14 +1772,6 @@
|
|||||||
=/ sndr [our our-life.channel]
|
=/ sndr [our our-life.channel]
|
||||||
=/ rcvr [ship her-life.channel]
|
=/ rcvr [ship her-life.channel]
|
||||||
"plea {<sndr^rcvr^bone=bone^vane.plea^path.plea>}"
|
"plea {<sndr^rcvr^bone=bone^vane.plea^path.plea>}"
|
||||||
:: since flow kill goes like:
|
|
||||||
:: client vane cork task -> client ames pass cork as plea ->
|
|
||||||
:: -> server ames sinks plea -> server ames +on-plea (we are here);
|
|
||||||
:: if it's %cork plea passed to ames from its sink,
|
|
||||||
:: give %done and process flow closing after +on-take-done call
|
|
||||||
::
|
|
||||||
?: &(=(vane.plea %a) =(path.plea `path`/close) ?=(~ payload.plea))
|
|
||||||
(emit duct %give %done ~)
|
|
||||||
abet:(on-memo:(make-peer-core peer-state channel) bone plea %plea)
|
abet:(on-memo:(make-peer-core peer-state channel) bone plea %plea)
|
||||||
:: +on-cork: handle request to kill a flow
|
:: +on-cork: handle request to kill a flow
|
||||||
::
|
::
|
||||||
@ -2396,6 +2396,10 @@
|
|||||||
:_ tang.u.dud
|
:_ tang.u.dud
|
||||||
leaf+"ames: {<her.channel>} fragment crashed {<mote.u.dud>}"
|
leaf+"ames: {<her.channel>} fragment crashed {<mote.u.dud>}"
|
||||||
(run-message-sink bone %hear lane shut-packet ?=(~ dud))
|
(run-message-sink bone %hear lane shut-packet ?=(~ dud))
|
||||||
|
:: benign ack on corked bone
|
||||||
|
::
|
||||||
|
?: (~(has in corked.peer-state) bone)
|
||||||
|
peer-core
|
||||||
:: Just try again on error, printing trace
|
:: Just try again on error, printing trace
|
||||||
::
|
::
|
||||||
:: Note this implies that vanes should never crash on %done,
|
:: Note this implies that vanes should never crash on %done,
|
||||||
|
Loading…
Reference in New Issue
Block a user