From: Maria Matejka Date: Wed, 8 Mar 2023 18:28:31 +0000 (+0100) Subject: BGP Export Table: Fixed route source objects leaking when prefix best routes is updated X-Git-Tag: v3.0-alpha1~40 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=227352c4611a9024c93b22c94c7bbd9ac474effe;p=thirdparty%2Fbird.git BGP Export Table: Fixed route source objects leaking when prefix best routes is updated --- diff --git a/proto/bgp/attrs.c b/proto/bgp/attrs.c index 8dc5ac3e0..1c934301a 100644 --- a/proto/bgp/attrs.c +++ b/proto/bgp/attrs.c @@ -1702,7 +1702,16 @@ bgp_get_prefix(struct bgp_pending_tx *c, const net_addr *net, struct rte_src *sr struct bgp_prefix *px = HASH_FIND(c->prefix_hash, PXH, net, path_id_hash, hash); if (px) + { + if (!add_path_tx && (path_id != px->path_id)) + { + rt_unlock_source(rt_find_source_global(px->path_id)); + rt_lock_source(src); + px->path_id = path_id; + } + return px; + } if (c->prefix_slab) px = sl_alloc(c->prefix_slab);