Re: [reSIProcate] rejecting offer received to an SDP-less (re)INVITE
On 2012 Mar 14, Wed 11:40:39 Robert Szokovacs wrote:
> Hi,
>
> According to RFC 6337 section 5.2.4:
>
> Because the offer arrives in a response to the INVITE, the UAC cannot
> reject the message containing the offer. If the UAC wishes to reject
> the entire offer, it must send a PRACK or ACK request including all
> the media lines with ports set to zero. Then, if it does not wish to
> continue the session, it may send a CANCEL or BYE request to
> terminate the dialog.
>
> But if I understand the code correctly, reSiprocate sends the ACK without
> sdp: resip/dum/InviteSession.cxx:760 in InviteSession::reject
>
> // Sent a reINVITE no offer and received a 200-offer.
> // Simply send an ACK without an answer and stay in Connected.
> case SentReinviteAnswered:
> {
> InfoLog (<< "Not sending " << statusCode << " error since
> transaction"
> "already completed, sending answer-less ACK");
> transition(Connected);
> sendAck();
> break;
> }
>
> Also, upon receiving the ACK, in
> InviteSession::dispatchReceivedReinviteSentOffer, the cases OnAckAnswer and
> OnAck are distinguised, only by the existence of the SDP, not by its
> contents.
>
> Is this a known bug? I could not find the relevant information in earlier
> RFCs so maybe the code follows an older (or newer?) standard :)
I found it in RFC 3261:
If the initial offer is in the first reliable non-failure
message from the UAS back to UAC, the answer MUST be in the
acknowledgement for that message (in this specification, ACK
for a 2xx response).
br
Szo