Exemplo n.º 1
0
int  b2b_bridge_request(struct sip_msg* msg, str* p1, str* p2)
{
	pv_value_t pv_val;
	str key = {NULL, 0};
	int entity_no;

	if (p1 && (pv_get_spec_value(msg, (pv_spec_t *)p1, &pv_val) == 0))
	{
		if (pv_val.flags & PV_VAL_STR)
		{
			LM_DBG("got key:'%.*s'\n", pv_val.rs.len, pv_val.rs.s);
			key = pv_val.rs;
		} else {
			LM_ERR("Unable to get key from PV that is not a string\n");
			return -1;
		}
	} else {
		LM_ERR("Unable to get key from pv:%p\n", p1);
		return -1;
	}

	if (p2 && (pv_get_spec_value(msg, (pv_spec_t *)p2, &pv_val) == 0))
	{
		if (pv_val.flags & PV_VAL_INT)
		{
			entity_no = pv_val.ri;
			LM_DBG("got entity_no %d\n", entity_no);
		}
		else
		if (pv_val.flags & PV_VAL_STR) {
			if(str2int(&(pv_val.rs), (unsigned int*)&entity_no) != 0) {
				LM_ERR("Unable to get entity_no from pv '%.*s'i\n",
				pv_val.rs.len, pv_val.rs.s);
				return -1;
			}
		} else {
			LM_ERR("second pv not a str or int type\n");
			return -1;
		}
	} else {
		LM_ERR("Unable to get entity from pv:%p\n", p1);
		return -1;
	}
	return b2bl_bridge_msg(msg, &key, entity_no);
}
Exemplo n.º 2
0
int  b2b_bridge_request(struct sip_msg* msg, str *key, int *entity_no)
{
	return b2bl_bridge_msg(msg, key, *entity_no);
}