supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplfallbackhandler.cpp
branchRCL_3
changeset 21 6b6920c56e2f
parent 20 2b4ea9893b66
child 22 fce0ae2e4223
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplfallbackhandler.cpp	Tue Aug 31 15:37:04 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplfallbackhandler.cpp	Wed Sep 01 12:24:21 2010 +0100
@@ -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(param);
+					CleanupStack::PopAndDestroy(&param);
                                 
             		iTrace->Trace(_L("Fallback allowed & TLSAuth failed"),KTraceFileName, __LINE__);
             		iTrace->Trace(_L("Server being used:"),KTraceFileName, __LINE__);
@@ -204,150 +204,149 @@
 	     	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__);
 
-	//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;
 
-		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("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 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__); 		
 		
-		//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(&param);
+			CleanupStack::PopAndDestroy(&param);
 
-		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)	
+			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
             {
-            LogBuffer.Copy(_L("Timeout happened..."));
-            iTrace->Trace(LogBuffer,KTraceFileName, __LINE__); 		
-            
-            return KErrTimedOut;
-            }
-        }	
+            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__);      
                 
-    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__);
+                return KErrTimedOut;
+                }
+            }   
                     
-        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.
+        if(aLastErrorCode == KErrNone)  //This will be called only once...for first time only
             {
-            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__);
+            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
             {
-            return KErrNotFound;
+            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;
+                }
             }
-        }
-                    
     }
     
 // -----------------------------------------------------------------------------