int pv_get_t(struct sip_msg *msg, pv_param_t *param, pv_value_t *res) { tm_cell_t *t; if(msg==NULL || param==NULL) return -1; /* aliases to old TM pvs */ switch(param->pvn.u.isname.name.n) { case 2: return pv_get_tm_reply_code(msg, param, res); case 4: return pv_get_tm_branch_idx(msg, param, res); } t = _tmx_tmb.t_gett(); if(t==NULL || t==T_UNDEFINED) { /* no T */ if(param->pvn.u.isname.name.n==8 || param->pvn.u.isname.name.n==9) { /* id_label_n or id_index_n - attempt to create transaction */ if(_tmx_tmb.t_newtran(msg)<0) { LM_ERR("cannot create the transaction\n"); return pv_get_null(msg, param, res); } t = _tmx_tmb.t_gett(); if (t==NULL || t==T_UNDEFINED) { return pv_get_null(msg, param, res); } } else { return pv_get_null(msg, param, res); } } switch(param->pvn.u.isname.name.n) { case 1: return pv_get_uintval(msg, param, res, t->hash_index); case 3: if(get_route_type()==FAILURE_ROUTE) { if(_tmx_tmb.t_get_picked_branch()<0 ) return pv_get_uintval(msg, param, res, 0); if(t->uac[_tmx_tmb.t_get_picked_branch()].reply==FAKED_REPLY) return pv_get_uintval(msg, param, res, 1); } return pv_get_uintval(msg, param, res, 0); case 8: return pv_get_uintval(msg, param, res, t->label); case 9: return pv_get_uintval(msg, param, res, t->hash_index); default: return pv_get_uintval(msg, param, res, t->label); } }
int pv_get_t(struct sip_msg *msg, pv_param_t *param, pv_value_t *res) { tm_cell_t *t; if(msg==NULL || param==NULL) return -1; /* aliases to old TM pvs */ switch(param->pvn.u.isname.name.n) { case 2: return pv_get_tm_reply_code(msg, param, res); case 4: return pv_get_tm_branch_idx(msg, param, res); } t = _tmx_tmb.t_gett(); if(t==NULL || t==T_UNDEFINED) { /* no T */ return pv_get_null(msg, param, res); } switch(param->pvn.u.isname.name.n) { case 1: return pv_get_uintval(msg, param, res, t->hash_index); case 3: if(get_route_type()==FAILURE_ROUTE) { if(_tmx_tmb.t_get_picked_branch()<0 ) return pv_get_uintval(msg, param, res, 0); if(t->uac[_tmx_tmb.t_get_picked_branch()].reply==FAKED_REPLY) return pv_get_uintval(msg, param, res, 1); } return pv_get_uintval(msg, param, res, 0); default: return pv_get_uintval(msg, param, res, t->label); } }