From 53859fc1ea309ca62e54b21c82d6d0fc30bc5e82 Mon Sep 17 00:00:00 2001
From: Simon Morlat <simon.morlat@linphone.org>
Date: Thu, 3 Feb 2011 12:54:42 +0100
Subject: [PATCH] bugfixes in pause/resume

---
 coreapi/callbacks.c   |  1 +
 coreapi/offeranswer.c | 15 ++++++---------
 2 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c
index af7d8b6bab..ab48f88374 100644
--- a/coreapi/callbacks.c
+++ b/coreapi/callbacks.c
@@ -362,6 +362,7 @@ static void call_updating(SalOp *op){
 	if (md && !sal_media_description_empty(md))
 	{
 		if (sal_media_description_has_dir(call->localdesc,SalStreamSendRecv)){
+			ms_message("Our local status is SalStreamSendRecv");
 			if (sal_media_description_has_dir (md,SalStreamRecvOnly) || sal_media_description_has_dir(md,SalStreamInactive)){
 				/* we are being paused */
 				if(lc->vtable.display_status)
diff --git a/coreapi/offeranswer.c b/coreapi/offeranswer.c
index e9f4bcbe4c..aea3f87e79 100644
--- a/coreapi/offeranswer.c
+++ b/coreapi/offeranswer.c
@@ -133,19 +133,16 @@ static SalStreamDir compute_dir_incoming(SalStreamDir local, SalStreamDir offere
 			res=SalStreamSendOnly;
 		if (offered==SalStreamInactive)
 			res=SalStreamInactive;
+		else
+			res=SalStreamSendRecv;
 	}else if (local==SalStreamSendOnly){
-		if (offered==SalStreamSendOnly)
-			res=SalStreamInactive;
 		if (offered==SalStreamRecvOnly)
 			res=SalStreamSendOnly;
-		if (offered==SalStreamInactive)
-			res=SalStreamInactive;
+		else res=SalStreamInactive;
 	}else if (local==SalStreamRecvOnly){
-		if (offered==SalStreamSendOnly)
+		if (offered==SalStreamSendOnly || offered==SalStreamSendRecv)
 			res=SalStreamRecvOnly;
-		if (offered==SalStreamRecvOnly)
-			res=SalStreamInactive;
-		if (offered==SalStreamInactive)
+		else
 			res=SalStreamInactive;
 	}else res=SalStreamInactive;
 	return res;
@@ -177,7 +174,7 @@ static void initiate_incoming(const SalStreamDescription *local_cap,
 	result->payloads=match_payloads(local_cap->payloads,remote_offer->payloads, FALSE, one_matching_codec);
 	result->proto=local_cap->proto;
 	result->type=local_cap->type;
-	result->dir=compute_dir_incoming(result->dir,remote_offer->dir);
+	result->dir=compute_dir_incoming(local_cap->dir,remote_offer->dir);
 	if (result->payloads && !only_telephone_event(result->payloads)){
 		strcpy(result->addr,local_cap->addr);
 		result->port=local_cap->port;
-- 
GitLab