[SECNET PATCH v2 03/19] site: transport peers update: avoid nearly-trivial debug
Ian Jackson
ijackson at chiark.greenend.org.uk
Sat May 18 02:38:36 BST 2019
When the order of peers changes, but not the total set, we probably
don't want to log it. Actually comparing the before and after lists
setwise is rather too hard. But we can do it fairly easily when
there's only one peer being recorded.
Signed-off-by: Ian Jackson <ijackson at chiark.greenend.org.uk>
---
v2: New patch
---
site.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/site.c b/site.c
index 39520dd..681e595 100644
--- a/site.c
+++ b/site.c
@@ -2262,11 +2262,18 @@ static void transport_record_peers(struct site *st, transport_peers *peers,
*
* Caller must first call transport_peers_expire. */
- if (naddrs==1 && peers->npeers>=1 &&
- comm_addr_equal(&addrs[0], &peers->peers[0].addr)) {
- /* optimisation, also avoids debug for trivial updates */
- peers->peers[0].last = *tv_now;
- return;
+ if (naddrs==1) {
+ /* avoids debug for uninteresting updates */
+ int i;
+ for (i=0; i<peers->npeers; i++) {
+ if (comm_addr_equal(&addrs[0], &peers->peers[i].addr)) {
+ memmove(peers->peers+1, peers->peers,
+ sizeof(peers->peers[0]) * i);
+ peers->peers[0].addr = addrs[0];
+ peers->peers[0].last = *tv_now;
+ return;
+ }
+ }
}
int old_npeers=peers->npeers;
--
2.11.0
More information about the sgo-software-discuss
mailing list