supl/locationsuplfw/terminalinitiationapi/src/epos_suplterminalapi.cpp
branchRCL_3
changeset 20 2b4ea9893b66
parent 4 42de37ce7ce4
child 21 6b6920c56e2f
--- a/supl/locationsuplfw/terminalinitiationapi/src/epos_suplterminalapi.cpp	Thu Aug 19 10:20:18 2010 +0300
+++ b/supl/locationsuplfw/terminalinitiationapi/src/epos_suplterminalapi.cpp	Tue Aug 31 15:37:04 2010 +0300
@@ -859,7 +859,7 @@
 		}
 
 	parValues.ResetAndDestroy();
-	aParamValues.ResetAndDestroy();
+    //coverity[deref_ptr_in_call]
 	TInt error = iSuplStorageSettings->GetAllSlp(parValues); //handle return value...
 	if (error!=KErrNone)
 		{
@@ -905,6 +905,7 @@
 	delete serverAddress;
 	delete iapName;	
     aParamValues.Close();
+    //coverity[check_after_deref]
 	if (iSuplStorageSettings)
 		{
 		delete iSuplStorageSettings;
@@ -1025,7 +1026,15 @@
 	{
 	__ASSERT_ALWAYS(SubSessionHandle(), 
 				User::Panic(KSuplClientFault, ESuplServerBadHandle));
-    
+   
+   
+  if(!CheckSuplTriggerServiceStatus()) //To check that triggering service is allowed by user...
+  {
+  	TRequestStatus *status = &aStatus; 
+		User::RequestComplete(status,KErrNotSupported);	
+		return;
+  }
+  
 	if( iSuplService != ESUPL_2_0 )
 		{
 		TRequestStatus *status = &aStatus; 
@@ -1094,6 +1103,13 @@
 	__ASSERT_ALWAYS(SubSessionHandle(), 
 			User::Panic(KSuplClientFault, ESuplServerBadHandle));
     
+  if(!CheckSuplTriggerServiceStatus()) //To check that triggering service is allowed by user...
+		{
+			TRequestStatus *status = &aStatus; 
+			User::RequestComplete(status,KErrNotSupported);	
+			return;
+		} 
+
 	if( iSuplService != ESUPL_2_0 )
 		{
 		TRequestStatus *status = &aStatus; 
@@ -1193,6 +1209,13 @@
 	__ASSERT_ALWAYS(SubSessionHandle(), 
 			User::Panic(KSuplClientFault, ESuplServerBadHandle));
 
+		if(!CheckSuplTriggerServiceStatus()) //To check that triggering service is allowed by user...
+		{
+		TRequestStatus *status = &aStatus; 
+		User::RequestComplete(status,KErrNotSupported);	
+		return;
+		}
+
 	if( iSuplService != ESUPL_2_0 )
 		{
 		TRequestStatus *status = &aStatus; 
@@ -1232,4 +1255,41 @@
 	SendReceive(ESuplTerminalSubssnNotifyTriggerFired, args, aStatus);
 	}
 
+// ---------------------------------------------------------
+// RSuplTerminalSubSession::CheckSuplTriggerServiceStatus
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TBool RSuplTerminalSubSession::CheckSuplTriggerServiceStatus()
+{
+	
+	delete iSuplStorageSettings;
+	iSuplStorageSettings = NULL;
+	
+	CSuplSettings::TSuplTriggerStatus suplTriggerStatus;
+
+	// create local object iSuplStorageSettings
+	TRAPD(err,iSuplStorageSettings = CSuplSettings::NewL());
+	if(err == KErrNone)
+	{
+			iSuplStorageSettings->GetSuplTriggeredServiceStatus(suplTriggerStatus);
+			delete iSuplStorageSettings;
+			iSuplStorageSettings = NULL;
+
+			if(suplTriggerStatus == CSuplSettings::ESuplTriggerOn)
+			{
+					return ETrue;						
+			}
+			else
+			{
+					return EFalse;	
+			}
+	}		
+	else
+	{
+			return ETrue;
+	}
+}
+
 // end of file