realtimenetprots/sipfw/SIP/ConnectionMgr/src/CTransport.cpp
branchRCL_3
changeset 17 654ed625511d
parent 15 2cdd984ec527
child 18 f54bfd820e04
equal deleted inserted replaced
15:2cdd984ec527 17:654ed625511d
  1453                     }
  1453                     }
  1454                 
  1454                 
  1455                 RStringF transportParam =
  1455                 RStringF transportParam =
  1456                     uri.SIPURI()->ParamValue(
  1456                     uri.SIPURI()->ParamValue(
  1457                         SIPStrings::StringF( SipStrConsts::ETransport ) );
  1457                         SIPStrings::StringF( SipStrConsts::ETransport ) );
  1458 
  1458                 
  1459                 if ( Protocol() == KProtocolTls )
  1459                 RStringF tls = SIPStrings::StringF( SipStrConsts::ETLS ); 
       
  1460                 //If the Contact header has parameter transport=tls, remove it
       
  1461                 //as it is deprecated in RFC 3261
       
  1462                 if(transportParam == tls)
  1460                     {
  1463                     {
  1461                     RStringF tls = SIPStrings::StringF( SipStrConsts::ETLS );
  1464                     uri.SIPURI()->DeleteParam(SIPStrings::StringF( SipStrConsts::ETransport ));
  1462                     // SIP Scheme in Contact header should be same as From Header
  1465                     }
  1463                     CURIContainer& FromUri = (((aMessage->From())->SIPAddress()).URI());
  1466                 
  1464                     if(FromUri.IsSIPURI())
  1467                 //If the message is CSIPRequest, make sure its scheme is as per From Header.
       
  1468                 //So if the FROM header is SIPS, Contact header is SIPS, if FROM header is SIP,
       
  1469                 //Contact header scheme is sip
       
  1470                 if(aMessage->IsRequest())
       
  1471                     {
       
  1472                     if ( Protocol() == KProtocolTls )
       
  1473                         {                       
       
  1474                         CURIContainer& FromUri = (((aMessage->From())->SIPAddress()).URI());
       
  1475                         if(FromUri.IsSIPURI())
       
  1476                             {
       
  1477                             CSIPURI* FromSIPUri =FromUri.SIPURI();
       
  1478                             if(FromSIPUri->IsSIPSURI())
       
  1479                                 {                                
       
  1480                                 uri.SIPURI()->SetSIPS( ETrue );
       
  1481                                 }
       
  1482                             else
       
  1483                                 {
       
  1484                                 uri.SIPURI()->SetSIPS( EFalse );
       
  1485                                 }
       
  1486                             }
       
  1487                         }
       
  1488                     else
  1465                         {
  1489                         {
  1466                         CSIPURI* FromSIPUri =FromUri.SIPURI();
  1490                         uri.SIPURI()->SetSIPS( EFalse );
  1467                         if(FromSIPUri->IsSIPSURI())
       
  1468                             {
       
  1469                             uri.SIPURI()->SetSIPS( ETrue );
       
  1470                             }
       
  1471                         else
       
  1472                             {
       
  1473                             uri.SIPURI()->SetSIPS( EFalse );
       
  1474                             }
       
  1475                         }                    
       
  1476                     if(transportParam == tls)
       
  1477                         {
       
  1478                         //uri.SIPURI()->SetSIPS(EFalse);
       
  1479                         //Delete the param transport=tls from the URI as it is deprecated in RFC 3261
       
  1480                         uri.SIPURI()->DeleteParam(SIPStrings::StringF( SipStrConsts::ETransport ));
       
  1481                         }
  1491                         }
  1482                     }
  1492                     } //end if (aMessage->IsRequest)                
  1483                 else
  1493 			    } //end if (uri.IsSIPURI())
  1484                     {
  1494 			} //end if(sipaddr)
  1485                     uri.SIPURI()->SetSIPS( EFalse );
  1495 		} //end while    
  1486                     }
       
  1487 			    }
       
  1488 			}
       
  1489 		}    
       
  1490         
       
  1491     }
  1496     }
  1492 
  1497 
  1493 // -----------------------------------------------------------------------------
  1498 // -----------------------------------------------------------------------------
  1494 // CTransport::ChangeHostAddressFamilyIfNeededL
  1499 // CTransport::ChangeHostAddressFamilyIfNeededL
  1495 // -----------------------------------------------------------------------------
  1500 // -----------------------------------------------------------------------------