From 5d65d0ef728452896a513de7f6b15af08e5f0089 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 19 Jun 2018 14:14:00 +0200 Subject: [PATCH] Restart streams when receiving an INVITE with Replaces header. --- src/conference/session/call-session-p.h | 2 +- src/conference/session/media-session-p.h | 1 + src/conference/session/media-session.cpp | 6 ++++++ tester/call_single_tester.c | 1 + 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/conference/session/call-session-p.h b/src/conference/session/call-session-p.h index 595b7197d..b2ddba767 100644 --- a/src/conference/session/call-session-p.h +++ b/src/conference/session/call-session-p.h @@ -60,7 +60,7 @@ public: void pingReply (); void referred (const Address &referToAddr); virtual void remoteRinging (); - void replaceOp (SalCallOp *newOp); + virtual void replaceOp (SalCallOp *newOp); virtual void terminated (); void updated (bool isUpdate); void updatedByRemote (); diff --git a/src/conference/session/media-session-p.h b/src/conference/session/media-session-p.h index dab25689e..1b65012a5 100644 --- a/src/conference/session/media-session-p.h +++ b/src/conference/session/media-session-p.h @@ -46,6 +46,7 @@ public: void pauseForTransfer (); void pausedByRemote (); void remoteRinging () override; + void replaceOp (SalCallOp *newOp) override; int resumeAfterFailedTransfer (); void resumed (); void startPendingRefer (); diff --git a/src/conference/session/media-session.cpp b/src/conference/session/media-session.cpp index 512fb4a40..aa5d8b16b 100644 --- a/src/conference/session/media-session.cpp +++ b/src/conference/session/media-session.cpp @@ -320,6 +320,12 @@ void MediaSessionPrivate::remoteRinging () { } } +void MediaSessionPrivate::replaceOp (SalCallOp *newOp) { + CallSessionPrivate::replaceOp(newOp); + stopStreams(); + initializeStreams(); +} + int MediaSessionPrivate::resumeAfterFailedTransfer () { L_Q(); if (automaticallyPaused && (state == CallSession::State::Pausing)) diff --git a/tester/call_single_tester.c b/tester/call_single_tester.c index efa33266c..8f57fa11a 100644 --- a/tester/call_single_tester.c +++ b/tester/call_single_tester.c @@ -5324,6 +5324,7 @@ static void recovered_call_on_network_switch_in_early_media_base (bool_t callerL } wait_for_until(marie->lc, pauline->lc, NULL, 1, 2000); + liblinphone_tester_check_rtcp(marie, pauline); if (linphone_core_get_current_call(pauline->lc) && (linphone_call_get_state(linphone_core_get_current_call(pauline->lc)) == LinphoneCallIncomingEarlyMedia)