gall: properly handle empty outstanding ack queue

Fixes #2977
This commit is contained in:
Philip Monk 2020-06-04 18:09:01 -07:00
parent 790ae3dadc
commit c68b0e817a
No known key found for this signature in database
GPG Key ID: B66E1F02604E44EC
2 changed files with 9 additions and 7 deletions

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5bf230ec02ec58ce0e87168b411280d74177fcb0f4f5d3f33342304bdd1fc94c
size 13817689
oid sha256:46d79f0b3dc1c4ff5f7ca56f1601a26a0fbc67540ab0ebcc672dc282fe8bbe74
size 13825786

View File

@ -620,12 +620,14 @@
?~ t.t.t.wire
=/ full-wire sys+wire
=/ stand
%+ ~(gut by outstanding.agents.state) [full-wire hen]
:: default is do nothing; should only hit if cleared queue
:: in +load 3-to-4
::
(~(gut by outstanding.agents.state) [full-wire hen] ~)
::
:: default is to send both ack types; should only hit if
:: cleared queue in +load 3-to-4 or +load-4-to-5
::
=? stand ?=(~ stand)
(~(put to *(qeu remote-request)) %missing)
~| [full-wire=full-wire hen=hen stand=stand outs=outstanding.agents.state]
~| [full-wire=full-wire hen=hen stand=stand]
=^ rr stand ~(get to stand)
[rr (~(put by outstanding.agents.state) [full-wire hen] stand)]
:: non-null case of wire is old, remove on next breach after