* krlogin.c (oob): Loop reading data until we actually reach the URG marker
authorKen Raeburn <raeburn@mit.edu>
Thu, 23 May 2002 00:52:00 +0000 (00:52 +0000)
committerKen Raeburn <raeburn@mit.edu>
Thu, 23 May 2002 00:52:00 +0000 (00:52 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@14448 dc483132-0cff-0310-8789-dd5450dbe970

src/appl/bsd/ChangeLog
src/appl/bsd/krlogin.c

index bbdf547dc9a888f796330310fdb9cefe4cf0dbde..6c409afaa17912f777052ccf9ad65754fec0ef49 100644 (file)
@@ -1,3 +1,8 @@
+2002-05-22  Ken Raeburn  <raeburn@mit.edu>
+
+       * krlogin.c (oob): Loop reading data until we actually reach the
+       URG marker.
+
 2002-03-26  Ken Raeburn  <raeburn@mit.edu>
 
        * defines.h (FAI_PREFIX): Don't define.
index 78312989753ea43897aa32cbfdce03499d535720..c497dc2fb6fe08853f330d5171472cbecd789c0b 100644 (file)
@@ -1469,20 +1469,25 @@ int server_message(mark)
 void oob()
 {
     char mark;
-    char waste[RLOGIN_BUFSIZ];
-    int atmark;
+    static char waste[RLOGIN_BUFSIZ];
+    int atmark, n;
 
     mark = 0;
     
     recv(rem, &mark, 1, MSG_OOB);
 
     if (server_message(mark)) {
-       if (ioctl(rem, SIOCATMARK, &atmark) < 0) {
-           perror("ioctl");
-           return;
+       for (;;) {
+           if (ioctl(rem, SIOCATMARK, &atmark) < 0) {
+               perror("ioctl");
+               return;
+           }
+           if (atmark)
+               break;
+           n = read(rem, waste, sizeof (waste));
+           if (n <= 0)
+               break;
        }
-       if (!atmark)
-           read(rem, waste, sizeof (waste));
     }
 }