[reSIProcate] Provisional Response without contact
Hi,
On a response from an INVITE, the remote UA may respond with a provisional
response (1xx) without a contact. This is allowed according to the RFC.
Actually DUM does not create a Dialog in such a case. Instead, DUM creates
a dialog if, and only if, a the contact field is present in the message.
The UAC should use a handler which derives from the abstract class
DialogSetHandler and implement the fonction onNonDialogCreatingProvisional.
Does someone can describe the normal behaviour of a UAC when it receives a
180 without contact? Is there a standard in this topic?
Waht I tried to do is:
1) generate a local ring back tone if there is no SDP in the message, or
2) play a ringback tone on the calling party side if there is a SDP.
Such behaviour is easy to implement but there is a problem. If the caller
wants to release the session (without dialog) while ringing, it seems
(maybe I'm wrong) that the only way to release the session is to send a
CANCEL message towards the callee (using DUM). A Dialog should be established
in order to send a CANCEL.
The next thing I've noticed is that DUM seems to be not very compliant
with regards to the RFC 3261.
In this spec, it is clearly mentioned that
"...only 2xx and 101-199 responses with a To tag, where the request was INVITE,
will establish a dialog." (RFC 3261 chap.12.1).
DUM creates a Dialog only if "contact" field is present in the response msg.
Thanks for your help.