supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplfallbackhandler.cpp
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplfallbackhandler.cpp Tue May 11 16:36:36 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplfallbackhandler.cpp Tue May 25 13:09:42 2010 +0300
@@ -136,6 +136,47 @@
aTls = ETrue;
aPskTls = EFalse;
aIsIapDialogShown = ETrue;
+
+ CServerParams* param = CServerParams::NewL();
+ CleanupStack::PushL(param);
+
+ //Find out if this alternative generated SUPL server is in the SUPL Settings list
+ TInt err = iSuplSettings.GetSlpInfoAddress(iGenratedHslpAddress, param);
+ if(err == KErrNotFound)
+ {
+ //Server does not exist
+ iTrace->Trace(_L("Server does not exist in list so adding it in."),KTraceFileName, __LINE__);
+ CServerParams* newParam=CServerParams::NewL();
+ CleanupStack::PushL(newParam);
+ User::LeaveIfError(newParam->Set( iGenratedHslpAddress,iDefaultIAPName,ETrue,ETrue,ETrue,EFalse ));
+
+ err = iSuplSettings.AddNewServer( newParam, aSLPId ); //Ignore error
+ LogBuffer.Copy(_L("AddNewServer() completed with err: "));
+ LogBuffer.AppendNum(err);
+ iTrace->Trace(LogBuffer,KTraceFileName, __LINE__);
+
+ CleanupStack::PopAndDestroy(&newParam);
+ }
+ else
+ {
+ //Server exists, get the SLP ID and the IAP Access point for this server
+ HBufC* hslpAddress = HBufC::NewL(KHSLPAddressLength);
+ HBufC* iapName = HBufC::NewL(KMaxIapNameLength);
+ TBool serverEnabled;
+ TBool simChangeRemove;
+ TBool usageInHomeNw;
+ TBool editable;
+
+ iTrace->Trace(_L("Server already exists, getting the SLP ID and Access Point."),KTraceFileName, __LINE__);
+
+ param->Get(aSLPId,hslpAddress->Des(),iapName->Des(),serverEnabled,simChangeRemove,usageInHomeNw,editable);
+ aIAPName.Copy(iapName->Des());
+
+ delete hslpAddress;
+ delete iapName;
+ }
+
+ CleanupStack::PopAndDestroy(¶m);
iTrace->Trace(_L("Fallback allowed & TLSAuth failed"),KTraceFileName, __LINE__);
iTrace->Trace(_L("Server being used:"),KTraceFileName, __LINE__);
@@ -192,6 +233,18 @@
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;
}