mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-28 15:33:34 +00:00
lib: mgmtd: avoid recursion with vty_close and add error log
Avoid recursion into vty_close() when being notified of a session closure that
happened inside vty_close().
If a vty is closed with outstanding config yet to be commited
issue a warning that it is being lost.
Signed-off-by: Christian Hopps <chopps@labn.net>
(cherry picked from commit 4307fdd070
)
This commit is contained in:
parent
cfca317c59
commit
c874d567cc
12
lib/vty.c
12
lib/vty.c
@ -2423,6 +2423,14 @@ void vty_close(struct vty *vty)
|
||||
|
||||
vty->status = VTY_CLOSE;
|
||||
|
||||
/*
|
||||
* If we reach here with pending config to commit we will be losing it
|
||||
* so warn the user.
|
||||
*/
|
||||
if (vty->mgmt_num_pending_setcfg)
|
||||
MGMTD_FE_CLIENT_ERR(
|
||||
"vty closed, uncommitted config will be lost.");
|
||||
|
||||
if (mgmt_fe_client && vty->mgmt_session_id) {
|
||||
MGMTD_FE_CLIENT_DBG("closing vty session");
|
||||
mgmt_fe_destroy_client_session(mgmt_fe_client,
|
||||
@ -3445,7 +3453,9 @@ static void vty_mgmt_session_notify(struct mgmt_fe_client *client,
|
||||
vty->mgmt_session_id = session_id;
|
||||
} else {
|
||||
vty->mgmt_session_id = 0;
|
||||
vty_close(vty);
|
||||
/* We may come here by way of vty_close() and short-circuits */
|
||||
if (vty->status != VTY_CLOSE)
|
||||
vty_close(vty);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user