Opened 14 years ago

Closed 14 years ago

Last modified 14 years ago

#1045 closed defect (fixed)

Handle incomplete SDP offer-answer in re-INVITE/UPDATE

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 nanang)

Cases:

  1. Receive no SDP answer in 200 reponse after sending re-INVITE or UPDATE with offer.
  2. Receive no SDP answer in ACK after sending 200 response with offer (incoming re-INVITE does not contain offer). Note that there is possibility that ACK uses same branch as the re-INVITE.

For such cases, the SDP negotiator state should be resetted to STATE_DONE, otherwise it could cause problems, e.g. assertion in sip_timer.c at line 370:

     pj_assert(pjmedia_sdp_neg_get_state(inv->neg) ==
        PJMEDIA_SDP_NEG_STATE_DONE);

Change History (3)

comment:1 Changed 14 years ago by nanang

  • Description modified (diff)
  • Summary changed from 200/OK without SDP should cause call to be disconnected to Handle incomplete SDP offer-answer in re-INVITE/UPDATE

comment:2 Changed 14 years ago by nanang

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

(In [3208]) Fix #1045:

  • Fixed invite module to reset SDP negotiator state after incomplete SDP offer-answer in re-INVITE/UPDATE.
  • Added some SIPp test scenarios.

comment:3 Changed 14 years ago by bennylp

In r3217: Another unterminated SDP offer/answer negotiation fix:

  • fixed unterminated negotiation if our media transport rejects incoming offer (e.g. due to mismatch SRTP transport) with 488.
  • to fix the above, modified the SDP negotiator (sdp_neg.[hc])'s pjmedia_sdp_neg_cancel_offer() to also be able to cancel in remote offer state
  • also fixed the bug introduced previous Session Timer fix (Re: #1047), 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.