--- 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 )