[packages] liboping: update to v1.3.4 (#6462)
[openwrt/svn-archive/archive.git] / libs / liboping / patches / 100-fd_error.patch
index 410655478630f5d355966fe5cd581adcd8cb7af6..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,86 +0,0 @@
-diff --git a/src/liboping.c b/src/liboping.c
-index 411d866..e80ea29 100644
---- a/src/liboping.c
-+++ b/src/liboping.c
-@@ -590,9 +590,10 @@ static int ping_receive_one (pingobj_t *obj, const pinghost_t *ph,
- static int ping_receive_all (pingobj_t *obj)
- {
--      fd_set readfds;
--      int num_readfds;
--      int max_readfds;
-+      fd_set read_fds;
-+      fd_set err_fds;
-+      int num_fds;
-+      int max_fd;
-       pinghost_t *ph;
-       pinghost_t *ptr;
-@@ -631,23 +632,25 @@ static int ping_receive_all (pingobj_t *obj)
-       while (1)
-       {
--              FD_ZERO (&readfds);
--              num_readfds =  0;
--              max_readfds = -1;
-+              FD_ZERO (&read_fds);
-+              FD_ZERO (&err_fds);
-+              num_fds =  0;
-+              max_fd = -1;
-               for (ptr = ph; ptr != NULL; ptr = ptr->next)
-               {
-                       if (!timerisset (ptr->timer))
-                               continue;
--                      FD_SET (ptr->fd, &readfds);
--                      num_readfds++;
-+                      FD_SET (ptr->fd, &read_fds);
-+                      FD_SET (ptr->fd, &err_fds);
-+                      num_fds++;
--                      if (max_readfds < ptr->fd)
--                              max_readfds = ptr->fd;
-+                      if (max_fd < ptr->fd)
-+                              max_fd = ptr->fd;
-               }
--              if (num_readfds == 0)
-+              if (num_fds == 0)
-                       break;
-               if (gettimeofday (&nowtime, NULL) == -1)
-@@ -659,11 +662,11 @@ static int ping_receive_all (pingobj_t *obj)
-               if (ping_timeval_sub (&endtime, &nowtime, &timeout) == -1)
-                       break;
--              dprintf ("Waiting on %i sockets for %i.%06i seconds\n", num_readfds,
-+              dprintf ("Waiting on %i sockets for %i.%06i seconds\n", num_fds,
-                               (int) timeout.tv_sec,
-                               (int) timeout.tv_usec);
--              status = select (max_readfds + 1, &readfds, NULL, NULL, &timeout);
-+              status = select (max_fd + 1, &read_fds, NULL, &err_fds, &timeout);
-               if (gettimeofday (&nowtime, NULL) == -1)
-               {
-@@ -696,9 +699,18 @@ static int ping_receive_all (pingobj_t *obj)
-               for (ptr = ph; ptr != NULL; ptr = ptr->next)
-               {
--                      if (FD_ISSET (ptr->fd, &readfds))
-+                      if (FD_ISSET (ptr->fd, &read_fds))
-+                      {
-                               if (ping_receive_one (obj, ptr, &nowtime) == 0)
-                                       ret++;
-+                      }
-+                      else if (FD_ISSET (ptr->fd, &err_fds))
-+                      {
-+                              /* clear the timer in this case so that we
-+                               * don't run into an endless loop. */
-+                              /* TODO: Set an error flag in this case. */
-+                              timerclear (ptr->timer);
-+                      }
-               }
-       } /* while (1) */
-