From 9e762ec638fc25ba0dd69be84cebfd34b2e4a406 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 22:36:03 +0100 Subject: [PATCH] G teller: an ask the router refused (the client's Refused with its words) is the ended ask the teller waits on or says MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Builds: design 47 G §570, §638 Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- .../mesh-delivery-teller/cmd/mesh-delivery-teller/teller.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/mesh-delivery-teller/cmd/mesh-delivery-teller/teller.go b/modules/mesh-delivery-teller/cmd/mesh-delivery-teller/teller.go index 46b969b8..f66012b6 100644 --- a/modules/mesh-delivery-teller/cmd/mesh-delivery-teller/teller.go +++ b/modules/mesh-delivery-teller/cmd/mesh-delivery-teller/teller.go @@ -469,6 +469,11 @@ func (t *Teller) Said(h occ.Handled, w oc.Warrant, err error) { // said is Said under the lock (catchUp holds it). func (t *Teller) said(h occ.Handled, w oc.Warrant, err error) { + if h == occ.Refused && w.Outcome == occ.OutcomeRefused { + // The client answers Refused with the router's words for an ask the router refused at take-in (design 47 G §570, + // §638): the ask is closed as any ended ask is, so the teller treats it as the ended ask it was (as before §638). + h = occ.Recorded + } if w.Outcome == occ.OutcomeRefused && forWantOfRoom(w.Words) { if h == occ.Recorded { t.roomRefused(w)