Fix bug in Ip conflict set/get enabled API's 36/180236/1
authorAbhishek Sansanwal <abhishek.s94@samsung.com>
Fri, 25 May 2018 13:55:11 +0000 (19:25 +0530)
committerAbhishek Sansanwal <abhishek.s94@samsung.com>
Fri, 25 May 2018 14:03:14 +0000 (19:33 +0530)
After each reboot the enabled state was being misreported
if WiFi was not connected to an AP previously.

Signed-off-by: Abhishek Sansanwal <abhishek.s94@samsung.com>
Change-Id: Iadcd7c4af5a82c748e97325e04f9520a963d17ed

src/ip-conflict-detect.c

index adb9124..65805e3 100755 (executable)
@@ -94,7 +94,7 @@ static struct timer_data td = {
 
 int ioctl_sock;
 static bool initial_bursts = true;
-bool is_ip_conflict_detect_enabled = true;
+bool is_ip_conflict_detect_enabled = false;
 static gboolean send_arp(gpointer data);
 static void __netconfig_wifi_notify_ip_conflict(char *state, char *mac);
 ip_conflict_state_e conflict_state = NETCONFIG_IP_CONFLICT_STATE_CONFLICT_NOT_DETECTED;
@@ -335,8 +335,8 @@ err:
 
 struct sock_data * start_ip_conflict_mon(void)
 {
-       if (is_ip_conflict_detect_enabled == false) {
-               INFO("detection mode is set to false");
+       if (is_ip_conflict_detect_enabled == true) {
+               INFO("detection mode is set to true");
                return NULL;
        }
 
@@ -381,6 +381,8 @@ struct sock_data * start_ip_conflict_mon(void)
 
                sd->timeout = td.initial_time;
                send_arp(sd);
+               is_ip_conflict_detect_enabled = true;
+               conflict_state = NETCONFIG_IP_CONFLICT_STATE_CONFLICT_NOT_DETECTED;
                return sd;
        }
 }
@@ -412,6 +414,8 @@ void stop_ip_conflict_mon()
        }
        g_free(sd);
        sd = NULL;
+       is_ip_conflict_detect_enabled = false;
+       conflict_state = NETCONFIG_IP_CONFLICT_STATE_UNKNOWN;
        INFO("Monitoring stopped");
 }
 
@@ -442,8 +446,6 @@ gboolean handle_ip_conflict_set_enable(Wifi *wifi, GDBusMethodInvocation *contex
 
 
        if (detect == false) {
-               is_ip_conflict_detect_enabled = false;
-               conflict_state = NETCONFIG_IP_CONFLICT_STATE_UNKNOWN;
                if (sd != NULL)
                        stop_ip_conflict_mon();
                else {
@@ -452,8 +454,6 @@ gboolean handle_ip_conflict_set_enable(Wifi *wifi, GDBusMethodInvocation *contex
                        return TRUE;
                }
        } else {
-               is_ip_conflict_detect_enabled = true;
-               conflict_state = NETCONFIG_IP_CONFLICT_STATE_CONFLICT_NOT_DETECTED;
                if (sd == NULL) {
                        if (start_ip_conflict_mon() == NULL) {
                                INFO("Failed to start IP conflict monitoring");