diff options
author | Thomas Haller <thaller@redhat.com> | 2017-06-03 13:44:52 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2017-06-07 09:07:18 +0200 |
commit | 40a295564775bb6a719d36286439e6498a283f58 (patch) | |
tree | b19796651bd701ffebc9c7836696c0076059e63e | |
parent | 113e8ad6e633e2ca34e7bb05eb92850dd0b9cd20 (diff) | |
download | NetworkManager-40a295564775bb6a719d36286439e6498a283f58.tar.gz |
bluetooth: split _find_network_server() in two functions
Instead of having a complex _find_network_server() function with several
arguments, split it.
Having multiple optional arguments to a find() function is fine,
if all arguments consistently narrow down the search.
For example nmp_cache_lookup_link_full(), where each argument is
optional, and it restricts the search.
For _find_network_server() that was not the case, because setting
"addr" and "device" together would be non-sensical.
-rw-r--r-- | src/devices/bluetooth/nm-bluez5-manager.c | 43 |
1 files changed, 25 insertions, 18 deletions
diff --git a/src/devices/bluetooth/nm-bluez5-manager.c b/src/devices/bluetooth/nm-bluez5-manager.c index 83028a2c85..ded308464f 100644 --- a/src/devices/bluetooth/nm-bluez5-manager.c +++ b/src/devices/bluetooth/nm-bluez5-manager.c @@ -93,30 +93,37 @@ typedef struct { CList network_servers; } NetworkServer; -static NetworkServer* -_find_network_server (NMBluez5Manager *self, - const gchar *path, const gchar *addr, NMDevice *device) +static NetworkServer * +_find_network_server (NMBluez5Manager *self, const char *path, NMDevice *device) { NMBluez5ManagerPrivate *priv = NM_BLUEZ5_MANAGER_GET_PRIVATE (self); NetworkServer *network_server; - CList *iter; - c_list_for_each (iter, &priv->network_servers) { - network_server = c_list_entry (iter, NetworkServer, network_servers); + nm_assert (path || NM_IS_DEVICE (device)); - /* Device and path matches are exact. */ - if ( (path && !strcmp (network_server->path, path)) - || (device && network_server->device == device)) - return network_server; + c_list_for_each_entry (network_server, &priv->network_servers, network_servers) { + if (path && !nm_streq (network_server->path, path)) + continue; + if (device && network_server->device != device) + continue; + return network_server; + } + return NULL; +} +static NetworkServer * +_find_network_server_for_addr (NMBluez5Manager *self, const char *addr) +{ + NMBluez5ManagerPrivate *priv = NM_BLUEZ5_MANAGER_GET_PRIVATE (self); + NetworkServer *network_server; + + c_list_for_each_entry (network_server, &priv->network_servers, network_servers) { /* The address lookups need a server not assigned to a device * and tolerate an empty address as a wildcard for "any". */ - if ( (!path && !device) - && !network_server->device - && (!addr || !strcmp (network_server->addr, addr))) + if ( !network_server->device + && (!addr || nm_streq (network_server->addr, addr))) return network_server; } - return NULL; } @@ -163,7 +170,7 @@ network_server_is_available (const NMBtVTableNetworkServer *vtable, { NMBluez5Manager *self = NETWORK_SERVER_VTABLE_GET_NM_BLUEZ5_MANAGER (vtable); - return !!_find_network_server (self, NULL, addr, NULL); + return !!_find_network_server_for_addr (self, addr); } static gboolean @@ -173,7 +180,7 @@ network_server_register_bridge (const NMBtVTableNetworkServer *vtable, { NMBluez5Manager *self = NETWORK_SERVER_VTABLE_GET_NM_BLUEZ5_MANAGER (vtable); NMBluez5ManagerPrivate *priv = NM_BLUEZ5_MANAGER_GET_PRIVATE (self); - NetworkServer *network_server = _find_network_server (self, NULL, addr, NULL); + NetworkServer *network_server = _find_network_server_for_addr (self, addr); if (!network_server) { /* The device checked that a network server is available, before @@ -205,7 +212,7 @@ network_server_unregister_bridge (const NMBtVTableNetworkServer *vtable, NMDevice *device) { NMBluez5Manager *self = NETWORK_SERVER_VTABLE_GET_NM_BLUEZ5_MANAGER (vtable); - NetworkServer *network_server = _find_network_server (self, NULL, NULL, device); + NetworkServer *network_server = _find_network_server (self, NULL, device); if (network_server) _network_server_unregister (self, network_server); @@ -218,7 +225,7 @@ network_server_removed (GDBusProxy *proxy, const gchar *path, NMBluez5Manager *s { NetworkServer *network_server; - network_server = _find_network_server (self, path, NULL, NULL); + network_server = _find_network_server (self, path, NULL); if (!network_server) return; |