diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2009-01-05 04:11:08 +0100 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2009-01-05 04:11:08 +0100 |
commit | c795f784422e6b5ad03fe358b5ec6175826865b7 (patch) | |
tree | 4ab46cddb25edffc2ca881d34bb2845740bceb8a /src | |
parent | 71d46c63b8394c8bcf029186a7d2f43073512e92 (diff) | |
download | connman-c795f784422e6b5ad03fe358b5ec6175826865b7.tar.gz connman-c795f784422e6b5ad03fe358b5ec6175826865b7.tar.bz2 connman-c795f784422e6b5ad03fe358b5ec6175826865b7.zip |
Check connected state and improve disconnect
Diffstat (limited to 'src')
-rw-r--r-- | src/network.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/network.c b/src/network.c index 62dc4220..eed3c08d 100644 --- a/src/network.c +++ b/src/network.c @@ -167,11 +167,15 @@ static DBusMessage *do_connect(DBusConnection *conn, DBG("conn %p", conn); + if (network->connected == TRUE) + return __connman_error_failed(msg); + if (network->driver && network->driver->connect) { err = network->driver->connect(network); if (err < 0 && err != -EINPROGRESS) return __connman_error_failed(msg); - } + } else + network->connected = TRUE; return g_dbus_create_reply(msg, DBUS_TYPE_INVALID); } @@ -184,11 +188,17 @@ static DBusMessage *do_disconnect(DBusConnection *conn, DBG("conn %p", conn); + if (network->connected == FALSE) + return __connman_error_failed(msg); + + connman_element_unregister_children(&network->element); + if (network->driver && network->driver->disconnect) { err = network->driver->disconnect(network); if (err < 0 && err != -EINPROGRESS) return __connman_error_failed(msg); - } + } else + network->connected = FALSE; return g_dbus_create_reply(msg, DBUS_TYPE_INVALID); } |