Allow for partial reads while reading the token
authorTheodore Tso <tytso@mit.edu>
Sat, 10 Jun 1995 04:29:38 +0000 (04:29 +0000)
committerTheodore Tso <tytso@mit.edu>
Sat, 10 Jun 1995 04:29:38 +0000 (04:29 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@6032 dc483132-0cff-0310-8789-dd5450dbe970

src/appl/gss-sample/ChangeLog
src/appl/gss-sample/gss-misc.c

index 6b37c09fe5037bbc035d5e9a748d30bce06cae2d..097a40e2b186534d64989d0536a86d734f8a6b26 100644 (file)
@@ -1,3 +1,8 @@
+Sat Jun 10 00:28:50 1995  Theodore Y. Ts'o  <tytso@dcl>
+
+       * gss-misc.c (recv_token): Allow for partial reads while reading
+               the token.
+
 Fri Jun  9 18:26:50 1995    <tytso@rsx-11.mit.edu>
 
        * configure.in: Remove standardized set of autoconf macros, which
index f4478aa7bb468ec90bd2f547e14833352ff470bf..625c601b591ba1a6e7713bed25b42ee734bca375 100644 (file)
@@ -114,6 +114,7 @@ int recv_token(s, tok)
      gss_buffer_t tok;
 {
      int ret;
+     int readsofar;
 
      if (display_file == 0)
         display_file = stderr;
@@ -137,17 +138,14 @@ int recv_token(s, tok)
          return -1;
      }
 
-     ret = read(s, (char *) tok->value, tok->length);
-     if (ret < 0) {
-         perror("reading token data");
-         free(tok->value);
-         return -1;
-     } else if (ret != tok->length) {
-         fprintf(display_file, 
-                 "sending token data: %d of %d bytes written\n", 
-                 ret, tok->length);
-         free(tok->value);
-         return -1;
+     while (readsofar < tok->length) {
+        ret = read(s, (char *) tok->value, tok->length);
+        readsofar += ret;
+        if (ret < 0) {
+            perror("reading token data");
+            free(tok->value);
+            return -1;
+        }
      }
 
      return 0;