From 584eb382e72c2732c6c20141fdf6497515c88f84 Mon Sep 17 00:00:00 2001 From: Bjorn Andersson Date: Tue, 6 Jun 2006 15:43:13 +0000 Subject: [PATCH] direct large packages --- dnsd.c | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/dnsd.c b/dnsd.c index d1053fa..3cf3c58 100644 --- a/dnsd.c +++ b/dnsd.c @@ -199,7 +199,7 @@ dnsd_send(int fd, char *name, short type, short id, struct sockaddr_in from) { int len; char *p; - char buf[1024]; + char buf[64*1024]; HEADER *header; memset(buf, 0, sizeof(buf)); @@ -265,16 +265,18 @@ decodepacket(const char *name, struct packet *packet) int r; int len; int last; + int ping; char *dp; char *domain; const char *np; len = 0; last = (name[0] == '1'); + ping = (name[0] == 'p' || name[0] == 'P'); domain = strstr(name, topdomain); - if (domain) { + if (!ping && domain) { np = name + 1; dp = packet->data + packet->offset; @@ -295,17 +297,10 @@ decodepacket(const char *name, struct packet *packet) } if(last) { - int fd; - char fname[256]; - static int num = 0; - - snprintf(fname, 256, "moo%d", num++); - - fd = open(fname, O_WRONLY | O_CREAT, S_IRGRP); - write(fd, packet->data, packet->len); - close(fd); - + len = packet->len; packet->len = packet->offset = 0; + } else { + len = 0; } return len; @@ -370,8 +365,6 @@ dnsd_read(int fd, char *buf, int buflen) } r = decodepacket(name, &packetbuf); - if(r < 10) - r = 0; printf("r is %d\n", r);