]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
Additional changes to input_handler() to correctly break in refclock read loop
authorDanny Mayer <mayer@ntp.org>
Mon, 21 Feb 2005 05:26:12 +0000 (00:26 -0500)
committerDanny Mayer <mayer@ntp.org>
Mon, 21 Feb 2005 05:26:12 +0000 (00:26 -0500)
bk: 421970f4BooY6AiyTkjPiPqS97KWiQ

ntpd/ntp_io.c

index 78bd704984793bdebcea889c0043869a9f8c46f1..e01c355d9c64cc05df5bcdd2f5945fcedbd5e6ec 100644 (file)
@@ -1891,7 +1891,7 @@ input_handler(
                                                char buf[RX_BUFF_SIZE];
 
                                                buflen = read(fd, buf, sizeof buf);
-                                               if (buflen < 0)
+                                               if (buflen <= 0)
                                                        break;  /* Done */
                                                packets_dropped++;
                                                if (buflen == 0)
@@ -1912,10 +1912,10 @@ input_handler(
                                        if (buflen < 0)
                                        {
                                                freerecvbuf(rb);
-                                               if (errno != EINTR) {
-                                                       netsyslog(LOG_ERR, "clock read fd %d, bytes read %d: %m", fd, rb->recv_length);
-                                                       break;
+                                               if (errno != EINTR && errno != EAGAIN) {
+                                                       netsyslog(LOG_ERR, "clock read fd %d: %m", fd);
                                                }
+                                               break;
                                        }
                                        if(buflen == 0)
                                                totzeroreads++;
@@ -1959,9 +1959,10 @@ input_handler(
                                        rp->recvcount++;
                                        packets_received++;
                                } /* End while (totzeroreads < MAXZEROREADS) */
-                       }
-               }
-       }
+                       } /* End if (FD_ISSET(fd, &fds)) */
+               } /* End for (rp = refio; rp != 0 && n > 0; rp = rp->next) */
+       } /* End if (refio != 0) */
+
 #endif /* REFCLOCK */
 
        /*