diff --git a/lib/vty.c b/lib/vty.c
index d623b85..4b44589 100644
--- a/lib/vty.c
+++ b/lib/vty.c
@@ -184,7 +184,7 @@
   buf[len++] = '\r';
   buf[len++] = '\n';
 
-  if (write(vty->fd, buf, len) < 0)
+  if (write(vty->wfd, buf, len) < 0)
     {
       if (ERRNO_IO_RETRY(errno))
 	/* Kernel buffer is full, probably too much debugging output, so just
@@ -1542,7 +1542,7 @@
     vty_close (vty);
   else
     {
-      vty_event (VTY_WRITE, vty_sock, vty);
+      vty_event (VTY_WRITE, vty->wfd, vty);
       vty_event (VTY_READ, vty_sock, vty);
     }
   return 0;
@@ -1571,12 +1571,12 @@
 
   /* N.B. if width is 0, that means we don't know the window size. */
   if ((vty->lines == 0) || (vty->width == 0))
-    flushrc = buffer_flush_available(vty->obuf, vty->fd);
+    flushrc = buffer_flush_available(vty->obuf, vty_sock);
   else if (vty->status == VTY_MORELINE)
-    flushrc = buffer_flush_window(vty->obuf, vty->fd, vty->width,
+    flushrc = buffer_flush_window(vty->obuf, vty_sock, vty->width,
 				  1, erase, 0);
   else
-    flushrc = buffer_flush_window(vty->obuf, vty->fd, vty->width,
+    flushrc = buffer_flush_window(vty->obuf, vty_sock, vty->width,
 				  vty->lines >= 0 ? vty->lines :
 						    vty->height,
 				  erase, 0);
@@ -1622,6 +1622,7 @@
   /* Allocate new vty structure and set up default values. */
   vty = vty_new ();
   vty->fd = vty_sock;
+  vty->wfd = vty_sock;
   vty->type = VTY_TERM;
   strcpy (vty->address, buf);
   if (no_password_check)
@@ -2022,6 +2023,7 @@
 
   vty = vty_new ();
   vty->fd = sock;
+  vty->wfd = sock;
   vty->type = VTY_SHELL_SERV;
   vty->node = VIEW_NODE;
 
@@ -2033,10 +2035,10 @@
 static int
 vtysh_flush(struct vty *vty)
 {
-  switch (buffer_flush_available(vty->obuf, vty->fd))
+  switch (buffer_flush_available(vty->obuf, vty->wfd))
     {
     case BUFFER_PENDING:
-      vty_event(VTYSH_WRITE, vty->fd, vty);
+      vty_event(VTYSH_WRITE, vty->wfd, vty);
       break;
     case BUFFER_ERROR:
       vty->monitor = 0; /* disable monitoring to avoid infinite recursion */
@@ -2172,7 +2174,7 @@
     thread_cancel (vty->t_timeout);
 
   /* Flush buffer. */
-  buffer_flush_all (vty->obuf, vty->fd);
+  buffer_flush_all (vty->obuf, vty->wfd);
 
   /* Free input buffer. */
   buffer_free (vty->obuf);
@@ -2229,12 +2231,13 @@
   unsigned int line_num = 0;
 
   vty = vty_new ();
-  vty->fd = dup(STDERR_FILENO); /* vty_close() will close this */
-  if (vty->fd < 0)
+  vty->wfd = dup(STDERR_FILENO); /* vty_close() will close this */
+  if (vty->wfd < 0)
   {
     /* Fine, we couldn't make a new fd. vty_close doesn't close stdout. */
-    vty->fd = STDOUT_FILENO;
+    vty->wfd = STDOUT_FILENO;
   }
+  vty->fd = STDIN_FILENO;
   vty->type = VTY_FILE;
   vty->node = CONFIG_NODE;
   
@@ -2475,7 +2478,7 @@
       if (((vty = vector_slot (vtyvec, i)) != NULL) && vty->monitor)
 	/* N.B. We don't care about the return code, since process is
 	   most likely just about to die anyway. */
-	writev(vty->fd, iov, 2);
+	writev(vty->wfd, iov, 2);
     }
 }
 
