diff -r 60785a088077 -r 12b52b1a573e telephonyserverplugins/simtsy/src/CSimContextHelper.cpp --- a/telephonyserverplugins/simtsy/src/CSimContextHelper.cpp Mon Jul 19 14:53:33 2010 +0100 +++ b/telephonyserverplugins/simtsy/src/CSimContextHelper.cpp Wed Jul 21 17:41:03 2010 +0100 @@ -111,8 +111,6 @@ (aContextConfigLHS.iProtocolConfigOption.iAuthProtocol != aContextConfigRHS.iProtocolConfigOption.iAuthProtocol) || (aContextConfigLHS.iProtocolConfigOption.iUsername.Compare(aContextConfigRHS.iProtocolConfigOption.iUsername) != 0) || (aContextConfigLHS.iProtocolConfigOption.iPassword.Compare(aContextConfigRHS.iProtocolConfigOption.iPassword) != 0) || - (aContextConfigLHS.iProtocolConfigOption.iChallenge.Compare(aContextConfigRHS.iProtocolConfigOption.iChallenge) != 0) || - (aContextConfigLHS.iProtocolConfigOption.iResponse.Compare(aContextConfigRHS.iProtocolConfigOption.iResponse) != 0) || // These line are commented as these parameters currently are usually returned by the network and not required for // setting the context configuration // (aContextConfigLHS.iProtocolConfigOption.iPrimaryDNS.Compare(aContextConfigRHS.iProtocolConfigOption.iPrimaryDNS) != 0) || @@ -120,9 +118,19 @@ (aContextConfigLHS.iProtocolConfigOption.iId != aContextConfigRHS.iProtocolConfigOption.iId) || (aContextConfigLHS.iPdpHeaderCompression != aContextConfigRHS.iPdpHeaderCompression) || (aContextConfigLHS.iPdpDataCompression != aContextConfigRHS.iPdpDataCompression)) - { + // challenge is generated randomly and response is generated using MD5 in CHAP protocol, so it is not possible to check + { return EFalse; } + else if (aContextConfigLHS.iProtocolConfigOption.iAuthProtocol != RPacketContext::EProtocolCHAP) + {// if not CHAP we still try to check challenge and response just in case + if ((aContextConfigLHS.iProtocolConfigOption.iChallenge.Compare(aContextConfigRHS.iProtocolConfigOption.iChallenge) != 0) || + (aContextConfigLHS.iProtocolConfigOption.iResponse.Compare(aContextConfigRHS.iProtocolConfigOption.iResponse) != 0)) + { + return EFalse; + } + } + // else considered equal. return ETrue;