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

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