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

Re: [reSIProcate-users] Added message body and headers not includedduring re-subscription


Hi,

On the same topic, I noticed that only these headers are included in the
refresh subscribe message:

Via
Max-Forwards
Route
Contact
To
From
Call-ID
Expires
Event
Content-Length

"Allow", "Supported", "Authorization" and our customized headers, which
are included in the initial subscribe message, are excluded in the
refresh subscribe message.

Is this what the resip expects to do? Or did I do something wrong in my
applcation? Please advise. Thank you very much.

Regards,
Kok Meng

-----Original Message-----
From: resiprocate-users-bounces@xxxxxxxxxxxxxxx
[mailto:resiprocate-users-bounces@xxxxxxxxxxxxxxx] On Behalf Of Wong Kok
Meng-a17866
Sent: Tuesday, January 06, 2009 3:22 PM
To: resiprocate-users@xxxxxxxxxxxxxxx
Subject: Re: [reSIProcate-users] Added message body and headers not
includedduring re-subscription

Hi,

Again on this topic, I'm encountering another problem but is similar.
This is my code:

  // create SUBSCRIBE message
  SharedPtr<SipMessage> msg;
  msg = Dum.makeSubscription(targetUri, event.c_str());

  // add extra headers and parameters
  msg->header(h_Contacts).front().param(p_<extension_parameter>) =
"<some_values>";
  msg->header(h_AcceptContacts).push_back(NameAddr("*"));
  msg->header(h_AcceptContacts).front().param(p_<extension_parameter>) =
"<some_values>";
 
msg->header(h_<extension_header>).push_back(resip::StringCategory("<some
_values>");
 
msg->header(h_PPreferredIdentities).push_back(userProfile->getDefaultFro
m());  

  // send SUBSCRIBE messge
  Dum.send(msg);

In the first subscription, all the customized headers and parameters are
seen in the SUBSCRIPTION message. However, in the next subscription
refreshes, h_Contacts and p_<extension_parameter> are there. However,
the rests of the customized headers are dropped.

Is this behaviour expected? Did I do anything wrong in the code? Is
there a way to overcome this problem?

Thank you very much for your time.

Regards,
Kok Meng, Wong

-----Original Message-----
From: slgodin@xxxxxxxxx [mailto:slgodin@xxxxxxxxx] On Behalf Of Scott
Godin
Sent: Wednesday, December 17, 2008 5:56 AM
To: Wong Kok Meng-a17866
Cc: resiprocate-users@xxxxxxxxxxxxxxx
Subject: 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/
>
_______________________________________________
resiprocate-users mailing list
resiprocate-users@xxxxxxxxxxxxxxx
List Archive: http://list.resiprocate.org/archive/resiprocate-users/