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

[reSIProcate] Using SipMessage::addOutboundDecorator from within a DUM application


Hi,

I need to cache a copy of an initial outgoing (UAC) INVITE (as sent on
the wire, so including all the Vias, ...) from a DUM application.

I know that I can probably do it using an outgoing DUM feature, but
I'd rather use something that doesn't get called all the time (i.e.
for all messages). I also looked at InviteSession::onReadyToSend, but
since in my case the message is the initial UAC INVITE the session
itself doesn't exist when it gets sent so onReadyToSend doesn't get
called.

What I wanted to originally do was to use a custom MessageDecorator
and add it to the SipMessage created when calling
DUM::makeInviteSession. This should have worked fine but I realized it
didn't since DUM::send ends up calling
SipMessage::clearOutboundDecorators()... which clears up my decorator.

Besides fixing what is said in DUM::send (see below) or using an
outgoing DUM feature, would there be any other way of doing it?

   // .bwc. This is to avoid leaving extra copies of the decorator in msg,
   // when the caller of this function holds onto the reference (and this
   // happens quite often in DUM). I would prefer to refactor such that we
   // are operating on a copy in this function, but this would require a lot
   // of work on the DumFeatureChain stuff (or, require an extra copy on top
   // of the one we're doing when we send the message to the stack, which
   // would chew up a lot of extra cycles).
   msg->clearOutboundDecorators();

Thanks :),
Francis