Merge "[connman]: Fixed: ConnMan keep trying connection infintely" into tizen
authortaesub kim <taesub.kim@samsung.com>
Tue, 7 Feb 2017 10:24:21 +0000 (02:24 -0800)
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>
Tue, 7 Feb 2017 10:24:21 +0000 (02:24 -0800)
1  2 
plugins/wifi.c
src/service.c

diff --combined plugins/wifi.c
@@@ -133,6 -133,8 +133,8 @@@ struct wifi_data 
        struct connman_network *scan_pending_network;
        bool allow_full_scan;
  #endif
+       int disconnect_code;
  };
  
  #if defined TIZEN_EXT
@@@ -2168,9 -2170,6 +2170,9 @@@ static void ssid_init(GSupplicantSSID *
  #if defined TIZEN_EXT
        ssid->bssid = connman_network_get_bssid(network);
  #endif
 +#if defined TIZEN_EXT
 +      ssid->freq = connman_network_get_frequency(network);
 +#endif
  
        if (connman_setting_get_bool("BackgroundScanning"))
                ssid->bgscan = BGSCAN_DEFAULT;
@@@ -2661,6 -2660,25 +2663,25 @@@ static void interface_state(GSupplicant
                                                network, wifi))
                        break;
  
+ #if defined TIZEN_EXT
+               wifi->disconnect_code = g_supplicant_interface_get_disconnect_reason(wifi->interface);
+               DBG("Disconnect Reason code %d", wifi->disconnect_code);
+ #endif
+               /* See table 8-36 Reason codes in IEEE Std 802.11 */
+               switch (wifi->disconnect_code) {
+               case 1: /* Unspecified reason */
+                       /* Let's assume it's because we got blocked */
+               case 6: /* Class 2 frame received from nonauthenticated STA */
+                       connman_network_set_error(network,
+                                               CONNMAN_NETWORK_ERROR_BLOCKED);
+                       break;
+               default:
+                       break;
+               }
                /* We disable the selected network, if not then
                 * wpa_supplicant will loop retrying */
                if (g_supplicant_interface_enable_selected_network(interface,
  
  #if defined TIZEN_EXT
                int err;
-               int reason_code = 0;
  
                err = g_supplicant_interface_remove_network(wifi->interface);
                if (err < 0)
                        DBG("Failed to remove network(%d)", err);
  
-               reason_code = g_supplicant_interface_get_disconnect_reason(wifi->interface);
  
                /* Some of Wi-Fi networks are not comply Wi-Fi specification.
                 * Retry association until its retry count is expired */
                        break;
                }
  
-               if(reason_code > 0){
-                       DBG("Set disconnect reason code(%d)", reason_code);
-                       connman_network_set_disconnect_reason(network, reason_code);
+               if(wifi->disconnect_code > 0){
+                       DBG("Set disconnect reason code(%d)", wifi->disconnect_code);
+                       connman_network_set_disconnect_reason(network, wifi->disconnect_code);
                }
  
                /* To avoid unnecessary repeated association in wpa_supplicant,
diff --combined src/service.c
@@@ -77,7 -77,7 +77,7 @@@ struct connman_service_user 
        uid_t current_user;
  };
  
 -#if defined TIZEN_TV_EXT
 +#ifdef TIZEN_EXT
  enum connman_dnsconfig_method {
        CONNMAN_DNSCONFIG_METHOD_UNKNOWN = 0,
        CONNMAN_DNSCONFIG_METHOD_MANUAL  = 1,
@@@ -165,7 -165,7 +165,7 @@@ struct connman_service 
        char *keymgmt_type;
        int disconnect_reason;
  #endif
 -#if defined TIZEN_TV_EXT
 +#ifdef TIZEN_EXT
        enum connman_dnsconfig_method dns_config_method;
  #endif
  };
@@@ -412,6 -412,8 +412,8 @@@ static const char *error2string(enum co
                return "auth-failed";
        case CONNMAN_SERVICE_ERROR_INVALID_KEY:
                return "invalid-key";
+       case CONNMAN_SERVICE_ERROR_BLOCKED:
+               return "blocked";
        }
  
        return NULL;
@@@ -445,7 -447,7 +447,7 @@@ static enum connman_service_proxy_metho
                return CONNMAN_SERVICE_PROXY_METHOD_UNKNOWN;
  }
  
 -#if defined TIZEN_TV_EXT
 +#ifdef TIZEN_EXT
  static const char *__connman_dnsconfig_method2string(enum connman_dnsconfig_method method)
  {
        switch (method) {
@@@ -752,13 -754,11 +754,13 @@@ static int service_load(struct connman_
                service->nameservers_config = NULL;
        }
  
 -#if defined TIZEN_TV_EXT
 +#ifdef TIZEN_EXT
        char *dns_method;
 -      dns_method = g_key_file_get_string(keyfile, service->identifier,
 -                      "Nameservers.method", NULL);
 -      service->dns_config_method = __connman_dnsconfig_string2method(dns_method);
 +      if (TIZEN_TV_EXT) {
 +              dns_method = g_key_file_get_string(keyfile, service->identifier,
 +                              "Nameservers.method", NULL);
 +              service->dns_config_method = __connman_dnsconfig_string2method(dns_method);
 +      }
  #endif
  
        service->timeservers_config = g_key_file_get_string_list(keyfile,
@@@ -997,18 -997,16 +999,18 @@@ static int service_save(struct connman_
        g_key_file_remove_key(keyfile, service->identifier,
                                                        "Nameservers", NULL);
  
 -#if defined TIZEN_TV_EXT
 -      if(service->dns_config_method != 0) {
 -              const char *method;
 -              method = __connman_dnsconfig_method2string(
 -                              service->dns_config_method);
 -              g_key_file_set_string(keyfile, service->identifier,
 -                              "Nameservers.method", method);
 -      } else
 -      g_key_file_remove_key(keyfile, service->identifier,
 -                                              "Nameservers.method", NULL);
 +#ifdef TIZEN_EXT
 +      if (TIZEN_TV_EXT) {
 +              if(service->dns_config_method != 0) {
 +                      const char *method;
 +                      method = __connman_dnsconfig_method2string(
 +                                      service->dns_config_method);
 +                      g_key_file_set_string(keyfile, service->identifier,
 +                                      "Nameservers.method", method);
 +              } else
 +              g_key_file_remove_key(keyfile, service->identifier,
 +                                                      "Nameservers.method", NULL);
 +      }
  #endif
  
        if (service->timeservers_config) {
@@@ -1495,9 -1493,8 +1497,9 @@@ int __connman_service_nameserver_append
  
        nameservers[len + 1] = NULL;
  
 -#if defined TIZEN_TV_EXT
 -      if(service->dns_config_method == CONNMAN_DNSCONFIG_METHOD_UNKNOWN)
 +#ifdef TIZEN_EXT
 +      if(TIZEN_TV_EXT &&
 +         service->dns_config_method == CONNMAN_DNSCONFIG_METHOD_UNKNOWN)
                service->dns_config_method = CONNMAN_DNSCONFIG_METHOD_DHCP;
  #endif
  
@@@ -2117,15 -2114,13 +2119,15 @@@ static void append_dns(DBusMessageIter 
        if (!is_connected(service))
                return;
  
 -#if defined TIZEN_TV_EXT
 -      /* Append DNS Config Type */
 +#ifdef TIZEN_EXT
        const char *str;
 -      str = __connman_dnsconfig_method2string(service->dns_config_method);
 -      if(str != NULL)
 -              dbus_message_iter_append_basic(iter,
 -                      DBUS_TYPE_STRING, &str);
 +      if (TIZEN_TV_EXT) {
 +              /* Append DNS Config Type */
 +              str = __connman_dnsconfig_method2string(service->dns_config_method);
 +              if(str != NULL)
 +                      dbus_message_iter_append_basic(iter,
 +                              DBUS_TYPE_STRING, &str);
 +      }
  #endif
  
        if (service->nameservers_config) {
@@@ -2156,15 -2151,13 +2158,15 @@@ static void append_dnsconfig(DBusMessag
  {
        struct connman_service *service = user_data;
  
 -#if defined TIZEN_TV_EXT
 +#ifdef TIZEN_EXT
        /* Append DNS Config Type */
        const char *str;
 -      str = __connman_dnsconfig_method2string(service->dns_config_method);
 -      if(str != NULL)
 -              dbus_message_iter_append_basic(iter,
 -                      DBUS_TYPE_STRING, &str);
 +      if (TIZEN_TV_EXT) {
 +              str = __connman_dnsconfig_method2string(service->dns_config_method);
 +              if(str != NULL)
 +                      dbus_message_iter_append_basic(iter,
 +                              DBUS_TYPE_STRING, &str);
 +      }
  #endif
  
        if (!service->nameservers_config)
@@@ -2803,13 -2796,11 +2805,13 @@@ static void append_properties(DBusMessa
                connman_dbus_dict_append_basic(dict, "State",
                                                DBUS_TYPE_STRING, &str);
  
 -#if defined TIZEN_TV_EXT
 -      str = state2string(service->state_ipv6);
 -      if (str != NULL)
 -              connman_dbus_dict_append_basic(dict, "StateIPv6",
 -                                              DBUS_TYPE_STRING, &str);
 +#ifdef TIZEN_EXT
 +      if (TIZEN_TV_EXT) {
 +              str = state2string(service->state_ipv6);
 +              if (str != NULL)
 +                      connman_dbus_dict_append_basic(dict, "StateIPv6",
 +                                                      DBUS_TYPE_STRING, &str);
 +      }
  #endif
  
        str = error2string(service->error);
@@@ -3865,18 -3856,16 +3867,18 @@@ static DBusMessage *set_property(DBusCo
                        const char *val;
                        dbus_message_iter_get_basic(&entry, &val);
                        dbus_message_iter_next(&entry);
 -#if defined TIZEN_TV_EXT
 -                      /* First unpack the DNS Config Method */
 -                      if(g_strcmp0(val, "manual") == 0) {
 -                              service->dns_config_method =
 -                                      CONNMAN_DNSCONFIG_METHOD_MANUAL;
 -                              continue;
 -                      } else if(g_strcmp0(val, "dhcp") == 0) {
 -                              service->dns_config_method =
 -                                      CONNMAN_DNSCONFIG_METHOD_DHCP;
 -                              continue;
 +#ifdef TIZEN_EXT
 +                      if (TIZEN_TV_EXT) {
 +                              /* First unpack the DNS Config Method */
 +                              if(g_strcmp0(val, "manual") == 0) {
 +                                      service->dns_config_method =
 +                                              CONNMAN_DNSCONFIG_METHOD_MANUAL;
 +                                      continue;
 +                              } else if(g_strcmp0(val, "dhcp") == 0) {
 +                                      service->dns_config_method =
 +                                              CONNMAN_DNSCONFIG_METHOD_DHCP;
 +                                      continue;
 +                              }
                        }
  #endif
                        if (connman_inet_check_ipaddress(val) > 0) {
@@@ -4802,11 -4791,9 +4804,11 @@@ bool __connman_service_remove(struct co
                        __connman_provider_is_immutable(service->provider))
                return false;
  
 +#if !defined TIZEN_EXT
        if (!service->favorite && service->state !=
                                                CONNMAN_SERVICE_STATE_FAILURE)
                return false;
 +#endif
  
        __connman_service_disconnect(service);