< Previous by Date Date Index Next by Date >
< Previous in Thread Thread Index  

[reSIProcate] DUM: Late SDP API(Repost)


In the spirit of Alan's last repost...

Currently we do not call InviteSessionHandler::onConnected(for UAS) until
the ACK is received.  This is fine in low-latency networks.

However, after testing w/ FWD(pathological, I know) a few issues arise.

Proposals:

Normal Media(answer in 200 or before):

UAC: Call onConnected when the 2xx is received, RTP is established.  If
the
ACK is late this doesn't delay the call.  If the ack doesn't arrive,
13.1.1.4 states that the call should be torn down, but I don't see why a
phone w/ a valid RTP stream would wish to do this. The app decides when it
receives the ackNotReceived callback.

UAS: call onConnected when 2xx is sent?

Late Media:

1.) Don't call onConnected until ACK is received
        +hides late media from user; avoids additional callback
        -ties offer/answer & SIP state machines together
2.) Call onConnected when 2xx is received. Additional callback,
offerAnswerNegotiationFailed is called if the ACK is not received or does
not contain any media.
        -additional callback
        +state machines are not tied together


Also, in any case there is an ackNotReceived callback.  The user can
Choose to tear down the call at this point(b2bua, maybe) or not(endpoint).

I'm leaning toward option #1 for late media.  Failure of ACK arrival is
fatal for late media.
        - onTerminated is designed to take a failure response; currently
faked out w/ a 408. Could add an overload. + easier for the API user


Thoughts?

Derek