added version number for protocol changes.
authorRalph Campbell <ralph@ucbvax.Berkeley.EDU>
Wed, 30 Nov 1983 08:52:08 +0000 (00:52 -0800)
committerRalph Campbell <ralph@ucbvax.Berkeley.EDU>
Wed, 30 Nov 1983 08:52:08 +0000 (00:52 -0800)
SCCS-vsn: usr.bin/rdist/docmd.c 4.10
SCCS-vsn: usr.bin/rdist/server.c 4.9

usr/src/usr.bin/rdist/docmd.c
usr/src/usr.bin/rdist/server.c

index a9ad132..764de87 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
 #ifndef lint
-static char *sccsid = "@(#)docmd.c     4.9 (Berkeley) 83/11/29";
+static char *sccsid = "@(#)docmd.c     4.10 (Berkeley) 83/11/29";
 #endif
 
 #include "defs.h"
 #endif
 
 #include "defs.h"
@@ -90,7 +90,8 @@ makeconn(rhost)
        char *rhost;
 {
        register struct block *c;
        char *rhost;
 {
        register struct block *c;
-       register char *ruser;
+       register char *ruser, *cp;
+       int n;
        extern char user[];
 
        (void) sprintf(buf, "/usr/local/rdist -Server%s", qflag ? " -q" : "");
        extern char user[];
 
        (void) sprintf(buf, "/usr/local/rdist -Server%s", qflag ? " -q" : "");
@@ -113,9 +114,24 @@ makeconn(rhost)
        rem = rcmd(&rhost, IPPORT_CMDSERVER, user, ruser, buf, 0);
        if (rem < 0)
                return(0);
        rem = rcmd(&rhost, IPPORT_CMDSERVER, user, ruser, buf, 0);
        if (rem < 0)
                return(0);
-       if (response() < 0)
-               return(0);
-       return(1);
+       cp = buf;
+       if (read(rem, cp, 1) != 1)
+               lostconn();
+       if (*cp == 'V') {
+               do {
+                       if (read(rem, cp, 1) != 1)
+                               lostconn();
+               } while (*cp++ != '\n' && cp < &buf[BUFSIZ]);
+               *--cp = '\0';
+               cp = buf;
+               n = 0;
+               while (*cp >= '0' && *cp <= '9')
+                       n = (n * 10) + (*cp++ - '0');
+               if (*cp == '\0' && n == VERSION)
+                       return(1);
+       }
+       error("connection failed: version numbers don't match\n");
+       return(0);
 }
 
 okname(name)
 }
 
 okname(name)
index 1a8a5cc..47b0852 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef lint
 #ifndef lint
-static char *sccsid = "@(#)server.c    4.8 (Berkeley) 83/11/29";
+static char *sccsid = "@(#)server.c    4.9 (Berkeley) 83/11/29";
 #endif
 
 #include "defs.h"
 #endif
 
 #include "defs.h"
@@ -31,7 +31,8 @@ server()
        int opts;
 
        oumask = umask(0);
        int opts;
 
        oumask = umask(0);
-       ack();
+       (void) sprintf(buf, "V%d\n", VERSION);
+       (void) write(rem, buf, strlen(buf));
 
        for (;;) {
                cp = cmdbuf;
 
        for (;;) {
                cp = cmdbuf;