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 // ----------------------------------------------------------------------------- |