]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Refeed done hooks are called in the same order as the requests came in
authorMaria Matejka <mq@ucw.cz>
Thu, 20 Jun 2024 10:09:38 +0000 (12:09 +0200)
committerMaria Matejka <mq@ucw.cz>
Wed, 26 Jun 2024 09:29:43 +0000 (11:29 +0200)
nest/rt-export.c

index b991b975032c685222bb00a1e95db28f44f32d59..cc5cd353be80e2d060bc5ba9d8143dd6798efc82 100644 (file)
@@ -312,10 +312,20 @@ rt_export_next_feed(struct rt_export_feeder *f)
     return feed;
 
   /* Feeding done */
+  struct rt_feeding_request *reverse = NULL;
   while (f->feeding)
   {
     struct rt_feeding_request *rfr = f->feeding;
     f->feeding = rfr->next;
+    rfr->next = reverse;
+    reverse = rfr;
+  }
+
+  /* Call the done hook in the same order as requests came in */
+  while (reverse)
+  {
+    struct rt_feeding_request *rfr = reverse;
+    reverse = rfr->next;
     CALL(rfr->done, rfr);
   }