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@chiark.greenend.org.uk>
---
v2: New patch
*
* Caller must first call transport_peers_expire. */
*
* 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;
}
int old_npeers=peers->npeers;