gall: fix %doff handling

Previous +ap-doff kicked the agent repeatedly.  We needed to kick
it only once.  Now publisher agents clear their incoming subscription
state without the subscriber making lots of new subscriptions because
of repeated kicking.
This commit is contained in:
Ted Blackman 2022-08-10 19:48:39 +03:00
parent 0baad53fb4
commit 9e47490c95

View File

@ -1774,14 +1774,14 @@
=+ [wyr dok]=i.subs
=/ let (~(got by boar.yoke) wyr dok)
|- ^+ ap-core
~> %slog.[0 leaf+"gall: +ap-doff {<agent-name>} {<dok>} {<let>}"]
~> %slog.[0 leaf+"gall: +ap-doff {<[agent-name wyr dok let]>}"]
=. ap-core (ap-pass [(scot %ud let) wyr] %agent dok %leave ~)
=. ap-core (ap-pass wyr %huck dok %b %huck [%gall %unto %kick ~])
?. =(0 let)
$(let (dec let))
:: kill old-style subscription wire with no nonce
::
=. ap-core (ap-pass wyr %agent dok %leave ~)
=. ap-core (ap-pass wyr %huck dok %b %huck [%gall %unto %kick ~])
^$(subs t.subs)
:: +ap-mule: run virtualized with intercepted scry, preserving type
::