diff --git a/crates/rib/src/table/mod.rs b/crates/rib/src/table/mod.rs index 4fc5ad6..a4cd95e 100644 --- a/crates/rib/src/table/mod.rs +++ b/crates/rib/src/table/mod.rs @@ -873,6 +873,11 @@ fn push_tight(vec: &mut Vec, value: T, expected: usize) { let first = expected.min(FIRST_ROOM); let more = if vec.capacity() < first { first - vec.len() + } else if vec.capacity() < FIRST_ROOM { + // A peer that sends several routes for a prefix (ADD-PATH) + // takes a row past the peers' count: doubled while small, + // and from there by a quarter. + vec.capacity() } else { (vec.len() / 4).max(1) };