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

Re: [reSIProcate] [ReSIProcate_1.1_RC2] submit a patch for DUM/ClientPublication.cxx


Good find. Now, would it be necessary to call handler->onFailure() in this case? Is getting a 412 considered a "failure" for an unPUBLISH? (As far as intent goes, it seems not to me)

Best regards,
Byron Campen

Dear reSIProcate team,

I find a bug in the implementation of the "ClientPublication" class when handling response to a 412 message received from server.

You previously remove the "SIP-if-match" tag and republish the document.

This SHALL NOT be done if the 412 response is received when trying to end the publication (Expires header set to 0)

In that case nothing more have to be done !

In fact publishing again with expires set to 0 and without a Sip-if-match will raise a 412 again and again !!!


void ClientPublication::dispatch(const SipMessage& msg) {

...
         if (code == 412)
         {
                        // Receive a 412 while ending a publication, nothing more to do in this case.
                        if(mPublish->header(h_Expires).value() != 0 )
                        {
                                InfoLog(<< "SIPIfMatch failed -- republish");
                                mPublish->remove(h_SIPIfMatch);
                                update(mDocument);
                                return;
                        }
                        else {
                                delete this;
                                return;
                        }
         }        
         else if (code == 423) // interval too short

...
}

Hope this will be corrected in next candidate release

Best Regards

Fabrice ROUILLIER

_______________________________________________
resiprocate-devel mailing list

Attachment: smime.p7s
Description: S/MIME cryptographic signature