Ticket #186 (closed defect: fixed)

Opened 12 years ago

Last modified 12 years ago

Bug with destination address calculation for strict route set (thanks Hoi-Ho Chan)

Reported by: bennylp Owned by: bennylp
Priority: major Milestone: release-0.5.10.3
Component: pjsip Version: 0.5.10.2
Keywords: Cc:
Backport to 1.x milestone: Backported:

Description (last modified by bennylp) (diff)

The destination address of a request is calculated by pjsip_get_request_addr() function in sip_util.[hc] file. For strict-route case, this function will remove the top-most Route, put this Route URI into target URI, and place the original target URI as the last Route header.

When there is only one strict Route header present, effectively this will swap the value of Route URI with the request URI.

The problem occurs because this function was called twice by the transaction, first during UAC transaction initialization and second when sending the request. Because of this, on the second call of the function, the function will swap back the Route and request URI, putting back the Route and request URI of the original request'''

Effectively this means that the strict Route header will be ignored!

Change History

comment:1 Changed 12 years ago by bennylp

  • Status changed from new to closed
  • Resolution set to fixed
  • Description modified (diff)

Fixed in r1077:

The function pjsip_get_request_addr() is now split into two functions:

  1. pjsip_get_request_dest(), which will just calculate the destination address of the request without modifying the request, and
  2. pjsip_process_route_set(), which will do both calculating the destination address of the request and may modify the request for strict-route case.

comment:2 Changed 12 years ago by bennylp

  • Summary changed from Major bug with destination address calculation for strict route set (thanks Hoi-Ho Chan) to Bug with destination address calculation for strict route set (thanks Hoi-Ho Chan)

Fixed compilation warnings because of previous changes in r1078.

Note: See TracTickets for help on using tickets.