X-Git-Url: https://git.octo.it/?a=blobdiff_plain;ds=sidebyside;f=src%2Fliboping.c;h=edc3522f2a93a9c9102adfe4707e3487db047537;hb=1fa5bd2529ecbbb725002d8e409216ef7d2f0776;hp=1738255c500cc9a653f2d1d5ceecc94c26d3c054;hpb=0432695fbfa55bbdab77304f4f25636655e9ac06;p=liboping.git diff --git a/src/liboping.c b/src/liboping.c index 1738255..edc3522 100644 --- a/src/liboping.c +++ b/src/liboping.c @@ -1435,9 +1435,11 @@ int ping_send (pingobj_t *obj) ptr = ph; num_fds = 0; - if (fd4 != -1) num_fds++; - if (fd6 != -1) num_fds++; - max_fd = fd4 > fd6 ? fd4 : fd6; + if (fd4 != -1) + num_fds++; + if (fd6 != -1) + num_fds++; + max_fd = (fd4 > fd6) ? fd4 : fd6; assert (max_fd < FD_SETSIZE); while (pings > 0 || ptr != NULL) @@ -1446,15 +1448,21 @@ int ping_send (pingobj_t *obj) FD_ZERO (&write_fds); FD_ZERO (&err_fds); - if (fd4 != -1) FD_SET(fd4, &read_fds); - if (fd6 != -1) FD_SET(fd6, &read_fds); + if (fd4 != -1) + { + FD_SET(fd4, &read_fds); + if (ptr != NULL && ptr->addrfamily == AF_INET) + FD_SET(fd4, &write_fds); + FD_SET(fd4, &err_fds); + } - if (fd4 != -1 && ptr != NULL && ptr->addrfamily == AF_INET) - FD_SET(fd4, &write_fds); - if (fd6 != -1 && ptr != NULL && ptr->addrfamily == AF_INET6) - FD_SET(fd6, &write_fds); - if (fd4 != -1) FD_SET(fd4, &err_fds); - if (fd6 != -1) FD_SET(fd6, &err_fds); + if (fd6 != -1) + { + FD_SET(fd6, &read_fds); + if (ptr != NULL && ptr->addrfamily == AF_INET6) + FD_SET(fd6, &write_fds); + FD_SET(fd6, &err_fds); + } if (gettimeofday (&nowtime, NULL) == -1) {