[reSIProcate] rejecting offer received to an SDP-less (re)INVITE
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 :)
br
Szo