diff -r 9565022eef45 -r 740ceea8e153 realtimenetprots/sipfw/SIP/ConnectionMgr/src/CTransport.cpp --- a/realtimenetprots/sipfw/SIP/ConnectionMgr/src/CTransport.cpp Thu May 27 13:13:56 2010 +0300 +++ b/realtimenetprots/sipfw/SIP/ConnectionMgr/src/CTransport.cpp Fri Jun 11 14:01:23 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 )); }