meowcaller: bound incoming final accept - #11
Conversation
Source of truth: https://github.com/WhiskeySockets/wacrg/blob/0114515cef5c0344a8a864f6ad5ff58e650550ed/spec/signalling/flow-incoming-1to1.yaml#L82-L115 Source of truth: https://github.com/WhiskeySockets/wacrg/blob/0114515cef5c0344a8a864f6ad5ff58e650550ed/spec/signalling/call-mute.yaml#L22-L34 Source of truth: https://github.com/WhiskeySockets/wacrg/blob/0114515cef5c0344a8a864f6ad5ff58e650550ed/spec/signalling/call-accept.yaml#L8-L37
Source of truth: https://github.com/oxidezap/whatsapp-rust/blob/d37b1756d05fb34c9b6c2410c48dd20d27394929/wacore/src/stanza/call.rs#L397-L405 Source of truth: https://github.com/oxidezap/whatsapp-rust/blob/d37b1756d05fb34c9b6c2410c48dd20d27394929/wacore/src/stanza/call.rs#L526-L621 Source of truth: https://github.com/oxidezap/whatsapp-rust/blob/d37b1756d05fb34c9b6c2410c48dd20d27394929/wacore/src/stanza/call.rs#L644-L668 Validated: go test -count=1 ./signaling; go vet ./signaling
Source of truth: https://github.com/oxidezap/whatsapp-rust/blob/d37b1756d05fb34c9b6c2410c48dd20d27394929/wacore/src/stanza/call.rs#L135-L155 Source of truth: https://github.com/oxidezap/whatsapp-rust/blob/d37b1756d05fb34c9b6c2410c48dd20d27394929/wacore/src/stanza/call.rs#L530-L569 Validated: go test -count=1 . ./signaling; go vet . Live relay validation remains pending.
purpshell
left a comment
There was a problem hiding this comment.
The bounded/idempotent incoming-accept state machine is promising. Its synthetic merge passes go test ./..., go vet ./..., and go test -race ..
It is not ready to leave draft yet because it also changes capability bytes, preaccept video shape, and final-accept video shape without live validation. Please rebase after #9 and select the incoming FNA relay for the echoed final-accept endpoint. Separate the accept lifecycle from the signaling-shape changes, add exact capability and video-attribute fixtures, and live-test incoming audio and incoming video calls before marking ready.
| e.c.log.Error().Err(err).Str("call_id", callID).Msg("incoming accept fallback failed") | ||
| } | ||
| }) | ||
| m.accept.timer = timer |
There was a problem hiding this comment.
This uses the direction-agnostic endpoint selector and therefore chooses the non-FNA relay on incoming calls. After #9, pass the incoming direction and echo the same selected FNA endpoint used by media allocation.
|
Resolve conflicts for merge |
Makes incoming final accept bounded and idempotent. The existing mute_v2 path remains immediate, while a configurable fallback starts only after relay transport is ready. Includes deterministic fake-clock/fake-sender coverage for voice, video, cancellation, concurrency, late callbacks, and send failure. Validation: go vet ./..., go test ./..., and go test -race ./... with Go 1.26.4.