diff -r 02ba3f1733c6 -r 2b4ea9893b66 supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplfallbackhandler.cpp --- a/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplfallbackhandler.cpp Thu Aug 19 10:20:18 2010 +0300 +++ b/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplfallbackhandler.cpp Tue Aug 31 15:37:04 2010 +0300 @@ -115,11 +115,11 @@ { iTrace->Trace(_L("COMASuplFallBackHandler::GetNextSLPAddressL"),KTraceFileName, __LINE__); - _LIT(KFormatTxt,"%/0%1%/1%2%/2%3%/3 %-B%:0%J%:1%T%:2%S%:3%+B"); - - TBuf<256> LogBuffer; - - if( aLastErrorCode != KErrNone)// If its KErrNone then its means server name is asked first time and no need for Tls failure check + _LIT(KFormatTxt,"%/0%1%/1%2%/2%3%/3 %-B%:0%J%:1%T%:2%S%:3%+B"); + + TBuf<256> LogBuffer; + + if( aLastErrorCode != KErrNone)// If its KErrNone then its means server name is asked first time and no need for Tls failure check { if( CheckErrorCodeL(aLastErrorCode) ) @@ -154,7 +154,7 @@ LogBuffer.AppendNum(err); iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); - CleanupStack::PopAndDestroy(&newParam); + CleanupStack::PopAndDestroy(newParam); } else { @@ -175,7 +175,7 @@ delete iapName; } - CleanupStack::PopAndDestroy(¶m); + CleanupStack::PopAndDestroy(param); iTrace->Trace(_L("Fallback allowed & TLSAuth failed"),KTraceFileName, __LINE__); iTrace->Trace(_L("Server being used:"),KTraceFileName, __LINE__); @@ -204,149 +204,150 @@ return KErrNotFound; } } - - //Check to see if the server list is empty. If it is create the HSLP Address from the IMSI and use that - // as the server address. This does not add the server to the list and this functionality should only - // be tried once - if(iSLPList->Count() <= 0 && (!iAttemptedBackupServer)) - { - iTrace->Trace(_L("Going to create and use alternative HSLP Address from IMSI"),KTraceFileName, __LINE__); - iAttemptedBackupServer = ETrue; + //Check to see if the server list is empty. If it is create the HSLP Address from the IMSI and use that + // as the server address. This does not add the server to the list and this functionality should only + // be tried once + if(iSLPList->Count() <= 0 && (!iAttemptedBackupServer)) + { + iTrace->Trace(_L("Going to create and use alternative HSLP Address from IMSI"),KTraceFileName, __LINE__); + + iAttemptedBackupServer = ETrue; + + //Generate the HSLP Address + GenerateHslpAddressFromIMSIL(); - //Generate the HSLP Address - GenerateHslpAddressFromIMSIL(); + //Copy the generated address into the supplied function arguments + aHslpToBeUsedAddress.Copy(iGenratedHslpAddress); + aIAPName.Zero(); + aIAPName.Copy(iDefaultIAPName); + aTls = ETrue; + aPskTls = EFalse; + aIsIapDialogShown = ETrue; - //Copy the generated address into the supplied function arguments - aHslpToBeUsedAddress.Copy(iGenratedHslpAddress); - aIAPName.Zero(); - aIAPName.Copy(iDefaultIAPName); - aTls = ETrue; - aPskTls = EFalse; - aIsIapDialogShown = ETrue; + iTrace->Trace(_L("Server being used:"),KTraceFileName, __LINE__); + LogBuffer.Copy(aHslpToBeUsedAddress); + iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); + + iTrace->Trace(_L("iap being used:"),KTraceFileName, __LINE__); + LogBuffer.Copy(aIAPName); + iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); + + //Add the server to the list for future connections + CServerParams* param=CServerParams::NewL(); + CleanupStack::PushL(param); + User::LeaveIfError(param->Set( iGenratedHslpAddress,iDefaultIAPName,ETrue,ETrue,ETrue,EFalse )); - iTrace->Trace(_L("Server being used:"),KTraceFileName, __LINE__); - LogBuffer.Copy(aHslpToBeUsedAddress); - iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); + TInt err = iSuplSettings.AddNewServer( param, aSLPId ); //Ignore error + LogBuffer.Copy(_L("AddNewServer() completed with err: ")); + LogBuffer.AppendNum(err); + iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); + + CleanupStack::PopAndDestroy(¶m); - iTrace->Trace(_L("iap being used:"),KTraceFileName, __LINE__); - LogBuffer.Copy(aIAPName); - iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); - - //Add the server to the list for future connections - CServerParams* param=CServerParams::NewL(); - CleanupStack::PushL(param); - User::LeaveIfError(param->Set( iGenratedHslpAddress,iDefaultIAPName,ETrue,ETrue,ETrue,EFalse )); - - TInt err = iSuplSettings.AddNewServer( param, aSLPId ); //Ignore error - LogBuffer.Copy(_L("AddNewServer() completed with err: ")); - LogBuffer.AppendNum(err); - iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); - - CleanupStack::PopAndDestroy(¶m); - - return KErrNone; - } - - if( iSLPList->Count() <= 0 || iCurrentServerCounter >= iSLPList->Count() ) + return KErrNone; + } + + if( iSLPList->Count() <= 0 || iCurrentServerCounter >= iSLPList->Count() ) + { + LogBuffer.Copy(_L("No more servers available...")); + iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); + return KErrNotFound; + } + + iTrace->Trace(_L("Trying next server..."),KTraceFileName, __LINE__); + + //Fallback Timer... + if(aLastErrorCode == KErrNone) //This means, server name is asked for first time only... + { + iTrace->Trace(_L("Start Time: "),KTraceFileName, __LINE__); + iFallBackStartTime.HomeTime(); + LogBuffer.Zero(); + iFallBackStartTime.FormatL(LogBuffer,KFormatTxt); + iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); + } + else + { + TTime currentTime; + currentTime.HomeTime(); + TTimeIntervalMicroSeconds diff = currentTime.MicroSecondsFrom(iFallBackStartTime); + + + iTrace->Trace(_L("Current Time: "),KTraceFileName, __LINE__); + LogBuffer.Zero(); + currentTime.FormatL(LogBuffer,KFormatTxt); + iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); + + LogBuffer.Copy(_L("Difference between time: ")); + LogBuffer.AppendNum(diff.Int64()); + iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); + + if( diff.Int64() > iAllowedFallBackTimerValue) { - LogBuffer.Copy(_L("No more servers available...")); - iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); - return KErrNotFound; + LogBuffer.Copy(_L("Timeout happened...")); + iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); + + return KErrTimedOut; } - - iTrace->Trace(_L("Trying next server..."),KTraceFileName, __LINE__); - - //Fallback Timer... - if(aLastErrorCode == KErrNone) //This means, server name is asked for first time only... - { - iTrace->Trace(_L("Start Time: "),KTraceFileName, __LINE__); - iFallBackStartTime.HomeTime(); - LogBuffer.Zero(); - iFallBackStartTime.FormatL(LogBuffer,KFormatTxt); - iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); - } - else + } + + if(aLastErrorCode == KErrNone) //This will be called only once...for first time only + { + aSLPId = (*iSLPList)[0].iSLPId; + aHslpToBeUsedAddress.Copy((*iSLPList)[0].iHSLPAddress); + aIAPName.Copy((*iSLPList)[0].iIapName); + aTls = (*iSLPList)[0].iTls; + aPskTls = (*iSLPList)[0].iPskTls; + aIsIapDialogShown = (*iSLPList)[0].iIsIAPDialgShown; + iCurrentServerCounter++; + + iTrace->Trace(_L("Server being used:"),KTraceFileName, __LINE__); + LogBuffer.Copy(aHslpToBeUsedAddress); + iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); + + iTrace->Trace(_L("iap being used:"),KTraceFileName, __LINE__); + LogBuffer.Copy(aIAPName); + iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); + + iTrace->Trace(_L("iap dlg configuration:"),KTraceFileName, __LINE__); + LogBuffer.Delete(0,256); + LogBuffer.AppendNum(aIsIapDialogShown); + iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); + + return KErrNone; + } + else + { + if(iIsFallBackAllowed && CheckErrorCodeL(aLastErrorCode))// Do not fallback in case if IMSI generated address failed for previous try. { - TTime currentTime; - currentTime.HomeTime(); - TTimeIntervalMicroSeconds diff = currentTime.MicroSecondsFrom(iFallBackStartTime); - - - iTrace->Trace(_L("Current Time: "),KTraceFileName, __LINE__); - LogBuffer.Zero(); - currentTime.FormatL(LogBuffer,KFormatTxt); - iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); - - LogBuffer.Copy(_L("Difference between time: ")); - LogBuffer.AppendNum(diff.Int64()); - iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); - - if( diff.Int64() > iAllowedFallBackTimerValue) - { - LogBuffer.Copy(_L("Timeout happened...")); - iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); - - return KErrTimedOut; - } - } - - if(aLastErrorCode == KErrNone) //This will be called only once...for first time only - { - aSLPId = (*iSLPList)[0].iSLPId; - aHslpToBeUsedAddress.Copy((*iSLPList)[0].iHSLPAddress); - aIAPName.Copy((*iSLPList)[0].iIapName); - aTls = (*iSLPList)[0].iTls; - aPskTls = (*iSLPList)[0].iPskTls; - aIsIapDialogShown = (*iSLPList)[0].iIsIAPDialgShown; - iCurrentServerCounter++; - + aSLPId = (*iSLPList)[iCurrentServerCounter].iSLPId; + aHslpToBeUsedAddress.Copy((*iSLPList)[iCurrentServerCounter].iHSLPAddress); + aIAPName.Copy((*iSLPList)[iCurrentServerCounter].iIapName); + aTls = (*iSLPList)[iCurrentServerCounter].iTls; + aPskTls = (*iSLPList)[iCurrentServerCounter].iPskTls; + aIsIapDialogShown = (*iSLPList)[iCurrentServerCounter].iIsIAPDialgShown; + iCurrentServerCounter++; + iTrace->Trace(_L("Fallback allowed & TLSAuth passed"),KTraceFileName, __LINE__); iTrace->Trace(_L("Server being used:"),KTraceFileName, __LINE__); LogBuffer.Copy(aHslpToBeUsedAddress); iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); - + iTrace->Trace(_L("iap being used:"),KTraceFileName, __LINE__); LogBuffer.Copy(aIAPName); iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); - + iTrace->Trace(_L("iap dlg configuration:"),KTraceFileName, __LINE__); LogBuffer.Delete(0,256); LogBuffer.AppendNum(aIsIapDialogShown); iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); - return KErrNone; } else { - if(iIsFallBackAllowed && CheckErrorCodeL(aLastErrorCode))// Do not fallback in case if IMSI generated address failed for previous try. - { - aSLPId = (*iSLPList)[iCurrentServerCounter].iSLPId; - aHslpToBeUsedAddress.Copy((*iSLPList)[iCurrentServerCounter].iHSLPAddress); - aIAPName.Copy((*iSLPList)[iCurrentServerCounter].iIapName); - aTls = (*iSLPList)[iCurrentServerCounter].iTls; - aPskTls = (*iSLPList)[iCurrentServerCounter].iPskTls; - aIsIapDialogShown = (*iSLPList)[iCurrentServerCounter].iIsIAPDialgShown; - iCurrentServerCounter++; - iTrace->Trace(_L("Fallback allowed & TLSAuth passed"),KTraceFileName, __LINE__); - iTrace->Trace(_L("Server being used:"),KTraceFileName, __LINE__); - LogBuffer.Copy(aHslpToBeUsedAddress); - iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); - - iTrace->Trace(_L("iap being used:"),KTraceFileName, __LINE__); - LogBuffer.Copy(aIAPName); - iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); - - iTrace->Trace(_L("iap dlg configuration:"),KTraceFileName, __LINE__); - LogBuffer.Delete(0,256); - LogBuffer.AppendNum(aIsIapDialogShown); - iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); - return KErrNone; - } - else - { - return KErrNotFound; - } + return KErrNotFound; } + } + } // -----------------------------------------------------------------------------