realtimenetprots/sipfw/SIP/ConnectionMgr/src/CTransport.cpp
changeset 35 a858c2cf6a45
parent 34 3c8db403127f
child 39 7cdef8deefa0
--- a/realtimenetprots/sipfw/SIP/ConnectionMgr/src/CTransport.cpp	Wed Jun 23 18:36:31 2010 +0300
+++ b/realtimenetprots/sipfw/SIP/ConnectionMgr/src/CTransport.cpp	Tue Jul 06 14:39:54 2010 +0300
@@ -1455,39 +1455,44 @@
                 RStringF transportParam =
                     uri.SIPURI()->ParamValue(
                         SIPStrings::StringF( SipStrConsts::ETransport ) );
-
-                if ( Protocol() == KProtocolTls )
+                
+                RStringF tls = SIPStrings::StringF( SipStrConsts::ETLS ); 
+                //If the Contact header has parameter transport=tls, remove it
+                //as it is deprecated in RFC 3261
+                if(transportParam == tls)
+                    {
+                    uri.SIPURI()->DeleteParam(SIPStrings::StringF( SipStrConsts::ETransport ));
+                    }
+                
+                //If the message is CSIPRequest, make sure its scheme is as per From Header.
+                //So if the FROM header is SIPS, Contact header is SIPS, if FROM header is SIP,
+                //Contact header scheme is sip
+                if(aMessage->IsRequest())
                     {
-                    RStringF tls = SIPStrings::StringF( SipStrConsts::ETLS );
-                    // 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())
+                    if ( Protocol() == KProtocolTls )
+                        {                       
+                        CURIContainer& FromUri = (((aMessage->From())->SIPAddress()).URI());
+                        if(FromUri.IsSIPURI())
                             {
-                            uri.SIPURI()->SetSIPS( ETrue );
-                            }
-                        else
-                            {
-                            uri.SIPURI()->SetSIPS( EFalse );
+                            CSIPURI* FromSIPUri =FromUri.SIPURI();
+                            if(FromSIPUri->IsSIPSURI())
+                                {                                
+                                uri.SIPURI()->SetSIPS( ETrue );
+                                }
+                            else
+                                {
+                                uri.SIPURI()->SetSIPS( EFalse );
+                                }
                             }
-                        }                    
-                    if(transportParam == tls)
+                        }
+                    else
                         {
-                        //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 ));
+                        uri.SIPURI()->SetSIPS( EFalse );
                         }
-                    }
-                else
-                    {
-                    uri.SIPURI()->SetSIPS( EFalse );
-                    }
-			    }
-			}
-		}    
-        
+                    } //end if (aMessage->IsRequest)                
+			    } //end if (uri.IsSIPURI())
+			} //end if(sipaddr)
+		} //end while    
     }
 
 // -----------------------------------------------------------------------------