Skip to content

Sync upstream main (3ea35cd: 0.6.12, proxy auto-ACK fix) - #17

Merged
tgeorge06 merged 3 commits into
mainfrom
sync/upstream-3ea35cd
Sep 29, 2026
Merged

tgeorge06 merged 3 commits into
mainfrom
sync/upstream-3ea35cd

Conversation

@tgeorge06

Copy link
Copy Markdown
Owner

What came in

Conflicts and resolution

  • No textual conflicts (ort auto-merged src/sip/message.rs, src/transaction/endpoint.rs, src/transaction/transaction.rs, src/transaction/tests/test_client.rs).
  • One semantic fix-up in the merge commit: upstream's test_invite_2xx_upstream_via_delivery_and_ack asserted the delivered response equals the sent one. The fork stamps Response::received_from in Endpoint::on_received_message (RECURSIVECX.md patch 12), so the test now asserts the stamp is present, clears it, then compares.
  • Interaction review with the fork's client-INVITE 2xx ACK path (armed ACK body bfea16b, ACK body across 401/407 bac5b7c, take_dialog + BYE a 2xx crossing CANCEL 9d00ec5, p11, lateack, timerh series): the new branch only fires for a 2xx whose Via has more than one hop. The dialog layer builds every request with exactly one Via (make_request_with_vias(.., vec![via], ..)), so UA legs (all of rcx's) keep the fork behavior unchanged. The server-INVITE side (Timer G on every transport for a 2xx, 64*T1 teardown) is untouched by 3ea35cd.

RECURSIVECX.md

One paragraph under "Other fork behavior rcx will observe" describing the proxy 2xx behavior and why the UA path is unaffected.

Tests

cargo test (lib + integration + doc): 394 lib passed, 65 doc passed, 0 failed. cargo fmt --all -- --check: clean for the files touched (the only diffs are pre-existing, in src/dialog/tests/mod.rs and src/dialog/tests/test_refer.rs).
Note: the fork-only transport::tests::test_raw_message_log_level::test_udp_raw_messages_are_logged_at_debug_only flaked once in five full runs (passes alone and on reruns). Transport code is not touched by this merge; it looks like the process-wide callsite interest cache race its comment describes.

🤖 Generated with Claude Code

https://claude.ai/code/session_01L1Gu5CifqgBjASbxYmJ6mr

shenjinti and others added 3 commits September 28, 2026 00:22
Detect upstream Via hops, including comma-separated entries, and deliver repeated or forked 2xx responses to the application without generating ACKs. Preserve the original cleanup deadline and suppress cached ACK replay for proxy 2xx responses.

Keep UA and non-2xx ACK behavior unchanged. This reuses the existing cleanup timer rather than implementing the full RFC 6026 Accepted state and Timer L/M lifecycle.

Validation: cargo test --lib (332 passed); focused regression passed after simplifying Via detection.

Refs restsend#145, restsend#127
No textual conflicts. Upstream's test_invite_2xx_upstream_via_delivery_and_ack
compared the delivered response with the one it sent; the fork stamps
Response::received_from on receipt, so the test clears that stamp before
comparing. RECURSIVECX.md notes that the proxy (multi-Via) 2xx path skips the
automatic ACK while the UA path keeps the fork's ACK behavior.
@tgeorge06
tgeorge06 merged commit 009def0 into main Sep 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants