Opened 8 years ago

Closed 8 years ago

#1587 closed enhancement (fixed)

Option to accept call replace when in early state and as UAS

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

Description (last modified by nanang)

A user likes to have same transfer behaviour as he is used to his old analogue PABX. The user have an active call and wants to transfer it to another extension, but only when the extension is free. So first, the user put the 1st call in hold and invoke a new call, once the alert tone comes up (receiving 180), the user press transfer.

Currently, we will reject such transfer request, in line to RFC 3891 section 3:

If the Replaces header field matches an early dialog that was not
initiated by this UA, it returns a 481 (Call/Transaction Does Not
Exist) response to the new INVITE, and leaves the matched dialog
unchanged. Note that since Replaces matches only a single dialog,
the replacement dialog will not be retargeted according to the same
forking logic as the original request which created the early dialog.

Thanks Peter Koletzki for the feedback and the patch.

Change History (5)

comment:1 Changed 8 years ago by nanang

  • Description modified (diff)

comment:2 Changed 8 years ago by nanang

In r4267:

  • Added settings to accept call replace when in early state and as UAS:
    • accept_replace_in_early_state in pjsip_cfg_t for run time setting, and
    • PJSIP_ACCEPT_REPLACE_IN_EARLY_STATE for initial value and compile time setting.

comment:3 Changed 8 years ago by nanang

In 4268:

Re #1587:

  • Don't answer call replace request with 200 if the replaced call hasn't reach confirmed state and has UAS role.
  • Only apply accept_replace_in_early_state when call is in early state.

comment:4 Changed 8 years ago by nanang

In 4269:

Re #1587: Respond to call replace request with the last provisional response sent in the replaced call.

comment:5 Changed 8 years ago by nanang

  • Resolution set to fixed
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.