Opened 10 years ago

Closed 10 years ago

#860 closed defect (fixed)

REFER is sent instead of SUBSCRIBE with Expires=0 when when transferee doesn't terminate subscription after call transfer

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

Description

After call transfer is complete, normally transferee should terminate the subscription caused by REFER by sending NOTIFY with Subscription-State: terminated.

When transferee doesn't do that, transferer should terminate it by sending SUBSCRIBE with Expires: 0.

We don't do that, but instead we maintain the subscription, and when it is about to expire, we will send REFER again to refresh the subscription.

Change History (3)

comment:1 Changed 10 years ago by bennylp

  • Milestone changed from Sipit24 to release-1.3
  • Version changed from Sipit24 to trunk

comment:2 Changed 10 years ago by bennylp

  • Keywords sipit24 added

comment:3 Changed 10 years ago by bennylp

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

Several fixes in r2750:

  • will send SUBSCRIBE to refresh REFER subscription (not REFER!), only when required (such as when call transfer is running for longer than REFER subscription expiration, hence need to be refreshed)
  • replaced hardcoded REFER subscription duration (600s) with a macro, PJSIP_XFER_EXPIRES.
  • when NOTIFY with "200 OK" sipfrag body is received and subscription state is not terminated, send SUBSCRIBE with Expires=0 to terminate the REFER subscription
  • for transferee, terminate the subscription in CONNECTING state and not in CONFIRMED state. Terminating the subscription in CONFIRMED state causes redundant NOTIFYs with "200 OK" sipfrag body to be sent, one with active subscription and another with terminated state.
Note: See TracTickets for help on using tickets.