wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/src/core_operation_roam.cpp
--- a/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/src/core_operation_roam.cpp Mon Jun 21 10:46:23 2010 +0300
+++ b/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/src/core_operation_roam.cpp Fri Jul 02 13:43:20 2010 +0300
@@ -16,7 +16,7 @@
*/
/*
-* %version: 76.1.3 %
+* %version: 78 %
*/
#include "core_operation_roam.h"
@@ -802,21 +802,21 @@
core_management_status_e management_status )
{
DEBUG( "core_operation_roam_c::connect_status()" );
-
+
core_iap_data_c& iap_data( server_m->get_connection_data()->iap_data() );
- if ( management_status == core_management_status_assoc_denied_full_ap )
- {
- DEBUG( "core_operation_roam_c::connect_status() - AP full" );
- return core_connect_ap_full;
- }
-
if ( request_status == core_error_eapol_auth_start_timeout )
{
DEBUG( "core_operation_roam_c::connect_status() - EAPOL authentication timeout before authentication was started" );
return core_connect_eapol_auth_start_timeout;
}
+ if ( request_status == core_error_unsupported_config )
+ {
+ DEBUG( "core_operation_roam_c::connect_status() - AP has an unsupported configuration" );
+ return core_connect_ap_unsupported_configuration;
+ }
+
switch( iap_data.security_mode() )
{
case core_security_mode_wep:
@@ -855,7 +855,9 @@
case core_security_mode_allow_unsecure:
{
break;
- }
+ }
+ case core_security_mode_802dot1x_unencrypted:
+ /** Falls through on purpose. */
case core_security_mode_802dot1x:
{
if ( request_status == core_error_eapol_total_failure ||
@@ -925,6 +927,20 @@
}
}
+ if ( management_status == core_management_status_assoc_denied_full_ap )
+ {
+ DEBUG( "core_operation_roam_c::connect_status() - AP full" );
+ return core_connect_ap_full;
+ }
+
+ if ( management_status == core_management_status_unsupported_capabilities ||
+ management_status == core_management_status_assoc_unsup_basic_rates ||
+ management_status == core_management_status_assoc_unsup_ht_features )
+ {
+ DEBUG( "core_operation_roam_c::connect_status() - AP has an unsupported configuration" );
+ return core_connect_ap_unsupported_configuration;
+ }
+
return core_connect_undefined;
}
@@ -951,6 +967,15 @@
}
/**
+ * Unsupported configuration is always fatal.
+ */
+ if( request_status == core_error_unsupported_config )
+ {
+ DEBUG( "core_operation_roam_c::is_fatal_failure() - fatal, unsupported configuration" );
+ return core_ap_blacklist_reason_association_status;
+ }
+
+ /**
* Don't consider a failed (re-)association attempt as fatal since it's
* possible AP just doesn't have our authentication cached any more.
*/
@@ -997,7 +1022,8 @@
eap_error );
core_connect_status_e status( core_connect_wpa_eap_failure );
- if ( security_mode == core_security_mode_802dot1x )
+ if ( security_mode == core_security_mode_802dot1x ||
+ security_mode == core_security_mode_802dot1x_unencrypted )
{
status = core_connect_802_1x_failure;
}