From 416745628e73d8889e43bb153e365aa5225f22a5 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Sat, 9 Feb 2019 16:38:34 -0500 Subject: [PATCH] zebra: When shutting down actually close the socket When shutting down and we have a very large table to shutdown and after we've intentionally closed all the client connections close the zebra zserv client socket. Signed-off-by: Donald Sharp --- zebra/main.c | 2 ++ zebra/zserv.c | 12 ++++++++++++ zebra/zserv.h | 7 +++++++ 3 files changed, 21 insertions(+) diff --git a/zebra/main.c b/zebra/main.c index c605050c57..184e798bd0 100644 --- a/zebra/main.c +++ b/zebra/main.c @@ -153,7 +153,9 @@ static void sigint(void) for (ALL_LIST_ELEMENTS(zrouter.client_list, ln, nn, client)) zserv_close_client(client); + zserv_close(); list_delete_all_node(zrouter.client_list); + zebra_ptm_finish(); if (retain_mode) diff --git a/zebra/zserv.c b/zebra/zserv.c index 6532491cef..f5bb3aabb7 100644 --- a/zebra/zserv.c +++ b/zebra/zserv.c @@ -773,6 +773,18 @@ static int zserv_accept(struct thread *thread) return 0; } +void zserv_close(void) +{ + /* + * On shutdown, let's close the socket down + * so that long running processes of killing the + * routing table doesn't leave us in a bad + * state where a client tries to reconnect + */ + close(zsock); + zsock = -1; +} + void zserv_start(char *path) { int ret; diff --git a/zebra/zserv.h b/zebra/zserv.h index c4c3e1328b..86863d961c 100644 --- a/zebra/zserv.h +++ b/zebra/zserv.h @@ -183,6 +183,13 @@ extern unsigned int multipath_num; */ extern void zserv_init(void); +/* + * Stop the Zebra API server. + * + * closes the socket + */ +extern void zserv_close(void); + /* * Start Zebra API server. * -- 2.39.5