diff -r 91f50911ea81 -r fb1bbf85a302 multimediacommsengine/mmcesrv/mmcemediamanager/src/mcemediasdpcodec.cpp --- a/multimediacommsengine/mmcesrv/mmcemediamanager/src/mcemediasdpcodec.cpp Tue May 25 13:07:26 2010 +0300 +++ b/multimediacommsengine/mmcesrv/mmcemediamanager/src/mcemediasdpcodec.cpp Wed Jun 09 10:06:41 2010 +0300 @@ -916,7 +916,7 @@ const TUint8 KAddrOffsetFromNetType = 4; TInt addr_offset = value.Match( KMatchIp ) + KAddrOffsetFromNetType; - TPtrC8 remoteRtcpAddr = value.Mid( addr_offset ); + TPtrC8 remoteRtcpAddrTxt = value.Mid( addr_offset ); const TUint8 KPortOffsetFromIP = 1; TInt port_offset = @@ -927,11 +927,20 @@ User::LeaveIfError( lexPT.Val( rtcpPort, EDecimal ) ); // copy the address into correct format TBuf16 input; - input.Copy( remoteRtcpAddr ); + input.Copy( remoteRtcpAddrTxt ); MCEMM_DEBUG_SVALUE( "Found RTCP address", input ) - aStream.SetRemoteRtcpMediaAddrL( input ); + TInetAddr remoteRtcpAddr; + User::LeaveIfError( remoteRtcpAddr.Input( input ) ); + TInetAddr localIpAddr( aStream.Session()->iLocalIpAddress ); + TBool validRemoteRtcpAddr( + remoteRtcpAddr.IsLoopback() || !localIpAddr.Match( remoteRtcpAddr ) ); + MCEMM_DEBUG_DVALUE( "Remote RTCP addr valid:", validRemoteRtcpAddr ) + if ( validRemoteRtcpAddr ) + { + aStream.SetRemoteRtcpMediaAddrL( input ); + } } else { @@ -1040,8 +1049,10 @@ else if ( secureSession && aRole == EMceRoleAnswerer && aUpdate ) { // for long session - secureSession->iKeyNeedUpdated = ETrue; - secureSession->DecodeSecureDesSdpUpdateL( aStream, aMediaLine ) ; + if( secureSession->SdpCryptoAttributeCount( aMediaLine ) ) + { + secureSession->DecodeSecureDesSdpUpdateL( aStream, aMediaLine ) ; + } } else if ( secureSession && aRole == EMceRoleOfferer ) {