diff options
| -rw-r--r-- | indra/newview/llimview.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llimview.h | 9 | ||||
| -rw-r--r-- | indra/newview/llvoicechannel.cpp | 6 | 
3 files changed, 15 insertions, 3 deletions
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index be719c0a78..c5c412d4ee 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1348,7 +1348,8 @@ void LLIncomingCallDialog::processCallResponse(S32 response)  			session_id = gIMMgr->addP2PSession(  				mPayload["session_name"].asString(),  				mPayload["caller_id"].asUUID(), -				mPayload["session_handle"].asString()); +				mPayload["session_handle"].asString(), +				mPayload["session_uri"].asString());  			if (voice)  			{ diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index 40e3a8fb69..b2d3c6b921 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -277,11 +277,16 @@ public:  					  const LLUUID& other_participant_id,  					  const LLDynamicArray<LLUUID>& ids); -	// Creates a P2P session with the requisite handle for responding to voice calls +	/** +	 * Creates a P2P session with the requisite handle for responding to voice calls. +	 *  +	 * @param caller_uri - sip URI of caller. It should be always be passed into the method to avoid +	 * incorrect working of LLVoiceChannel instances. See EXT-2985. +	 */	  	LLUUID addP2PSession(const std::string& name,  					  const LLUUID& other_participant_id,  					  const std::string& voice_session_handle, -					  const std::string& caller_uri = LLStringUtil::null); +					  const std::string& caller_uri);  	/**  	 * Leave the session with session id. Send leave session notification diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp index 3554528d19..a0396bc790 100644 --- a/indra/newview/llvoicechannel.cpp +++ b/indra/newview/llvoicechannel.cpp @@ -750,6 +750,8 @@ LLVoiceChannelP2P::LLVoiceChannelP2P(const LLUUID& session_id, const std::string  		mReceivedCall(FALSE)  {  	// make sure URI reflects encoded version of other user's agent id +	// *NOTE: in case of Avaline call generated SIP URL will be incorrect. +	// But it will be overridden in LLVoiceChannelP2P::setSessionHandle() called when agent accepts call  	setURI(LLVoiceClient::getInstance()->sipURIFromID(other_user_id));  } @@ -867,6 +869,10 @@ void LLVoiceChannelP2P::setSessionHandle(const std::string& handle, const std::s  	}  	else  	{ +		LL_WARNS("Voice") << "incoming SIP URL is not provided. Channel may not work properly." << LL_ENDL; +		// In case of incoming AvaLine call generated URI will be differ from original one. +		// This is because Avatar-2-Avatar URI is based on avatar UUID but Avaline is not. +		// See LLVoiceClient::sessionAddedEvent() -> setUUIDFromStringHash()  		setURI(LLVoiceClient::getInstance()->sipURIFromID(mOtherUserID));  	}  | 
