diff -r 68f0c7cd80ec -r 4dc3bb0099b0 connectionmonitoring/connmon/connectionmonitor/src/ConnMonIAP.cpp --- 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; + } } } }