diff options
author | Szymon Janc <szymon.janc@gmail.com> | 2014-01-18 13:43:00 +0100 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2014-01-18 15:19:37 +0200 |
commit | 6ed9f1552fccde399fbb7878c8c866b98b02b04f (patch) | |
tree | fc8353d28680753f8594ecf89cdee8be240bdc8d /plugins | |
parent | d471ce2d779eedca5f974f20359b5cea18805e79 (diff) | |
download | bluez-6ed9f1552fccde399fbb7878c8c866b98b02b04f.tar.gz |
neard: Refactor request_oob function
This makes function flow easier to follow.
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/neard.c | 43 |
1 files changed, 20 insertions, 23 deletions
diff --git a/plugins/neard.c b/plugins/neard.c index da6e37c6b..b54675006 100644 --- a/plugins/neard.c +++ b/plugins/neard.c @@ -768,42 +768,39 @@ static DBusMessage *request_oob(DBusConnection *conn, DBusMessage *msg, if (err < 0) return error_reply(msg, -err); - if (bacmp(&remote.address, BDADDR_ANY) == 0) - goto read_local; - - device = btd_adapter_get_device(adapter, &remote.address, - BDADDR_BREDR); + if (bacmp(&remote.address, BDADDR_ANY) == 0) { + if (btd_adapter_get_powered(adapter)) + goto read_local; - err = check_device(device); - if (err < 0) { - free_oob_params(&remote); + goto done; + } - if (err == -EALREADY) - return create_request_oob_reply(adapter, NULL, NULL, - msg); + device = btd_adapter_get_device(adapter, &remote.address, BDADDR_BREDR); - return error_reply(msg, -err); - } + err = check_device(device); + if (err < 0) + goto done; if (!btd_adapter_get_pairable(adapter)) { - free_oob_params(&remote); - - return error_reply(msg, ENONET); + err = -ENONET; + goto done; } store_params(adapter, device, &remote); - if (!remote.hash || !btd_adapter_get_powered(adapter)) { - free_oob_params(&remote); - return create_request_oob_reply(adapter, NULL, NULL, msg); - } + if (remote.hash && btd_adapter_get_powered(adapter)) + goto read_local; +done: + free_oob_params(&remote); + + if (err < 0 && err != -EALREADY) + return error_reply(msg, -err); + + return create_request_oob_reply(adapter, NULL, NULL, msg); read_local: free_oob_params(&remote); - if (!btd_adapter_get_powered(adapter)) - return create_request_oob_reply(adapter, NULL, NULL, msg); - err = btd_adapter_read_local_oob_data(adapter); if (err < 0) return error_reply(msg, -err); |