diff options
author | paul <paul> | 2004-08-18 21:52:58 +0000 |
---|---|---|
committer | paul <paul> | 2004-08-18 21:52:58 +0000 |
commit | c0618de64ca81b9f1f2fd05e43c24f155234b451 (patch) | |
tree | 0ebc88399e56746bd72df617aed4f049dc2024f3 /lib/vty.c | |
parent | 2990460691f1d674180154fd4bcee64d8f745277 (diff) |
2004-08-18 Paul Jakma <paul@dishone.st>
* vty.c: (vty_serv_un) set unix vty socket to nonblocking
to prevent inadvertent blocking of daemons by use of
vtysh. TODO: disentangle manual paging from the buffer_write
path so that unix vty can use this path too and be reliable.
Diffstat (limited to 'lib/vty.c')
-rw-r--r-- | lib/vty.c | 8 |
1 files changed, 7 insertions, 1 deletions
@@ -1856,7 +1856,7 @@ void vty_serv_un (char *path) { int ret; - int sock, len; + int sock, len, flags; struct sockaddr_un serv; mode_t old_mask; struct zprivs_ids_t ids; @@ -1901,6 +1901,12 @@ vty_serv_un (char *path) return; } + /* set to non-blocking*/ + if ( ((flags = fcntl (sock, F_GETFL)) == -1) + || (fcntl (sock, F_SETFL, flags|O_NONBLOCK) == -1) ) + zlog_warn ("vty_serv_un: could not set vty socket to non-blocking," + " %s", strerror (errno)); + umask (old_mask); zprivs_get_ids(&ids); |