rem: s = (int)set; a = (int)alg;
add: s = (int)(long)set; a = (int)(long)alg;
context: int ds_select_dst(struct sip_msg *msg, char *set, char *alg){	int a, s, idx;	ds_setidx_p si = NULL;	unsigned int hash;	if(msg==NULL)	{		LOG(L_ERR, "DISPATCHER:ds_select_dst: bad parameters\n");		return -1;	}		if(_ds_list==NULL || _ds_index==NULL)	{		LOG(L_ERR, "DISPATCHER:ds_select_dst: no destination sets\n");		return -1;	}	if((force_dst==0) && (msg->dst_uri.s!=NULL || msg->dst_uri.len>0))	{		LOG(L_ERR,			"DISPATCHER:ds_select_dst: destination already set [%.*s]\n",			msg->dst_uri.len, msg->dst_uri.s);		return -1;	}		s = (int)set;	a = (int)alg;	/* get the index of the set */	si = _ds_index;	while(si)	{		if(si->id == s)		{			idx = si->index;			break;		}		si = si->next;	}	if(si==NULL)	{		LOG(L_ERR,			"DISPATCHER:ds_select_dst: destination set [%d] not found\n",s);		return -1;	}	DBG("DISPATCHER:ds_select_dst: set index [%d]\n", idx);	hash = 0;	switch(a)	{		case 0:			if(ds_hash_callid(msg, &hash)!=0)			{				LOG(L_ERR,					"DISPATCHER:ds_select_dst: can't get callid hash\n");				return -1;			}		break;		case 1:			if(ds_hash_fromuri(msg, &hash)!=0)			{				LOG(L_ERR,					"DISPATCHER:ds_select_dst: can't get From uri hash\n");				return -1;			}		break;		default:			hash = 0;	}	DBG("DISPATCHER:ds_select_dst: alg hash [%u]\n", hash);	hash = hash%_ds_list[idx].nr;	if (set_dst_uri(msg, &_ds_list[idx].dlist[hash].uri) < 0) {		LOG(L_ERR, "DISPATCHER:dst_select_dst: Error while setting dst_uri\n");		return -1;	}	DBG("DISPATCHER:ds_select_dst: selected [%d-%d/%d/%d] <%.*s>\n",			a, s, idx, hash, msg->dst_uri.len, msg->dst_uri.s);		return 1;}