diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c
index 6fbb566dc28e3277e2d72145d97865dd3bdceec4..a980b51b12445f19796bd7f92ec3c1c2544302ac 100644
--- a/coreapi/callbacks.c
+++ b/coreapi/callbacks.c
@@ -97,6 +97,7 @@ static void call_received(SalOp *h){
 
 	/* play the ring if this is the only call*/
 	if (lc->sound_conf.ring_sndcard!=NULL && ms_list_size(lc->calls)==1){
+		lc->current_call=call;
 		if (lc->ringstream && lc->dmfs_playing_start_time!=0){
 			ring_stop(lc->ringstream);
 			lc->ringstream=NULL;
diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c
index 9353a7fc57e2ba4013a92c1e6d59b32715261f6a..4b79993eb137416a460ceea5bf397db120c40bb0 100644
--- a/coreapi/linphonecore.c
+++ b/coreapi/linphonecore.c
@@ -2118,7 +2118,7 @@ int linphone_core_accept_call(LinphoneCore *lc, LinphoneCall *call)
 			call = (LinphoneCall*)linphone_core_get_calls(lc)->data;
 	}
 
-	if (lc->current_call){
+	if (lc->current_call!=NULL && lc->current_call!=call){
 		ms_warning("Cannot accept this call, there is already one running.");
 		return -1;
 	}