--- 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;
+ }
}
}
}