Fix carrier and disconnected interaction
authorMarcel Holtmann <marcel@holtmann.org>
Tue, 21 Apr 2009 04:33:42 +0000 (05:33 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Tue, 21 Apr 2009 04:33:42 +0000 (05:33 +0100)
src/device.c

index b0210b0..13684ee 100644 (file)
@@ -170,6 +170,18 @@ static int set_carrier(struct connman_device *device, connman_bool_t carrier)
                enum connman_element_type type = CONNMAN_ELEMENT_TYPE_UNKNOWN;
                struct connman_element *element;
 
+               device->disconnected = TRUE;
+
+               switch (device->policy) {
+               case CONNMAN_DEVICE_POLICY_UNKNOWN:
+               case CONNMAN_DEVICE_POLICY_IGNORE:
+               case CONNMAN_DEVICE_POLICY_OFF:
+               case CONNMAN_DEVICE_POLICY_MANUAL:
+                       return 0;
+               case CONNMAN_DEVICE_POLICY_AUTO:
+                       break;
+               }
+
                switch (device->element.ipv4.method) {
                case CONNMAN_IPV4_METHOD_UNKNOWN:
                case CONNMAN_IPV4_METHOD_OFF:
@@ -191,6 +203,8 @@ static int set_carrier(struct connman_device *device, connman_bool_t carrier)
                                                        &device->element) < 0)
                                connman_element_unref(element);
 
+                       device->disconnected = FALSE;
+
                        __connman_service_indicate_configuration(service);
                }
        } else
@@ -1258,19 +1272,6 @@ int connman_device_set_carrier(struct connman_device *device,
 
        device->carrier = carrier;
 
-       if (carrier == TRUE)
-               device->disconnected = FALSE;
-
-       switch (device->policy) {
-       case CONNMAN_DEVICE_POLICY_UNKNOWN:
-       case CONNMAN_DEVICE_POLICY_IGNORE:
-       case CONNMAN_DEVICE_POLICY_OFF:
-               return 0;
-       case CONNMAN_DEVICE_POLICY_AUTO:
-       case CONNMAN_DEVICE_POLICY_MANUAL:
-               break;
-       }
-
        return set_carrier(device, device->carrier);
 }