diff --git a/src/device.c b/src/device.c index 9157f494..631a38cf 100644 --- a/src/device.c +++ b/src/device.c @@ -582,33 +582,31 @@ static void device_connect_cb(struct netdev *netdev, enum netdev_result result, { struct device *device = user_data; - if (result != NETDEV_RESULT_OK) { - struct l_dbus_message *reply; - - if (device->connect_pending) { - if (result == NETDEV_RESULT_ABORTED) - reply = dbus_error_aborted(device->connect_pending); - else - reply = dbus_error_failed(device->connect_pending); - - dbus_pending_reply(&device->connect_pending, reply); - } - - if (device->state == DEVICE_STATE_CONNECTING) - device_disassociated(device); - - return; - } - if (device->connect_pending) { struct l_dbus_message *reply; - reply = l_dbus_message_new_method_return( + switch (result) { + case NETDEV_RESULT_ABORTED: + reply = dbus_error_aborted(device->connect_pending); + break; + case NETDEV_RESULT_OK: + reply = l_dbus_message_new_method_return( device->connect_pending); - l_dbus_message_set_arguments(reply, ""); + l_dbus_message_set_arguments(reply, ""); + break; + default: + reply = dbus_error_failed(device->connect_pending); + break; + } + dbus_pending_reply(&device->connect_pending, reply); } + if (result != NETDEV_RESULT_OK) { + device_disassociated(device); + return; + } + network_connected(device->connected_network); device_enter_state(device, DEVICE_STATE_CONNECTED); }