Re: [reSIProcate-users] override CallID and From tag in message
There is currently no way to use an application provided call id
without modifying DUM code - it shouldn't be too hard to add this.
However, if your only objective is to log the call id you can retreive
the call id that DUM generated for the message before it is sent out.
Scott
On Tue, Feb 17, 2009 at 2:29 AM, Aurelien Grimaud <gstelzz@xxxxxxxx> wrote:
> So this is not possible to do something like :
> msg = dum.makeInviteSession(...)
> msg.header(h_CallID).value() = myCallid ;
> dum.send(msg) ;
> or is it ?
>
> When I do the last thing, all replies are discarded.
> Dum sets its dialog tables when makeInviteSession with the generated callid
> / from tag
>
> Thanks.
>
> Aurelien Grimaud a écrit :
>
> Hi,
> In my application, I would like log file contains the CallID of Sip Message.
>
> When I aact as a UAC, no problem, the CallID is known very early.
> But, when I act as a UAS, I make a lot of things before building the Invite
> and getting a CallID.
>
> Sorry, when I am a UAS, no problem, I receive an INVITE and treat it. CallID
> is early known.
> When I am a UAC, I make a lot of things before building and sending an
> Invite, and I have no CallID to use in my logs or communication with other
> processes.
>
> So I would like to compute my own callid and pass it to invite message after
> building.
>
> The problem is that DUM Dialog is registered in mDialogSetMap wilt old
> CallID.
> Therefore, all responses are rejected because no dialogset is found :-(
>
> Is there a way to use a custom built CallID in sip messages ?
>
> makeUACDialogSet uses my own AppDialogSet I provided.
> But DUM build it's own DialogSet which gets its id from creator which does
> not have the new callid
>
> It would be fine if DialogSet was build by AppDialogSet.
> i.e. add a
> virtual AppDialogSet::makeNewDialogSet(BaseCreator *, DialogUsageManager &)
> {
> return new DialogSet(creator, *this) ;
> }
>
> Which could be derived in
> virtual MyAppDialogSet::makeNewDialogSet(BaseCreator *, DialogUsageManager
> &)
> {
> // Make any modification on creator message ...
> creator->getLastRequest()->header(h_CallID).value() = mycallid ;
>
> // Build my own dialog set
> // mId in dialog set will be the right one now !
> return new MyDialogSet(creator, dum) ;
>
> }
>
> Here is Dum original
>
> 00463 {
> 00464 if (mDumShutdownHandler)
> 00465 {
> 00466 throw DumException("Cannot create new sessions when DUM is
> shutting down.", __FILE__, __LINE__);
> 00467 }
> 00468
> 00469 if (appDs == 0)
> 00470 {
> 00471 appDs = new AppDialogSet(*this);
> 00472 }
> - 00473 DialogSet* ds = new DialogSet(creator, *this);
> + 00473 DialogSet *ds = appDs->makeNewDialogSet(creator, *this) ;
> 00474
> 00475 appDs->mDialogSet = ds;
> 00476 ds->mAppDialogSet = appDs;
> 00477
> 00478 StackLog ( << "************* Adding DialogSet ***************" );
> 00479 StackLog ( << "Before: " << Inserter(mDialogSetMap) );
> 00480 mDialogSetMap[ds->getId()] = ds;
> 00481 StackLog ( << "After: " << Inserter(mDialogSetMap) );
> 00482 return ds;
> 00483 }
>
>
> am I missing something ?
>
> Aurelien
>
> ________________________________
> _______________________________________________
> 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/
>