diff options
| author | Neels Hofmeyr <neels@hofmeyr.de> | 2019-04-10 02:41:53 +0200 | 
|---|---|---|
| committer | Neels Hofmeyr <neels@hofmeyr.de> | 2019-05-03 16:15:24 +0200 | 
| commit | 63053001d306ac91fe38cdaaa159687a0be623e9 (patch) | |
| tree | 0280c75e974e3b1610edc1aaa2cb7e749523f23e /src/vty | |
| parent | d7913271649efb2d62cb3a93e81269ac6916c4cd (diff) | |
add vty_is_active()
For async callbacks it is useful to determine whether a given VTY pointer is still valid.
For example, in osmo-msc, a silent call can be triggered by VTY, which causes a
Paging. The paging_cb then writes to the VTY console that the silent call has
succeeded. Unless the telnet vty session has already ended, in which case
osmo-msc crashes; e.g. from an osmo_interact_vty.py command invocation. With
this function, osmo-msc can ask whether the vty pointer passed to the paging
callback is still active, and skip vty_out() if not.
Change-Id: I42cf2af47283dd42c101faae0fac293c3a68d599
Diffstat (limited to 'src/vty')
| -rw-r--r-- | src/vty/telnet_interface.c | 10 | 
1 files changed, 10 insertions, 0 deletions
| diff --git a/src/vty/telnet_interface.c b/src/vty/telnet_interface.c index dc23b12a..a1fc9990 100644 --- a/src/vty/telnet_interface.c +++ b/src/vty/telnet_interface.c @@ -197,6 +197,16 @@ static int telnet_new_connection(struct osmo_fd *fd, unsigned int what)  	return 0;  } +bool vty_is_active(struct vty *vty) +{ +	struct telnet_connection *connection; +	llist_for_each_entry(connection, &active_connections, entry) { +		if (connection->vty == vty) +			return true; +	} +	return false; +} +  /*! callback from core VTY code about VTY related events */  void vty_event(enum event event, int sock, struct vty *vty)  { | 
