summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaria Matejka <mq@ucw.cz>2022-10-12 11:30:27 +0200
committerMaria Matejka <mq@ucw.cz>2022-10-12 11:30:27 +0200
commitff24f027a6e689e294d756142ce788d67fdaf69b (patch)
tree18ba275b550e848693145980c199d8f2305479d7
parent217a724d5a25f2e7fbbc518085ee2c261505aa39 (diff)
parent5395880908fdb264b5b78ccc455dced49eb29915 (diff)
Merge commit '53958809' into thread-next
-rw-r--r--nest/proto.c7
-rw-r--r--nest/rt-table.c3
2 files changed, 10 insertions, 0 deletions
diff --git a/nest/proto.c b/nest/proto.c
index 48558865..28b4426d 100644
--- a/nest/proto.c
+++ b/nest/proto.c
@@ -617,6 +617,12 @@ channel_export_stopped(struct rt_export_request *req)
{
c->refeeding = 1;
c->refeed_pending = 0;
+
+ channel_reset_limit(c, &c->out_limit, PLD_OUT);
+
+ bmap_reset(&c->export_map, 1024);
+ bmap_reset(&c->export_reject_map, 1024);
+
rt_request_export(c->table, req);
return;
}
@@ -643,6 +649,7 @@ channel_feed_end(struct channel *c)
(l->count <= l->max))
{
log(L_INFO "Protocol %s resets route export limit (%u)", c->proto->name, l->max);
+ channel_reset_limit(c, &c->out_limit, PLD_OUT);
c->refeed_pending = 1;
rt_stop_export(req, channel_export_stopped);
diff --git a/nest/rt-table.c b/nest/rt-table.c
index 8980f147..8e4a9e00 100644
--- a/nest/rt-table.c
+++ b/nest/rt-table.c
@@ -899,6 +899,9 @@ rt_notify_basic(struct channel *c, const net_addr *net, rte *new, rte *old)
if (old && !bmap_test(&c->export_map, old->id))
old = NULL;
+ if (old && (old->sender == c->in_req.hook))
+ bug("bad-behaved pipe");
+
if (!new && !old)
return;