connectionmonitoring/connmon/connectionmonitor/src/ConnMonIAP.cpp
branchRCL_3
changeset 15 4dc3bb0099b0
parent 8 2e6c4614c58e
child 55 fc7b30ed2058
--- a/connectionmonitoring/connmon/connectionmonitor/src/ConnMonIAP.cpp	Mon Mar 15 12:42:11 2010 +0200
+++ b/connectionmonitoring/connmon/connectionmonitor/src/ConnMonIAP.cpp	Wed Mar 31 22:15:10 2010 +0300
@@ -1181,6 +1181,7 @@
     {
     LOGENTRFN("CConnMonIAP::GetBearerInfo()")
     TInt err( KErrNone );
+    TBool getBearerCalled( EFalse );
 
     // Find connection matching the given Id
     TInt index = Index( aConnectionId );
@@ -1199,6 +1200,7 @@
                     aConnectionId,
                     iConnInfos[index].iBearer,
                     iConnInfos[index].iBearerInfo );
+            getBearerCalled = ETrue;
             }
         if ( KErrNone == err )
             {
@@ -1244,17 +1246,21 @@
                     iConnInfos[index].iBearerInfo.iBearer == EBearerInfoHSUPA ||
                     iConnInfos[index].iBearerInfo.iBearer == EBearerInfoHSxPA ) )
                 {
-                // CSD/HSCSD info could change after the first query also
-                // GPRS/EdgeGPRS/WCDMA info can change.
-                TInt bearer( EBearerUnknown );
-                TBearerInfo bearerInfo;
-
-                LOGIT("GetBearerInfo: GetBearer() 2nd query")
-                err = GetBearer( aConnectionId, bearer, bearerInfo );
-                if ( ( KErrNone == err ) && ( bearerInfo.iBearer != EBearerInfoUnknown ) )
+                // If GetBearer() was just called, no need to do it again.
+                if ( !getBearerCalled )
                     {
-                    iConnInfos[index].iBearer = bearer;
-                    iConnInfos[index].iBearerInfo = bearerInfo;
+                    // CSD/HSCSD info could change after the first query also
+                    // GPRS/EdgeGPRS/WCDMA info can change.
+                    TInt bearer( EBearerUnknown );
+                    TBearerInfo bearerInfo;
+
+                    LOGIT("GetBearerInfo: GetBearer() 2nd query")
+                    err = GetBearer( aConnectionId, bearer, bearerInfo );
+                    if ( ( KErrNone == err ) && ( bearerInfo.iBearer != EBearerInfoUnknown ) )
+                        {
+                        iConnInfos[index].iBearer = bearer;
+                        iConnInfos[index].iBearerInfo = bearerInfo;
+                        }
                     }
                 }
             }