]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Fixed bug in repeated show route command
authorMaria Matejka <mq@ucw.cz>
Wed, 13 Jul 2022 09:19:00 +0000 (11:19 +0200)
committerMaria Matejka <mq@ucw.cz>
Wed, 13 Jul 2022 09:24:09 +0000 (11:24 +0200)
Introduced by 13ef5e53dd4a98c80261139b4c9ce4b1074cac40, the CLI was not
properly cleaned up when the command finished, causing BIRD to not parse
any other command after "show route".

nest/rt-show.c

index dd0fe595d0454472fbe03fee52f215f4940b6073..1dbfaec2962284856aafd474f3a08d31672c8563 100644 (file)
@@ -259,6 +259,18 @@ rt_show_dump_req(struct rt_export_request *req)
   debug("  CLI Show Route Feed %p\n", req);
 }
 
+static void
+rt_show_done(struct rt_show_data *d)
+{
+  /* No more action */
+  d->cli->cleanup = NULL;
+  d->cli->cont = NULL;
+  d->cli->rover = NULL;
+
+  /* Write pending messages */
+  cli_write_trigger(d->cli);
+}
+
 static void
 rt_show_cont(struct rt_show_data *d)
 {
@@ -267,13 +279,7 @@ rt_show_cont(struct rt_show_data *d)
   if (d->running_on_config && (d->running_on_config != config))
   {
     cli_printf(c, 8004, "Stopped due to reconfiguration");
-
-    /* No more action */
-    c->cleanup = NULL;
-    c->cont = NULL;
-    c->rover = NULL;
-    cli_write_trigger(c);
-    return;
+    return rt_show_done(d);
   }
 
   d->req = (struct rt_export_request) {
@@ -320,7 +326,6 @@ rt_show_export_stopped(struct rt_export_request *req)
   if (NODE_VALID(d->tab))
     return rt_show_cont(d);
 
-
   /* Printout total stats */
   if (d->stats && (d->table_counter > 1))
   {
@@ -333,7 +338,8 @@ rt_show_export_stopped(struct rt_export_request *req)
   else
     cli_printf(d->cli, 0, "");
 
-  cli_write_trigger(d->cli);
+  /* No more route showing */
+  rt_show_done(d);
 }
 
 struct rt_show_data_rtable *