In case of wifi off, check wifi pending call only 41/13041/1 accepted/tizen_ivi_panda tizen_ivi_panda accepted/tizen/ivi/panda/20140403.015059 submit/tizen_ivi_panda/20140403.011846
authortaesub.kim <taesub.kim@samsung.com>
Wed, 27 Nov 2013 06:38:20 +0000 (15:38 +0900)
committertaesub.kim <taesub.kim@samsung.com>
Wed, 27 Nov 2013 06:39:34 +0000 (15:39 +0900)
Change-Id: I7f2b3293fa81f01d51c3ab69911d9ed6f0e7585d
Signed-off-by: Taesub Kim <taesub.kim@samsung.com>
packaging/libnet-client.spec
src/network-wifi-intf.c

index 09f0853..476a787 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libnet-client
 Summary:    Network Client library (Shared library)
-Version:    0.1.77_49
+Version:    0.1.77_50
 Release:    1
 Group:      System/Network
 License:    Flora License
index 6637390..ff42111 100644 (file)
@@ -91,7 +91,7 @@ static net_wifi_state_t __net_get_wifi_service_state(char *profile_name)
                case NET_STATE_TYPE_FAILURE :
                case NET_STATE_TYPE_DISCONNECT :
                        break;
-               }               
+               }
        }
 
        if (wifi_state == WIFI_CONNECTED &&
@@ -104,6 +104,32 @@ static net_wifi_state_t __net_get_wifi_service_state(char *profile_name)
        return wifi_state;
 }
 
+static gboolean __net_check_wifi_pending(void)
+{
+       if (request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION].flag) {
+               char *name = (char*)request_table[NETWORK_REQUEST_TYPE_OPEN_CONNECTION].ProfileName;
+
+               if (g_str_has_prefix(name, CONNMAN_WIFI_SERVICE_PROFILE_PREFIX) == TRUE)
+                       return TRUE;
+               else
+                       return FALSE;
+       }
+
+       if (request_table[NETWORK_REQUEST_TYPE_CLOSE_CONNECTION].flag) {
+               char *name = (char*)request_table[NETWORK_REQUEST_TYPE_CLOSE_CONNECTION].ProfileName;
+
+               if (g_str_has_prefix(name, CONNMAN_WIFI_SERVICE_PROFILE_PREFIX) == TRUE)
+                       return TRUE;
+               else
+                       return FALSE;
+       }
+
+       if (request_table[NETWORK_REQUEST_TYPE_SET_DEFAULT].flag)
+                       return FALSE;
+
+       return TRUE;
+}
+
 /*****************************************************************************
  *     ConnMan Wi-Fi Client Interface Async API Definition
  *****************************************************************************/
@@ -297,8 +323,16 @@ EXPORT_API int net_wifi_power_off(void)
                return NET_ERR_IN_PROGRESS;
        }
 
-       _net_dbus_pending_call_unref();
-       memset(request_table, 0, sizeof(request_table));
+       if (_net_dbus_is_pending_call_used() == TRUE) {
+               if (__net_check_wifi_pending() == TRUE) {
+                       _net_dbus_pending_call_unref();
+                       memset(request_table, 0, sizeof(request_table));
+               } else {
+                       NETWORK_LOG(NETWORK_ERROR, "Error!! pending call already in progress\n");
+                       __NETWORK_FUNC_EXIT__;
+                       return NET_ERR_INVALID_OPERATION;
+               }
+       }
 
        request_table[NETWORK_REQUEST_TYPE_WIFI_POWER].flag = TRUE;