[reSIProcate] session timers and InviteSession
A few cases have come up with session-timers where I would like to
change the way InviteSession works. All of the following cases are
dealing with session-timers only so they assume the dialog is already
set up.
sender is the UAC that sends the UPDATE or INVITE
receiver is the UAS that receives the UPDATE or INVITE
sender INVITE
a) receive 200 OK with sdp with same origin as previously
- in this case we will always reINVITE with the same version as
current local sdp
- when the 200 OK is received we do not need to call onAnswer since
nothing has changed
b) receive 200 OK with sdp with different origin as previously
- the spec allows this to occur but I don't know what we should do. If
we call onAnswer in this case it may cause grief for the application
since onAnswer will be called without having called provideOffer(). I
propose that we call a new handler onRemoteSdpModified() in this case.
receiver INVITE (with sdp)
- if the sdp differs (version) from current remote sdp call onOffer.
Expect that the application will call provideAnswer.
receiver INVITE (no sdp)
- I don't think we handle this case correctly.
- should call onOfferRequired.
sender UPDATE (no sdp)
- no callbacks when 200 is received.
- note that the api will not allow an UPDATE to occur during a
session-timer that includes an SDP.
receiver UPDATE (no sdp)
- no callback when UPDATE is received. just send the 200.
receiver UPDATE (with sdp)
- call onOffer. provideAnswer will send the 200