diff -r 9c97ad6591ae -r 7ec726f93df1 bearermanagement/mpm/src/mpmiapselection.cpp --- a/bearermanagement/mpm/src/mpmiapselection.cpp Mon May 03 12:53:07 2010 +0300 +++ b/bearermanagement/mpm/src/mpmiapselection.cpp Fri May 14 16:15:46 2010 +0300 @@ -123,6 +123,11 @@ snap ) iChooseIapPref.SetSnapId( snap ); iChooseIapPref.SetIapId( 0 ); + if ( iChooseIapPref.ConnType() == TMpmConnPref::EConnTypeImplicit ) + { + // No Connection selection dialog on reselection. + iChooseIapPref.SetConnType( TMpmConnPref::EConnTypeExplicit ); + } } else if ( iap ) { @@ -130,6 +135,11 @@ iap ) iChooseIapPref.SetIapId( iap ); iChooseIapPref.SetSnapId( 0 ); + if ( iChooseIapPref.ConnType() == TMpmConnPref::EConnTypeImplicit ) + { + // No Connection selection dialog on reselection. + iChooseIapPref.SetConnType( TMpmConnPref::EConnTypeExplicit ); + } } MPMLOGSTRING3( "CMPMIapSelection::ChooseIapL: IapID: %i SnapId: %i", @@ -345,7 +355,8 @@ // KErrGprsOfflineMode should be returned instead of KErrNone. // - if ( !iapTypeLanOrWlan && iSession->MyServer().IsPhoneOffline() ) + if ( !iapTypeLanOrWlan && ( iSession->MyServer().IsPhoneOffline() || + iSession->MyServer().RoamingWatcher()->RoamingStatus() == EMPMRoamingStatusUnknown ) ) { ChooseIapComplete( KErrGprsOfflineMode, &iChooseIapPref ); } @@ -471,7 +482,10 @@ // Check if any suitable IAP's were found, if not then complete selection with error code if ( validateIapId == 0 ) { - if ( iChooseIapPref.ConnType() == TMpmConnPref::EConnTypeDefault ) + if ( iChooseIapPref.ConnType() == TMpmConnPref::EConnTypeDefault || + ( iChooseIapPref.ConnType() == TMpmConnPref::EConnTypeExplicit && + !( iChooseIapPref.NoteBehaviour() & TExtendedConnPref::ENoteBehaviourConnDisableQueries ) && + iCommsDatAccess->IsInternetSnapL( 0, snap ) ) ) { ImplicitConnectionL(); } @@ -500,7 +514,8 @@ { ChooseIapComplete( KErrGprsServicesNotAllowed, NULL ); } - else if ( !iapTypeLanOrWlan && iSession->MyServer().IsPhoneOffline() ) + else if ( !iapTypeLanOrWlan && ( iSession->MyServer().IsPhoneOffline() || + iSession->MyServer().RoamingWatcher()->RoamingStatus() == EMPMRoamingStatusUnknown ) ) { // In case offline mode is enabled, only LAN or WLAN is allowed. // If some other bearer has been requested, then error code @@ -921,7 +936,8 @@ iapTypeLanOrWlan, *iSession ); - if ( !iapTypeLanOrWlan && iSession->MyServer().IsPhoneOffline() ) + if ( !iapTypeLanOrWlan && ( iSession->MyServer().IsPhoneOffline() || + iSession->MyServer().RoamingWatcher()->RoamingStatus() == EMPMRoamingStatusUnknown ) ) { MPMLOGSTRING2( "CMPMIapSelection::CompleteImplicitConnectionL: Completing with code = %i", KErrGprsOfflineMode )