X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=client%2Fadnsresfilter.c;h=7632ee3f59b83c34bc9f24786226678909b40cfd;hb=cdf51ff0be2d71b61dec430d08c985f20cc5dffd;hp=aec3889bacb8a9d9122be6ec63fbbba4f35e7f51;hpb=aa3ffb57294018bc66aabe1df8960643c397a449;p=adns.git diff --git a/client/adnsresfilter.c b/client/adnsresfilter.c index aec3889..7632ee3 100644 --- a/client/adnsresfilter.c +++ b/client/adnsresfilter.c @@ -3,12 +3,11 @@ * - filter which does resolving, not part of the library */ /* - * This file is - * Copyright (C) 1999-2000 Ian Jackson - * - * It is part of adns, which is - * Copyright (C) 1997-2000 Ian Jackson - * Copyright (C) 1999-2000 Tony Finch + * This file is part of adns, which is + * Copyright (C) 1997-2000,2003,2006 Ian Jackson + * Copyright (C) 1999-2000,2003,2006 Tony Finch + * Copyright (C) 1991 Massachusetts Institute of Technology + * (See the file INSTALL for full details.) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -49,8 +48,7 @@ struct outqueuenode { struct outqueuenode *next, *back; - void *buffer; - char *textp; + char *buffer, *textp; int textlen; struct timeval printbefore; struct treething *addr; @@ -217,7 +215,8 @@ static void queueoutchar(int c) { struct outqueuenode *entry; entry= outqueue.tail; - if (!entry || entry->addr || entry->textlen >= peroutqueuenode) { + if (!entry || entry->addr || + entry->textlen >= peroutqueuenode - (entry->textp - entry->buffer)) { peroutqueuenode= !peroutqueuenode || !entry || entry->addr ? 128 : peroutqueuenode >= 1024 ? 4096 : peroutqueuenode<<2; entry= xmalloc(sizeof(*entry));