Opened 13 years ago

Closed 13 years ago

Last modified 13 years ago

#186 closed defect (fixed)

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)

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 (2)

comment:1 Changed 13 years ago by bennylp

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

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 13 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.