Commit 3aeaa2f
committed
fix(zebrad): key the mempool per-peer download cap on IpAddr
The mempool inbound-download manager keyed its per-peer concurrency cap
(`MAX_INBOUND_CONCURRENCY_PER_PEER`) on the full `SocketAddr`. The `source` is a
transient `(IP, ephemeral port)`, so two connections from the same host landed
in two distinct `pending_per_peer` buckets, each with its own 5-slot budget, and
a single host could exceed the intended per-host bound. `get_transient_addr` is
explicitly not a permanent identifier.
Re-key `pending_per_peer` on `IpAddr` at the cap check, the increment, and
`release_peer_slot`, mirroring the inbound-block download path (`in_flight_ips`).
Adds a regression test asserting a sixth transaction from the same IP on a
different port is rejected once the IP holds `MAX_INBOUND_CONCURRENCY_PER_PEER`.1 parent 31e555e commit 3aeaa2f
3 files changed
Lines changed: 83 additions & 13 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
68 | 68 | | |
69 | 69 | | |
70 | 70 | | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
71 | 75 | | |
72 | 76 | | |
73 | 77 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
30 | | - | |
| 30 | + | |
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
| |||
206 | 206 | | |
207 | 207 | | |
208 | 208 | | |
209 | | - | |
| 209 | + | |
| 210 | + | |
210 | 211 | | |
211 | | - | |
212 | | - | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
213 | 220 | | |
214 | | - | |
| 221 | + | |
215 | 222 | | |
216 | 223 | | |
217 | 224 | | |
| |||
371 | 378 | | |
372 | 379 | | |
373 | 380 | | |
374 | | - | |
375 | | - | |
| 381 | + | |
| 382 | + | |
376 | 383 | | |
377 | | - | |
| 384 | + | |
378 | 385 | | |
379 | 386 | | |
380 | 387 | | |
| |||
550 | 557 | | |
551 | 558 | | |
552 | 559 | | |
553 | | - | |
| 560 | + | |
554 | 561 | | |
555 | 562 | | |
556 | 563 | | |
| |||
604 | 611 | | |
605 | 612 | | |
606 | 613 | | |
607 | | - | |
| 614 | + | |
608 | 615 | | |
609 | | - | |
610 | | - | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
611 | 619 | | |
612 | 620 | | |
613 | | - | |
| 621 | + | |
614 | 622 | | |
615 | 623 | | |
616 | 624 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2366 | 2366 | | |
2367 | 2367 | | |
2368 | 2368 | | |
| 2369 | + | |
| 2370 | + | |
| 2371 | + | |
| 2372 | + | |
| 2373 | + | |
| 2374 | + | |
| 2375 | + | |
| 2376 | + | |
| 2377 | + | |
| 2378 | + | |
| 2379 | + | |
| 2380 | + | |
| 2381 | + | |
| 2382 | + | |
| 2383 | + | |
| 2384 | + | |
| 2385 | + | |
| 2386 | + | |
| 2387 | + | |
| 2388 | + | |
| 2389 | + | |
| 2390 | + | |
| 2391 | + | |
| 2392 | + | |
| 2393 | + | |
| 2394 | + | |
| 2395 | + | |
| 2396 | + | |
| 2397 | + | |
| 2398 | + | |
| 2399 | + | |
| 2400 | + | |
| 2401 | + | |
| 2402 | + | |
| 2403 | + | |
| 2404 | + | |
| 2405 | + | |
| 2406 | + | |
| 2407 | + | |
| 2408 | + | |
| 2409 | + | |
| 2410 | + | |
| 2411 | + | |
| 2412 | + | |
| 2413 | + | |
| 2414 | + | |
| 2415 | + | |
| 2416 | + | |
| 2417 | + | |
| 2418 | + | |
| 2419 | + | |
| 2420 | + | |
| 2421 | + | |
| 2422 | + | |
| 2423 | + | |
| 2424 | + | |
| 2425 | + | |
| 2426 | + | |
0 commit comments