From e95ec7c1d780788f4c85a630d5dc4c84d36353e9 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Tue, 21 Apr 2009 05:33:42 +0100 Subject: [PATCH] Fix carrier and disconnected interaction --- src/device.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/device.c b/src/device.c index b0210b0..13684ee 100644 --- a/src/device.c +++ b/src/device.c @@ -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); } -- 1.7.9.5