A VTY's input can be closed without the output becoming unavailable.
This happens both on stdio when stdin ends, as well as over TCP when an
unidirectional input shutdown() happens.

In such a case, resetting the output buffer is not appropriate since
there might still be data to be successfully written.

Signed-off-by: David Lamparter <[email protected]>
---
This is needed for testtools to work correctly with stdin coming
from a file.  The output will be cut short otherwise...

If anyone can think of a failure scenario resulting from this,
input would be much appreciated...
---
 lib/vty.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/vty.c b/lib/vty.c
index 3477f63..d002858 100644
--- a/lib/vty.c
+++ b/lib/vty.c
@@ -1364,8 +1364,8 @@ vty_read (struct thread *thread)
          vty->monitor = 0; /* disable monitoring to avoid infinite recursion */
          zlog_warn("%s: read error on vty client fd %d, closing: %s",
                    __func__, vty->fd, safe_strerror(errno));
+          buffer_reset(vty->obuf);
        }
-      buffer_reset(vty->obuf);
       vty->status = VTY_CLOSE;
     }
 
-- 
2.0.4


_______________________________________________
Quagga-dev mailing list
[email protected]
https://lists.quagga.net/mailman/listinfo/quagga-dev

Reply via email to