If the driver does not have a disconnect function or the disconnect
function returns anything else than -EINPROGRESS, consider the
network to be disconnected.
---
src/network.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/src/network.c b/src/network.c
index 1d5a13b..ce6fa85 100644
--- a/src/network.c
+++ b/src/network.c
@@ -1539,7 +1539,7 @@ int __connman_network_connect(struct connman_network
*network)
*/
int __connman_network_disconnect(struct connman_network *network)
{
- int err;
+ int err = 0;
DBG("network %p", network);
@@ -1550,13 +1550,12 @@ int __connman_network_disconnect(struct connman_network
*network)
if (!network->driver)
return -EUNATCH;
- if (!network->driver->disconnect)
- return -ENOSYS;
-
network->connecting = false;
- err = network->driver->disconnect(network);
- if (err == 0)
+ if (network->driver->disconnect)
+ err = network->driver->disconnect(network);
+
+ if (err != -EINPROGRESS)
set_disconnected(network);
return err;
--
1.8.5.3
_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman