if (md==NULL){
if (lc->ringstream!=NULL) return; /*already ringing !*/
if (lc->sound_conf.play_sndcard!=NULL){
+ MSSndCard *ringcard=lc->sound_conf.lsd_card ? lc->sound_conf.lsd_card : lc->sound_conf.play_sndcard;
ms_message("Remote ringing...");
- lc->ringstream=ring_start(lc->sound_conf.remote_ring,2000,lc->sound_conf.play_sndcard);
+ lc->ringstream=ring_start(lc->sound_conf.remote_ring,2000,ringcard);
+ gstate_new_state(lc, GSTATE_CALL_OUT_RINGING, NULL);
}
}else{
/*accept early media */
/*char *retrymsg=_("%s. Retry after %i minute(s).");*/
char *msg600=_("User does not want to be disturbed.");
char *msg603=_("Call declined.");
- char *msg=NULL;
+ char *msg=(char*)details;
- LinphoneCall *call=lc->call;
+ LinphoneCall *call=(LinphoneCall*)sal_op_get_user_pointer(op);
- if (sal_op_get_user_pointer(op)!=lc->call){
- ms_warning("call_failure: ignoring.");
- return;
- }
if (lc->vtable.show) lc->vtable.show(lc);
if (error==SalErrorNoResponse){
sr=SalReasonUnknown;
}else error=SalErrorNoResponse;
}
- sal->callbacks.call_failure(op,error,sr,reason);
+ sal->callbacks.call_failure(op,error,sr,reason,code);
+ if (computedReason != NULL){
+ ms_free(computedReason);
+ }
return TRUE;
}