[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