mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-12-22 21:22:37 +01:00
knownnetworks: Fix timestamps comparison
timespec_compare wanted to receive network_info structures as arguments to compare connected_time timestamps but in one instance we were passing actual timespec structures. Add a new function to compare plain timespec values and switch the names for readability.
This commit is contained in:
parent
1024562e1d
commit
58f91a741b
@ -44,12 +44,9 @@ static struct l_queue *known_networks;
|
||||
static size_t num_known_hidden_networks;
|
||||
static struct l_fswatch *storage_dir_watch;
|
||||
|
||||
static int timespec_compare(const void *a, const void *b, void *user_data)
|
||||
static int timespec_compare(const struct timespec *tsa,
|
||||
const struct timespec *tsb)
|
||||
{
|
||||
const struct network_info *ni_a = a;
|
||||
const struct network_info *ni_b = b;
|
||||
const struct timespec *tsa = &ni_a->connected_time;
|
||||
const struct timespec *tsb = &ni_b->connected_time;
|
||||
|
||||
if (tsa->tv_sec > tsb->tv_sec)
|
||||
return -1;
|
||||
@ -66,6 +63,14 @@ static int timespec_compare(const void *a, const void *b, void *user_data)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int connected_time_compare(const void *a, const void *b, void *user_data)
|
||||
{
|
||||
const struct network_info *ni_a = a;
|
||||
const struct network_info *ni_b = b;
|
||||
|
||||
return timespec_compare(&ni_a->connected_time, &ni_b->connected_time);
|
||||
}
|
||||
|
||||
const char *known_network_get_path(const struct network_info *network)
|
||||
{
|
||||
static char path[256];
|
||||
@ -112,7 +117,7 @@ static void known_network_update(struct network_info *orig_network,
|
||||
else
|
||||
network = network_info_add_known(ssid, security);
|
||||
|
||||
if (timespec_compare(&network->connected_time, connected_time, NULL) &&
|
||||
if (timespec_compare(&network->connected_time, connected_time) &&
|
||||
orig_network) {
|
||||
l_dbus_property_changed(dbus_get_bus(),
|
||||
known_network_get_path(network),
|
||||
@ -120,7 +125,8 @@ static void known_network_update(struct network_info *orig_network,
|
||||
"LastConnectedTime");
|
||||
|
||||
l_queue_remove(known_networks, network);
|
||||
l_queue_insert(known_networks, network, timespec_compare, NULL);
|
||||
l_queue_insert(known_networks, network, connected_time_compare,
|
||||
NULL);
|
||||
}
|
||||
|
||||
memcpy(&network->connected_time, connected_time,
|
||||
@ -145,7 +151,7 @@ static void known_network_update(struct network_info *orig_network,
|
||||
if (orig_network)
|
||||
return;
|
||||
|
||||
l_queue_insert(known_networks, network, timespec_compare, NULL);
|
||||
l_queue_insert(known_networks, network, connected_time_compare, NULL);
|
||||
|
||||
known_network_register_dbus(network);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user