Opened 14 years ago

Closed 14 years ago

Last modified 14 years ago

#1047 closed defect (fixed)

Don't send UPDATE if remote doesn't support it (thanks Bogdan Krakowski for the report)

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

Description (last modified by bennylp)

Currently we have two situations that cause UPDATE to be sent regardless whether remote supports it or not:

  1. After ICE negotiation, if we are caller and the default addresses have changed.
  2. On session timer refresh

These would cause error that may lead to call disconnection if remote doesn't support UPDATE (for example, when UPDATE request times out).

With #1089, now we know if remote supports UPDATE or not, we shouldn't send it if remote doesn't support it.

Change History (3)

comment:1 Changed 14 years ago by bennylp

  • Component changed from pjsua-lib to pjsip
  • Description modified (diff)

comment:2 Changed 14 years ago by bennylp

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

(In [3215]) Fixes #1047 (Don't send UPDATE if remote doesn't support it (thanks Bogdan Krakowski for the report)) and fixes #1097 (Support sending UPDATE without SDP). Details:

  • Session timer fixes:
    • will look at remote capability in Allow header
    • if UPDATE is supported, will send UPDATE without SDP first. If this fails, will send UPDATE with SDP
    • otherwise will send re-INVITE
  • PJSUA-LIB will look at dialog's remote capability to determine whether re-INVITE or UPDATE should be sent to change default addresses after ICE negotiation.
  • pjsip_inv_update() now allows NULL offer, in which case the UPDATE will be sent without SDP.

comment:3 Changed 14 years ago by bennylp

In r3217:

  • fixed the bug introduced r3215 above, which cause SDP negotiator's state to be cleared after failed UAC UPDATE transaction is terminated, which means UPDATE can only be sent 5 seconds after the last UPDATE if the last UPDATE failed.
Note: See TracTickets for help on using tickets.