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

Re: [reSIProcate-users] Fwd: how to parse sip frag


Here is some code from the recon project RemoteParticipant::processReferNotify that looks at the SipFrag body:

   SipFrag* frag  = dynamic_cast<SipFrag*>(notify.getContents());
   if (frag)
   {
      // Get StatusCode from SipFrag
      if (frag->message().isResponse())
      {
         code = frag->message().header(h_StatusLine).statusCode();
      }
   }

Scott

On Fri, Jul 24, 2009 at 10:37 PM, maodong hu <hhmmdd@xxxxxxx> wrote:
hi, all

I got following sip message for refer response, so I want parse the sipfrag

[14:51:36]                      onSubScriptionTerminated


NOTIFY sip:87654321@xxxxxxxxxxxxxx:5061 SIP/2.0

Via: SIP/2.0/UDP 202.79.217.251:5060;branch=z9hG4bK0015172A039A072EF526F12F86E8

Max-Forwards: 70

Contact: <sip:202.79.217.251:5060>

To: <sip:87654321@xxxxxxxxxxxxxx>;tag=51dcb074

From: "unknown"<sip:203.125.84.22>;tag=0lmxNIAFv20004jR0001u000Y7X4XBDC8

Call-ID: 9a2a15000317-4a6415b6-7cdfe6ee-1f6bb380-9e@xxxxxxxxx

CSeq: 46524 NOTIFY

Content-Type: message/sipfrag

Subscription-State: terminated;expires=60;reason=noresource

Event: refer

Content-Length: 24


SIP/2.0 404 Not Found




my source code for parse sip frag like this:

//subscription can be ended through a notify or a failure response.
void TSipAccount::onTerminated(ClientSubscriptionHandle h, const SipMessage* msg)
{
      
    if (msg != NULL && msg->exists(resip::h_Event) && msg->header(resip::h_Event).value() == "refer")
    {
        const Mime sipfrag_t("message", "sipfrag");
        int reason = 0;
        if (msg->exists(resip::h_ContentType) && msg->header(resip::h_ContentType) == sipfrag_t)
        {
            SipFrag frag(msg->getContents()->getBodyData(), msg->header(resip::h_ContentType));
            const SipMessage &fmsg = frag.message();
            if (!fmsg.isRequest())
            {
                reason = fmsg.header(h_StatusLine).statusCode();
  
            }
        }
       }
}


this compile is ok, but got link error, I found the constructor of SipFrag I used declared in SipFrag.hxx, but not implemented in SipFrag.cxx

so can anybody help to find out how to parse sipfrag?

--
Best Regards

Maodong Hu



--
Best Regards

Maodong Hu

_______________________________________________
resiprocate-users mailing list
resiprocate-users@xxxxxxxxxxxxxxx
List Archive: http://list.resiprocate.org/archive/resiprocate-users/