diff options
author | Samuel Ortiz <sameo@linux.intel.com> | 2010-08-05 16:38:12 +0200 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2010-08-06 15:14:45 +0200 |
commit | 43e7b0260857b48f19aa4165699453dd6608bb3b (patch) | |
tree | d2343aec3980db770c2c12505d4aea6eb5707581 /src/device.c | |
parent | d676d2dcc2ab9062bf3c252b67c6e756248c83b9 (diff) | |
download | connman-43e7b0260857b48f19aa4165699453dd6608bb3b.tar.gz connman-43e7b0260857b48f19aa4165699453dd6608bb3b.tar.bz2 connman-43e7b0260857b48f19aa4165699453dd6608bb3b.zip |
Disable offline devices upon device_set_connected(TRUE) calls
Some devices are powered up asynchronously, and one can potentially
enable offline mode while the device is not powered up yet. The
device thus needs to be turned back off when it's finally reported
to be on.
Diffstat (limited to 'src/device.c')
-rw-r--r-- | src/device.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/device.c b/src/device.c index c1d74b67..39d86b50 100644 --- a/src/device.c +++ b/src/device.c @@ -1007,6 +1007,11 @@ int connman_device_set_powered(struct connman_device *device, else __connman_technology_disable_device(device); + if (device->offlinemode == TRUE && powered == TRUE) { + powered_changed(device); + return connman_device_set_powered(device, FALSE); + } + if (device->registered == FALSE) return 0; @@ -1070,8 +1075,10 @@ int __connman_device_enable_persistent(struct connman_device *device) err = __connman_device_enable(device); if (err == 0 || err == -EINPROGRESS) { - if (__connman_profile_get_offlinemode() == TRUE) + if (__connman_profile_get_offlinemode() == TRUE) { + device->offlinemode = FALSE; __connman_profile_set_offlinemode(FALSE, FALSE); + } } |