[Serusers] Rewriting URI in the Contact field

Jan Janak J.Janak at sh.cvut.cz
Mon Jan 13 14:38:37 CET 2003


On 13-01 14:46, Maxim Sobolev wrote:
> I see, but IMO this would be not a generic solution, as I'll have to adjust
> the code for my particular needs. What I am looking for is some way to
> allow it to be modified by properly constructing config file. Perhaps something
> like t_on_negative() could be added, i.e. t_on_positive(): the specified
> routing block will be called when the transaction is completed with positive
> result but before sending final reply. What do you think?
> 

  Why is the callback not generic solution ?

  regards, Jan.

> >   First, you need to include t_hooks.h and tm_load.h from the tm module.
> > 
> >   Then, you need to register a callback function. The following code snippet
> >   shows how to do it:
> > 
> > static int mod_init( void )
> > {
> > 
> >         load_tm_f       load_tm;
> > 
> >         /* import the TM auto-loading function */
> >         if ( !(load_tm=(load_tm_f)find_export("load_tm", NO_SCRIPT))) {
> >                 LOG(L_ERR, "radius_acc: mod_init: can't import load_tm\n");
> >                 return -1;
> >         }
> >         /* let the auto-loading function load all TM stuff */
> >         if (load_tm( &tmb )==-1) return -1;
> > 
> >         /* register callback */
> >         if (tmb.rngister_tmcb( TMCB_REPLY, rad_acc_onreply, 0) <= 0) 
> >                 return -1;
> >  	}
> >         
> >         return 0;
> > }
> > 
> >  The mod_init function registers rad_acc_onreply function, the function will
> >  be called when the tm module receives a response.
> > 
> >  The callback follows. Note that radius_acc module (from which the code
> >  snippets were taken) registers TMCB_REPLY callback. This type of callback
> >  will be called _AFTER_ the response was sent out - that means there is no way
> >  how to modify it. Because of that, your module will have to register another
> >  type of callback - TMCB_REPLY_IN. Such callback will be called before the
> >  reply gets forwarded which means that you can modify it before it will be
> >  sent out. 
> > 
> >  See modules/tm/t_hooks.h file for more details ! There is a description of
> >  the callbacks. 
> > 
> > /*
> >  * Function that gets called on reply
> >  * params: struct cell* t The callback structure
> >  *         struct sip_msg *msg The sip message.
> >  *         int code The status code
> >  *         void* param Passed parameter
> >  * returns: nothing
> >  */
> > static void rad_acc_onreply( struct cell* t, struct sip_msg *reply, int code, 
> >                                                                 void *param ) 
> > {
> > 
> >         struct sip_msg *rq;
> > 
> >         rq = t->uas.request;
> > 
> >         if (t->is_invite && missed_flag && isflagset( rq, missed_flag)==1
> >                         && ((code>=400 && code<500) || code>=600))
> >                                 rad_acc_missed_report( t, reply, code);
> > 
> > 
> >         /* if acc enabled for flagged transaction, check if flag matches */
> >         if (acc_flag && isflagset( rq, acc_flag )==-1) return;
> >         /* early media is reported only if explicitely demanded, 
> >            other provisional responses are always dropped  */
> >         if (code < 200 && ! (early_media && code==183)) 
> >                 return;
> >         /* negative transactions reported only if explicitely demanded */
> >         if (!failed_transactions && code >=300) return;
> > 
> >         /* anything else, i.e., 2xx, always reported */
> >         radius_log_reply(t, reply);
> > 
> > }
> > 
> >    regards, Jan.
> 
> 
> _______________________________________________
> Serusers mailing list
> serusers at lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20030113/c3c4303b/attachment.pgp>


More information about the sr-users mailing list