multimediacommsengine/mmcesrv/mmcemediamanager/src/mcemediasdpcodec.cpp
branchRCL_3
changeset 25 fb1bbf85a302
parent 18 91f50911ea81
child 33 f40c1a748eb9
--- 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 <KMaxAddressLength> 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 )
         {