diff -r 1c425781161e -r 3d23268b50f6 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 Tue Jul 06 16:24:00 2010 +0300 +++ b/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/src/core_operation_roam.cpp Wed Aug 18 11:35:02 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; }