Re: [reSIProcate-users] Added message body and headers not included during re-subscription
>From examing the code it seems that the message body should be
preserved for refreshes, however if any of the following occur, then
it seems that a completely new subscription is created where any
custom changes to the original Subscribe message will not be preserved
(see occurances of mDum.makeSubscription in ClientSubscription.cxx:
1. a 481 response is received
2. a 408, 413, 480, 486, 500, 503, 600 or 603 error is received with a
Retry-After header.
In your code, make sure you are modifying the SipMessage pointed to by
the SharedPtr returned from the mDum.makeSubscription call (as you are
in the sample code you included).
Also a slightly cleaner/safer way of adding the message body would be
something like:
Data xmlBodyData = .....;
Mime type("text", "xml");
OctetContents contents(xmlBodyData, type);
msg->addContents(&contents);
Scott
On Mon, Dec 15, 2008 at 2:57 AM, Wong Kok Meng-a17866
<kokmeng.wong@xxxxxxxxxxxx> wrote:
> Hi,
>
> I create a SUBSCRIBE message using DialogUsageManager::makeSubscription(). I
> add a message body and a couple message headers to the SUBSCRIBE message. I
> then use DialogUsageManager::send() to send out the SUBSCRIBE message. It
> looks good for the first SUBSCRIBE message. When the subscription expiry
> timer expires, it does a refresh subscription. However, in the re-SUBSCRIBE
> message, I don't see the message body and message headers that are added by
> me. My code looks something like this:
>
> // create SUBSCRIBE message
> SharedPtr<SipMessage> msg;
> msg = Dum.makeSubscription(targetUri, event.c_str());
>
> // add message body and headers
> std:string body = "<some values>";
> msg->header(h_ContentType).type() = "text";
> msg->header(h_ContentType).subtype() = "xml";
> char *buf = new char[body.size() + 1];
> msg->addBuffer(buf);
> strcpy(buf, body.c_str());
> msg->setBody(buf, body.size());
>
> // send SUBSCRIBE messge
> Dum.send(msg);
>
> The way I use to overcome this problem is to re-include the message body and
> header in the function ClientSubscriptionHandler::onReadyToSend(). Are there
> other recommended ways?
>
> Thank you.
>
> Regards,
> Kok Meng
>
> _______________________________________________
> resiprocate-users mailing list
> resiprocate-users@xxxxxxxxxxxxxxx
> List Archive: http://list.resiprocate.org/archive/resiprocate-users/
>