Ticket #111 (closed defect: fixed)

Opened 11 years ago

Last modified 11 years ago

Workaround for forking

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

Description

Application should really handle forking dialog, but it's quite complicated to do that, so currently even pjsua-api cannot handle forked dialog. But there seems to be a simpler workaround to solve this problem.

We're taking the fact that in most cases only one 2xx response will ever get back to the dialog. Several 1xx responses will get through and these will affect dialog/session state and mess around with SDP negotiation if the response carries SDP body, but this is not as fatal as having incorrect To tag recorded by the dialog.

Currently the dialog takes the first To tag seen and set it as the remote tag. If the tag in 2xx response is different than this tag, ACK will be sent with wrong To tag and incoming request with this tag will be rejected with 481.

The workaround for this is to take the last To tag received in the response and set it as remote tag.

Change History

comment:1 Changed 11 years ago by bennylp

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

Fixed in r979.

When the To tag in the 2xx response is different than in 1xx, the 2xx response will be the authoritative response and will update the To tag, route-set, etc.

comment:2 Changed 11 years ago by bennylp

Actually this was fixed on r980 for the stable branch.

comment:3 Changed 11 years ago by bennylp

  • Status changed from closed to reopened
  • Version changed from 0.5.10 to 0.5.10.1
  • Resolution fixed deleted
  • Milestone changed from release-0.5.10.1 to release-0.5.10.2

Re-opened for 0.5.10.1.

comment:4 Changed 11 years ago by bennylp

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

Fixed in r988.

Note: See TracTickets for help on using tickets.