--- a/multimediacommsengine/mmcesrv/mmcemediamanager/src/mcemediasdpcodec.cpp Fri May 28 16:08:43 2010 +0300
+++ b/multimediacommsengine/mmcesrv/mmcemediamanager/src/mcemediasdpcodec.cpp Fri Jun 11 11:20:25 2010 +0300
@@ -916,28 +916,43 @@
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 =
value.Match( KMatchIN ) - KPortOffsetFromIP;
- TPtrC8 remoteRtcpPort = value.Left( port_offset );
-
+ HBufC8* dataRemoteRtcpPort = value.Left( port_offset ).AllocLC();
+ TPtr8 remoteRtcpPort( dataRemoteRtcpPort->Des() );
+ remoteRtcpPort.TrimAll();
TLex8 lexPT( remoteRtcpPort );
User::LeaveIfError( lexPT.Val( rtcpPort, EDecimal ) );
// copy the address into correct format
TBuf16 <KMaxAddressLength> input;
- input.Copy( remoteRtcpAddr );
-
+ input.Copy( remoteRtcpAddrTxt );
+ input.TrimAll();
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 );
+ }
+ CleanupStack::PopAndDestroy( dataRemoteRtcpPort );
}
else
{
// only port present
- TLex8 lexPT( value );
+ HBufC8* dataRemoteRtcpPort = value.AllocLC();
+ TPtr8 remoteRtcpPort( dataRemoteRtcpPort->Des() );
+ remoteRtcpPort.TrimAll();
+ TLex8 lexPT( remoteRtcpPort );
User::LeaveIfError ( lexPT.Val( rtcpPort, EDecimal ) );
+ CleanupStack::PopAndDestroy( dataRemoteRtcpPort );
}
aStream.SetRemoteRtcpMediaPort( rtcpPort );
@@ -1040,9 +1055,9 @@
else if ( secureSession && aRole == EMceRoleAnswerer && aUpdate )
{
// for long session
- if ( secureSession->iKeyNeedUpdated )
+ if( secureSession->SdpCryptoAttributeCount( aMediaLine ) )
{
- secureSession->DecodeSecureDesSdpUpdateL( aStream, aMediaLine ) ;
+ secureSession->DecodeSecureDesSdpUpdateL( aStream, aMediaLine ) ;
}
}
else if ( secureSession && aRole == EMceRoleOfferer )