realtimenetprots/sipfw/SIP/ConnectionMgr/src/CTransport.cpp
changeset 29 5f12516512fa
parent 23 8798b8c7bbfb
child 37 0295359a7673
--- a/realtimenetprots/sipfw/SIP/ConnectionMgr/src/CTransport.cpp	Fri May 28 16:13:10 2010 +0300
+++ b/realtimenetprots/sipfw/SIP/ConnectionMgr/src/CTransport.cpp	Thu Jun 24 14:43:49 2010 +0300
@@ -274,7 +274,7 @@
 				if ( IsConnectedTransport() )
 					{
 					TResponseRoute route( id, aRemoteAddr );
-					iIDArray.Append( route );
+					iIDArray.AppendL( route );
 					}
 				TRAP( leaveValue,
 					  receiver->ReceiveL( static_cast<CSIPRequest*>( aMessage ) ) );
@@ -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    
     }
 
 // -----------------------------------------------------------------------------