diff -r a7d1e54a7332 -r 822e1f077722 realtimenetprots/sipfw/SIP/ConnectionMgr/src/CTransport.cpp --- a/realtimenetprots/sipfw/SIP/ConnectionMgr/src/CTransport.cpp Tue May 25 13:04:58 2010 +0300 +++ b/realtimenetprots/sipfw/SIP/ConnectionMgr/src/CTransport.cpp Wed Jun 09 10:04:26 2010 +0300 @@ -1459,11 +1459,23 @@ if ( Protocol() == KProtocolTls ) { RStringF tls = SIPStrings::StringF( SipStrConsts::ETLS ); - // SIP-URI with transport=TLS must not use sips scheme - uri.SIPURI()->SetSIPS( transportParam != tls ); + // SIP Scheme in Contact header should be same as From Header + CURIContainer& FromUri = (((aMessage->From())->SIPAddress()).URI()); + if(FromUri.IsSIPURI()) + { + CSIPURI* FromSIPUri =FromUri.SIPURI(); + if(FromSIPUri->IsSIPSURI()) + { + uri.SIPURI()->SetSIPS( ETrue ); + } + else + { + uri.SIPURI()->SetSIPS( EFalse ); + } + } if(transportParam == tls) { - uri.SIPURI()->SetSIPS(EFalse); + //uri.SIPURI()->SetSIPS(EFalse); //Delete the param transport=tls from the URI as it is deprecated in RFC 3261 uri.SIPURI()->DeleteParam(SIPStrings::StringF( SipStrConsts::ETransport )); }