diff -r 984e13af52c4 -r fc7b30ed2058 bearermanagement/mpm/src/mpmiapselection.cpp --- a/bearermanagement/mpm/src/mpmiapselection.cpp Thu Jul 15 19:05:04 2010 +0300 +++ b/bearermanagement/mpm/src/mpmiapselection.cpp Thu Aug 19 10:18:49 2010 +0300 @@ -154,10 +154,13 @@ MPMLOGSTRING2( "CMPMIapSelection::ChooseIapL: bearerType: %i", bearerType ) // Complete selection with error code if wlan only was set and cellular IAP other - // than MMS IAP was tried to access - if ( wlanOnly && - ( bearerType == EMPMBearerTypePacketData ) && - ( iSession->IsMMSIap( iChooseIapPref.IapId() ) == EFalse ) ) + // than MMS IAP was tried to access + // Note that CurrentCellularDataUsage()tells if internal cellular connections are + // temporarily disabled because dial-up connection is prioritized over internal connections. + // + if ( ( wlanOnly || CurrentCellularDataUsage() == ECmCellularDataUsageDisabled ) && + ( bearerType == EMPMBearerTypePacketData ) && + ( iSession->IsMMSIap( iChooseIapPref.IapId() ) == EFalse ) ) { ChooseIapComplete( KErrPermissionDenied, NULL ); return; @@ -379,8 +382,10 @@ // to the user in this country if ( iSession->MyServer().RoamingWatcher()->RoamingStatus() == EMPMInternationalRoaming ) { - // Check whether queries are enabled - if ( !( iChooseIapPref.NoteBehaviour() & TExtendedConnPref::ENoteBehaviourConnDisableQueries ) ) + // Check that queries aren't disabled and + // enough time has elapsed from the last query cancelled by the user. + if ( !( iChooseIapPref.NoteBehaviour() & TExtendedConnPref::ENoteBehaviourConnDisableQueries ) && + !iSession->MyServer().IsConnPermQueryTimerOn() ) { TConnectionId connId = iSession->ConnectionId(); @@ -532,8 +537,10 @@ ( iSession->MyServer().CommsDatAccess()->CheckWlanL( validateIapId ) == ENotWlanIap ) && !( iSession->MyServer().CommsDatAccess()->IsVirtualIapL( validateIapId ) ) ) { - // Check whether queries are disabled - if ( !( iChooseIapPref.NoteBehaviour() & TExtendedConnPref::ENoteBehaviourConnDisableQueries ) ) + // Check that queries aren't disabled and + // enough time has elapsed from the last query cancelled by the user. + if ( !( iChooseIapPref.NoteBehaviour() & TExtendedConnPref::ENoteBehaviourConnDisableQueries ) && + !iSession->MyServer().IsConnPermQueryTimerOn() ) { if ( iSession->MyServer().RoamingWatcher()->RoamingStatus() == EMPMInternationalRoaming ) { @@ -922,8 +929,10 @@ // to the user in this country if ( iSession->MyServer().RoamingWatcher()->RoamingStatus() == EMPMInternationalRoaming ) { - // Check whether queries are enabled - if ( !( iChooseIapPref.NoteBehaviour() & TExtendedConnPref::ENoteBehaviourConnDisableQueries ) ) + // Check that queries aren't disabled and + // enough time has elapsed from the last query cancelled by the user. + if ( !( iChooseIapPref.NoteBehaviour() & TExtendedConnPref::ENoteBehaviourConnDisableQueries ) && + !iSession->MyServer().IsConnPermQueryTimerOn() ) { TConnectionId connId = iSession->ConnectionId(); @@ -1283,3 +1292,11 @@ return iChooseIapPref; } +// --------------------------------------------------------------------------- +// Get current cellular data usage setting +// --------------------------------------------------------------------------- +// +TInt CMPMIapSelection::CurrentCellularDataUsage() const + { + return iSession->MyServer().DataUsageWatcher()->CellularDataUsage(); + }