- while (num && poll(pfd, num, -1) != -1) {
- for (i = 0; i < num; i++) {
- int err;
- socklen_t errlen = sizeof(err);
- if (!pfd[i].revents)
- continue;
- if (getsockopt(pfd[i].fd, SOL_SOCKET, SO_ERROR, &err,
- &errlen) != 0)
- goto out;
- if (err == 0)
- goto got_one;
-
- /* Remove dead one. */
- errno = err;
- remove_fd(pfd, addr, slen, &num, i--);
- }
- }