From 3ea365ef6085ebf9ba513259f14dd014871a2395 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Mon, 3 Feb 2025 11:32:28 -0400 Subject: [PATCH] MT#55283 use typed hash table for rr_spec Change-Id: I99a4c334e182e5cb568cd8241b4f81340066dee2 --- daemon/call.c | 2 +- daemon/media_socket.c | 6 +++--- include/media_socket.h | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/daemon/call.c b/daemon/call.c index 2306fe3d4..f82e2fba0 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -2115,7 +2115,7 @@ static void __init_interface(struct call_media *media, const str *ifname, int nu return; if (!str_cmp_str(&media->logical_intf->name, ifname)) return; - if (g_hash_table_lookup(media->logical_intf->rr_specs, ifname)) + if (t_hash_table_lookup(media->logical_intf->rr_specs, ifname)) return; get: media->logical_intf = get_logical_interface(ifname, media->desired_family, num_ports); diff --git a/daemon/media_socket.c b/daemon/media_socket.c index 16aad237a..514708913 100644 --- a/daemon/media_socket.c +++ b/daemon/media_socket.c @@ -761,7 +761,7 @@ static void __add_intf_rr_1(struct logical_intf *lif, str *name_base, sockfamily } t_queue_push_tail(&rr->logical_intfs, lif); rr->singular = (rr->logical_intfs.length == 1) ? lif : NULL; - g_hash_table_insert(lif->rr_specs, &rr->hash_key.name, lif); + t_hash_table_insert(lif->rr_specs, &rr->hash_key.name, lif); } static void __add_intf_rr(struct logical_intf *lif, str *name_base, sockfamily_t *fam) { __add_intf_rr_1(lif, name_base, fam); @@ -807,7 +807,7 @@ static void __interface_append(struct intf_config *ifa, sockfamily_t *fam, bool lif->name = ifa->name; lif->name_base = ifa->name_base; lif->preferred_family = fam; - lif->rr_specs = g_hash_table_new((GHashFunc) str_hash, (GEqualFunc) str_equal); + lif->rr_specs = rr_specs_ht_new(); struct intf_key *key = g_new0(__typeof(*key), 1); key->name = ifa->name; @@ -3271,7 +3271,7 @@ void interfaces_free(void) { GQueue *q = &__preferred_lists_for_family[i]; struct logical_intf *lif; while ((lif = g_queue_pop_head(q))) { - g_hash_table_destroy(lif->rr_specs); + t_hash_table_destroy(lif->rr_specs); t_queue_clear(&lif->list); g_slice_free1(sizeof(*lif), lif); } diff --git a/include/media_socket.h b/include/media_socket.h index e6e080714..25ad93746 100644 --- a/include/media_socket.h +++ b/include/media_socket.h @@ -75,12 +75,13 @@ struct streamhandler { TYPED_GQUEUE(local_intf, struct local_intf) +TYPED_GHASHTABLE(rr_specs_ht, str, struct logical_intf, str_hash, str_equal, NULL, NULL) struct logical_intf { str name; sockfamily_t *preferred_family; local_intf_q list; - GHashTable *rr_specs; + rr_specs_ht rr_specs; str name_base; // if name is "foo:bar", this is "foo" }; struct port_pool {