diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c
index a4c2d510aa5613f23d758705208a7963dd41c8d7..f15404dbf8b56051942462abdccc9cffd9daa8eb 100644
--- a/coreapi/callbacks.c
+++ b/coreapi/callbacks.c
@@ -227,8 +227,11 @@ static void call_updated(SalOp *op){
 	if (call->resultdesc)
 		sal_media_description_unref(call->resultdesc);
 	call->resultdesc=sal_call_get_final_media_description(op);
-	if (call->resultdesc && !sal_media_description_empty(call->resultdesc)){
-		linphone_connect_incoming(lc,call);
+	if (call->resultdesc){
+		sal_media_description_ref(call->resultdesc);
+		if (sal_media_description_empty(call->resultdesc)){
+			linphone_connect_incoming(lc,call);
+		}
 	}
 }