Check for both EAGAIN in addition to EWOULDBLOCK
authorTheodore Tso <tytso@mit.edu>
Wed, 26 Oct 1994 04:18:54 +0000 (04:18 +0000)
committerTheodore Tso <tytso@mit.edu>
Wed, 26 Oct 1994 04:18:54 +0000 (04:18 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@4575 dc483132-0cff-0310-8789-dd5450dbe970

src/appl/bsd/ChangeLog
src/appl/bsd/krlogind.c
src/appl/bsd/krsh.c

index 10aac30531c5a45facfffe5e60d2f57d3895e061..a8ad665d83c27712ddf3df49380f054753a21562 100644 (file)
@@ -1,3 +1,9 @@
+Wed Oct 26 00:04:02 1994  Theodore Y. Ts'o  (tytso@dcl)
+
+       * krsh.c (main):
+       * krlogind.c (protocol, v5_des_read): Check for both EAGAIN in
+               addition to EWOULDBLOCK.
+
 Mon Oct 24 14:46:07 1994    (tytso@rsx-11)
 
        * Makefile.in: The Kerberos V4 libraries must be linked in after
index c087e499dbd025ab458b33b095b5a84831f5b4bd..8f5634c015be11c04bf6432a49613cf343a225af 100644 (file)
@@ -944,7 +944,7 @@ protocol(f, p)
        }
        if (ibits & (1<<f)) {
            fcc = (*des_read)(f, fibuf, sizeof (fibuf));
-           if (fcc < 0 && errno == EWOULDBLOCK)
+           if (fcc < 0 && ((errno == EWOULDBLOCK) || (errno == EAGAIN)))
              fcc = 0;
            else {
                register unsigned char *cp;
@@ -984,7 +984,7 @@ protocol(f, p)
        if (ibits & (1<<p)) {
            pcc = read(p, pibuf, sizeof (pibuf));
            pbp = pibuf;
-           if (pcc < 0 && errno == EWOULDBLOCK)
+           if (pcc < 0 && ((errno == EWOULDBLOCK) || (errno == EAGAIN)))
              pcc = 0;
            else if (pcc <= 0)
              break;
@@ -1000,7 +1000,7 @@ protocol(f, p)
        }
        if ((obits & (1<<f)) && pcc > 0) {
            cc = (*des_write)(f, pbp, pcc);
-           if (cc < 0 && errno == EWOULDBLOCK) {
+           if (cc < 0 && ((errno == EWOULDBLOCK) || (errno == EAGAIN))) {
                /* also shouldn't happen */
                sleep(5);
                continue;
@@ -1247,9 +1247,9 @@ v5_des_read(fd, buf, len)
     if ((cc = krb5_net_read(fd, (char *)&rd_len, sizeof(rd_len))) !=
        sizeof(rd_len)) {
 #endif
-       if ((cc < 0)  && (errno == EWOULDBLOCK)) return(cc);
-       /* XXX can't read enough, pipe
-          must have closed */
+       if ((cc < 0)  && ((errno == EWOULDBLOCK) || (errno == EAGAIN)))
+           return(cc);
+       /* XXX can't read enough, pipe must have closed */
        return(0);
     }
     rd_len = ntohl(rd_len);
@@ -1265,7 +1265,7 @@ v5_des_read(fd, buf, len)
     if ((cc = krb5_net_read(fd, desinbuf.data, net_len)) != net_len) {
        /* XXX can't read enough, pipe
           must have closed */
-       if ((cc < 0)  && (errno == EWOULDBLOCK)) {
+       if ((cc < 0)  && ((errno == EWOULDBLOCK) || (errno == EAGAIN))) {
            retry++;
            sleep(1);
            if (retry > MAXRETRIES){
index 4b4f9bc64424a68db3d8bf2a4406034b8773608b..ae1a2d9649f7ae96b8c0857c199b2ce683bb3bd2 100644 (file)
@@ -118,7 +118,7 @@ main(argc, argv0)
     if ( argc < 2 ) goto usage;
     argc--;
     argv++;
-
+    
   another:
     if (argc > 0 && host == 0 && strncmp(*argv, "-", 1)) {
        host = *argv;
@@ -391,7 +391,7 @@ main(argc, argv0)
          goto rewrite;
        wc = write(rem, bp, cc);
        if (wc < 0) {
-           if (errno == EWOULDBLOCK)
+           if ((errno == EWOULDBLOCK) || (errno == EAGAIN))
              goto rewrite;
            goto done;
        }
@@ -424,7 +424,7 @@ main(argc, argv0)
            errno = 0;
            cc = read(rfd2, buf, sizeof buf);
            if (cc <= 0) {
-               if (errno != EWOULDBLOCK)
+               if ((errno != EWOULDBLOCK) && (errno != EAGAIN))
                  readfrom &= ~(1<<rfd2);
            } else
              (void) write(2, buf, cc);
@@ -433,7 +433,7 @@ main(argc, argv0)
            errno = 0;
            cc = read(rem, buf, sizeof buf);
            if (cc <= 0) {
-               if (errno != EWOULDBLOCK)
+               if ((errno != EWOULDBLOCK) && (errno != EAGAIN))
                  readfrom &= ~(1<<rem);
            } else
              (void) write(1, buf, cc);