Example #1
0
/*
 * 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;
    }
}
Example #2
0
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);
}
Example #3
0
/*
 * 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;
    }
}