Ticket #2085 (closed defect: fixed)

Opened 4 months ago

Last modified 4 months ago

Via header mismatch in CANCEL

Reported by: nanang Owned by: bennylp
Priority: normal Milestone: release-2.8
Component: pjsip Version: trunk
Keywords: Cc:
Backport to 1.x milestone: Backported: no

Description

Scenario:

  1. An account is registered using a TCP/TLS transport, as allow_via_rewrite is set, account's Via is rewritten with public IP.
  2. The TCP/TLS transport gets disconnected.
  3. INVITE for the account is sent using a new TCP/TLS transport, Via header for this INVITE is local IP address (of the new transport), this is as expected because no re-REGISTER has been sent and the account's Via address is no longer valid.
  4. CANCEL is sent, but using current account's Via address while it should use the same Via header as the original INVITE to be cancelled, so this CANCEL is rejected with status code 481 (transaction does not exist).

See also #1996.

Thanks Marcus Froeschl for the report.

Change History

comment:1 Changed 4 months ago by nanang

  • Status changed from new to closed
  • Resolution set to fixed

In 5733:

Fix #2085:

  • Do not override Via header of a CANCEL request, its values are copied from the original INVITE already.
  • Reset account's Via address & transport when SIP TCP/TLS transport is disconnected.
Note: See TracTickets for help on using tickets.