diff --git a/third_party/musl/grp.c b/third_party/musl/grp.c index cd7e106f8..7a788c7f0 100644 --- a/third_party/musl/grp.c +++ b/third_party/musl/grp.c @@ -47,7 +47,7 @@ static unsigned atou(char **s) { } int __getgrent_a(FILE *f, struct group *gr, char **line, size_t *size, - char ***mem, size_t *nmem, struct group **res) { + char ***mem, size_t *nmem, struct group **res) { ssize_t l; char *s, *mems; size_t i; @@ -104,8 +104,8 @@ end: } int __getgr_a(const char *name, gid_t gid, struct group *gr, char **buf, - size_t *size, char ***mem, size_t *nmem, - struct group **res) { + size_t *size, char ***mem, size_t *nmem, + struct group **res) { FILE *f; int rv = 0; int cs; diff --git a/third_party/musl/res_msend.c b/third_party/musl/res_msend.c index b76c7124c..8671d74c9 100644 --- a/third_party/musl/res_msend.c +++ b/third_party/musl/res_msend.c @@ -53,7 +53,7 @@ static void cleanup(void *p) struct pollfd *pfd = p; for (int i=0; pfd[i].fd >= -1; i++) if (pfd[i].fd >= 0) - close(pfd[i].fd); + close(pfd[i].fd); } static unsigned long mtime() @@ -299,51 +299,51 @@ int __res_msend_rc(int nqueries, const unsigned char *const *queries, } for (i=0; i>8, qlens[i] }, .iov_len = 2 }, - { .iov_base = (void *)queries[i], .iov_len = qlens[i] } } - }; - step_mh(&mh, qpos[i]); - r = sendmsg(pfd[i].fd, &mh, MSG_NOSIGNAL); - if (r < 0) goto out; - qpos[i] += r; - if (qpos[i] == qlens[i]+2) - pfd[i].events = POLLIN; - } - } + if (pfd[i].revents & POLLOUT) { + struct msghdr mh = { + .msg_iovlen = 2, + .msg_iov = (struct iovec [2]){ + { .iov_base = (uint8_t[]){ qlens[i]>>8, qlens[i] }, .iov_len = 2 }, + { .iov_base = (void *)queries[i], .iov_len = qlens[i] } } + }; + step_mh(&mh, qpos[i]); + r = sendmsg(pfd[i].fd, &mh, MSG_NOSIGNAL); + if (r < 0) goto out; + qpos[i] += r; + if (qpos[i] == qlens[i]+2) + pfd[i].events = POLLIN; + } + } for (i=0; i