diff options
author | Lennart Poettering <lennart@poettering.net> | 2008-07-27 19:05:49 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2008-07-27 19:05:49 +0200 |
commit | 5d1331666d9d1d2aa5ec85a67106f71e69c2ddc6 (patch) | |
tree | 6bdd802f3c7c521d6182939a0f2c4133b34c63cb /libasyncns | |
parent | 55b19a445ccacbcab228e2e21264d2e6aec8ae84 (diff) |
fix iterative serialization of addrinfo data
Diffstat (limited to 'libasyncns')
-rw-r--r-- | libasyncns/asyncns.c | 7 |
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) |