* */
| 53 | * |
| 54 | */ |
| 55 | static int alias_db_query(struct sip_msg* _msg, str* table_s, |
| 56 | struct sip_uri *puri, unsigned long flags, |
| 57 | set_alias_f set_alias, pv_spec_t *param) |
| 58 | { |
| 59 | static db_ps_t my_ps[4] = {NULL,NULL,NULL,NULL}; |
| 60 | str user_s; |
| 61 | db_key_t db_keys[2]; |
| 62 | db_val_t db_vals[2]; |
| 63 | db_key_t db_cols[2]; |
| 64 | db_res_t* db_res = NULL; |
| 65 | int i; |
| 66 | int ps_idx=0; |
| 67 | |
| 68 | if (flags&ALIAS_REVERT_FLAG) { |
| 69 | /* revert lookup: user->alias */ |
| 70 | db_keys[0] = &user_column; |
| 71 | db_keys[1] = &domain_column; |
| 72 | db_cols[0] = &alias_user_column; |
| 73 | db_cols[1] = &alias_domain_column; |
| 74 | ps_idx += 2; |
| 75 | } else { |
| 76 | /* rnormal lookup: alias->user */ |
| 77 | db_keys[0] = &alias_user_column; |
| 78 | db_keys[1] = &alias_domain_column; |
| 79 | db_cols[0] = &user_column; |
| 80 | db_cols[1] = &domain_column; |
| 81 | } |
| 82 | |
| 83 | db_vals[0].type = DB_STR; |
| 84 | db_vals[0].nul = 0; |
| 85 | db_vals[0].val.str_val.s = puri->user.s; |
| 86 | db_vals[0].val.str_val.len = puri->user.len; |
| 87 | |
| 88 | if ( (flags&ALIAS_NO_DOMAIN_FLAG)==0 ) { |
| 89 | db_vals[1].type = DB_STR; |
| 90 | db_vals[1].nul = 0; |
| 91 | db_vals[1].val.str_val.s = puri->host.s; |
| 92 | db_vals[1].val.str_val.len = puri->host.len; |
| 93 | |
| 94 | if (domain_prefix.s && domain_prefix.len>0 |
| 95 | && domain_prefix.len<puri->host.len |
| 96 | && strncasecmp(puri->host.s,domain_prefix.s, |
| 97 | domain_prefix.len)==0) |
| 98 | { |
| 99 | db_vals[1].val.str_val.s += domain_prefix.len; |
| 100 | db_vals[1].val.str_val.len -= domain_prefix.len; |
| 101 | } |
| 102 | ps_idx ++; |
| 103 | } |
| 104 | |
| 105 | adbf.use_table(db_handle, table_s); |
| 106 | |
| 107 | if (!ald_append_branches) |
| 108 | CON_SET_CURR_PS(db_handle, my_ps[ps_idx]); |
| 109 | if(adbf.query( db_handle, db_keys, NULL, db_vals, db_cols, |
| 110 | (flags&ALIAS_NO_DOMAIN_FLAG)?1:2 /*no keys*/, 2 /*no cols*/, |
| 111 | NULL, &db_res)!=0) |
| 112 | { |
no outgoing calls
no test coverage detected