summaryrefslogtreecommitdiffstats
path: root/libasyncns
diff options
context:
space:
mode:
Diffstat (limited to 'libasyncns')
-rw-r--r--libasyncns/asyncns.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/libasyncns/asyncns.c b/libasyncns/asyncns.c
index 7d285b6..95e79f3 100644
--- a/libasyncns/asyncns.c
+++ b/libasyncns/asyncns.c
@@ -403,11 +403,10 @@ static int send_addrinfo_reply(int out_fd, unsigned id, int ret, struct addrinfo
if (ret == 0 && ai) {
void *p = data + 1;
+ struct addrinfo *k;
- while (ai && p) {
- p = serialize_addrinfo(p, ai, &resp->header.length, BUFSIZE);
- ai = ai->ai_next;
- }
+ for (k = ai; k && p; k = k->ai_next)
+ p = serialize_addrinfo(p, ai, &resp->header.length, (char*) data + BUFSIZE - (char*) p);
}
if (ai)