Hi, after understanding, how the carrier-route-module works (thanks Henning), i have a question regarding the source. I looked at the method tree_route_uri:
int tree_route_uri(struct sip_msg * msg, char * _tree, char * _level) { struct rewrite_data * rd = NULL; int index; str ruser; str ruri; if (parse_sip_msg_uri(msg) < 0) { return -1; } ruser.s = msg->parsed_uri.user.s; ruser.len = msg->parsed_uri.user.len; ruri.s = msg->parsed_uri.user.s; ruri.len = msg->parsed_uri.user.len; do { rd = get_data(); } while (rd == NULL); index = rd->default_carrier_index; release_data(rd); return carrier_rewrite_msg(index, (int)_level, &ruri, msg, &ruser, shs_call_id, alg_crc32); } and wondered, why the determined tree-id (checked in tree_route_fixup) is nowhere used in this function and instead the "default_carrier_index" is used... Must this not be (if i look at the user_route_uri method): int tree_route_uri(struct sip_msg * msg, char * _tree, char * _level) { struct rewrite_data * rd = NULL; struct carrier_tree * ct = NULL; int index; str ruser; str ruri; if (parse_sip_msg_uri(msg) < 0) { return -1; } ruser.s = msg->parsed_uri.user.s; ruser.len = msg->parsed_uri.user.len; ruri.s = msg->parsed_uri.user.s; ruri.len = msg->parsed_uri.user.len; do { rd = get_data(); } while (rd == NULL); if ((ct = get_carrier_tree((int)_tree, rd)) == NULL) { if (fallback_default) { index = rd->default_carrier_index; } else { LM_ERR("desired routing tree with id %i doesn't exist\n", (int)_tree); return -1; } } else { index = ct->index; } release_data(rd); return carrier_rewrite_msg(index, (int)_level, &ruri, msg, &ruser, shs_call_id, alg_crc32); } Is it ok, that release_data(rd) is not called at every return statement? (e.g. here: LM_ERR("desired routing tree with id %i doesn't exist\n", (int)_tree);). If i understood the source right, i will add a patch for this until end of the week and add pseudo-variables-support to the "cr_tree_rewrite_uri"-Method. Thank you in advance, Carsten P.S.: Keep up the great work! _______________________________________________ Devel mailing list Devel@openser.org http://openser.org/cgi-bin/mailman/listinfo/devel