]> git.puffer.fish Git - mirror/frr.git/commitdiff
2004-09-17 Paul Jakma <paul@dishone.st>
authorpaul <paul>
Mon, 11 Oct 2004 18:21:55 +0000 (18:21 +0000)
committerpaul <paul>
Mon, 11 Oct 2004 18:21:55 +0000 (18:21 +0000)
* vtysh.c: (vtysh_client_execute) fix the sync fix. The 4th and
  final sync byte is not ASCII NULL, it's actually a status integer,
  and only ASCII NULL if CMD_SUCCESS is returned by daemon.
  Fix pointed out by Hasso.

vtysh/ChangeLog
vtysh/vtysh.c

index df5eccd316753b8b2dc3b8d1db4eb1fe9f850c1d..f3a4da9a59d253596c2d38cbebdfaf18d557fd02 100644 (file)
@@ -1,3 +1,10 @@
+2004-09-17 Paul Jakma <paul@dishone.st>
+
+       * vtysh.c: (vtysh_client_execute) fix the sync fix. The 4th and
+         final sync byte is not ASCII NULL, it's actually a status integer,
+         and only ASCII NULL if CMD_SUCCESS is returned by daemon.
+         Fix pointed out by Hasso.
 2004-10-11 Hasso Tepper <hasso at quagga.net>
 
        * vtysh.c, vtysh_user.c: Make more strings const.
index 0df5ddbbb66ef2efcd4df77e71a25eb023dc2445..086b5dfe5fc233bc0b3f67b87bcb61729895dfee 100644 (file)
@@ -195,7 +195,10 @@ vtysh_client_execute (struct vtysh_client *vclient, const char *line, FILE *fp)
          fprintf (fp, "%s", buf);
          fflush (fp);
          
-         /* check for trailling \0\0\0\0, even if split across reads */
+         /* check for trailling \0\0\0<ret code>, 
+          * even if split across reads 
+          * (see lib/vty.c::vtysh_read)
+          */
           if (nbytes >= 4) 
             {
               i = nbytes-4;
@@ -204,7 +207,7 @@ vtysh_client_execute (struct vtysh_client *vclient, const char *line, FILE *fp)
           else
             i = 0;
           
-          while (i < nbytes)
+          while (i < nbytes && numnulls < 3)
             {
               if (buf[i++] == '\0')
                 numnulls++;
@@ -217,10 +220,10 @@ vtysh_client_execute (struct vtysh_client *vclient, const char *line, FILE *fp)
 
           /* got 3 or more trailling nulls? */
           if (numnulls >= 3)
-            return CMD_SUCCESS;
+            return (buf[nbytes-1]);
        }
     }
-  return ret;
+  assert (1);
 }
 
 void