]> git.puffer.fish Git - matthieu/frr.git/commitdiff
2004-08-18 Paul Jakma <paul@dishone.st>
authorpaul <paul>
Wed, 18 Aug 2004 21:52:58 +0000 (21:52 +0000)
committerpaul <paul>
Wed, 18 Aug 2004 21:52:58 +0000 (21:52 +0000)
        * 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.

lib/ChangeLog
lib/vty.c

index 4540456adc5b73c8397da2e6e5e09f085ba9a3f8..421a4f0bde292ed30b5615c49c8746e493f6e08a 100644 (file)
@@ -1,3 +1,10 @@
+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.
+         
 2004-07-23  Greg Troxel  <gdt@poblano.ir.bbn.com>
 
        * sockopt.c (getsockopt_ipv4_pktinfo_ifindex): Make this compile
index 761ca4c2148919f3d1ed50c6cff63f84af3108ca..b1c96f37a942665a005ca72dc1799924af89c1ca 100644 (file)
--- a/lib/vty.c
+++ b/lib/vty.c
@@ -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);