/* * Check if user part of URI in pseudo variable is an e164 number */ int is_uri_user_e164(struct sip_msg* _m, char* _sp, char* _s2) { pv_spec_t *sp; pv_value_t pv_val; struct sip_uri puri; sp = (pv_spec_t *)_sp; if (sp && (pv_get_spec_value(_m, sp, &pv_val) == 0)) { if (pv_val.flags & PV_VAL_STR) { if (pv_val.rs.len == 0 || pv_val.rs.s == NULL) { LM_DBG("missing uri\n"); return -1; } if (parse_uri(pv_val.rs.s, pv_val.rs.len, &puri) < 0) { LM_ERR("parsing URI failed\n"); return -1; } return e164_check(&(puri.user)); } else { LM_ERR("pseudo variable value is not string\n"); return -1; } } else { LM_ERR("failed to get pseudo variable value\n"); return -1; } }
int is_uri_user_e164(str *uri) { char *chr; str user; chr = memchr(uri->s, ':', uri->len); if (chr == NULL) { LM_ERR("parsing URI failed\n"); return -1; }; user.s = chr + 1; chr = memchr(user.s, '@', uri->len - (user.s - uri->s)); if (chr == NULL) return -1; user.len = chr - user.s; return e164_check(&user); }
/* * Check if user part of URI in pseudo variable is an e164 number */ int is_e164(struct sip_msg* _m, char* _sp, char* _s2) { pv_spec_t *sp; pv_value_t pv_val; sp = (pv_spec_t *)_sp; if (sp && (pv_get_spec_value(_m, sp, &pv_val) == 0)) { if (pv_val.flags & PV_VAL_STR) { if (pv_val.rs.len == 0 || pv_val.rs.s == NULL) { LM_DBG("missing argument\n"); return -1; } return e164_check(&(pv_val.rs)); } else { LM_ERR("pseudo variable value is not string\n"); return -1; } } else { LM_ERR("failed to get pseudo variable value\n"); return -1; } }