summaryrefslogtreecommitdiffstats
path: root/libasyncns
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2008-07-27 19:05:49 +0200
committerLennart Poettering <lennart@poettering.net>2008-07-27 19:05:49 +0200
commit5d1331666d9d1d2aa5ec85a67106f71e69c2ddc6 (patch)
tree6bdd802f3c7c521d6182939a0f2c4133b34c63cb /libasyncns
parent55b19a445ccacbcab228e2e21264d2e6aec8ae84 (diff)
fix iterative serialization of addrinfo data
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)