Repository navigation
Sync upstream main (3ea35cd: 0.6.12, proxy auto-ACK fix) - #17
Merged
Merged
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What came in
825f326chore: bump version to 0.6.123ea35cdfix: avoid automatic ACKs for proxied INVITE 2xx responses (upstream Client INVITE transaction auto-ACKs 2xx final responses — incorrect for proxy use (RFC 3261 section 17.1.1.2), and not suppressable from outside restsend/rsipstack#145): a client INVITE 2xx with another Via hop is delivered to the TU on every retransmission/fork with no automatic ACK, cached ACKs are never replayed for it, and the first Timer D deadline is kept.333d015, REFER stays Confirmed, was already in the fork via Sync upstream main (333d015: REFER stays in Confirmed) #13.)Conflicts and resolution
ortauto-mergedsrc/sip/message.rs,src/transaction/endpoint.rs,src/transaction/transaction.rs,src/transaction/tests/test_client.rs).test_invite_2xx_upstream_via_delivery_and_ackasserted the delivered response equals the sent one. The fork stampsResponse::received_frominEndpoint::on_received_message(RECURSIVECX.md patch 12), so the test now asserts the stamp is present, clears it, then compares.bfea16b, ACK body across 401/407bac5b7c, take_dialog + BYE a 2xx crossing CANCEL9d00ec5, 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, insrc/dialog/tests/mod.rsandsrc/dialog/tests/test_refer.rs).Note: the fork-only
transport::tests::test_raw_message_log_level::test_udp_raw_messages_are_logged_at_debug_onlyflaked 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