summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mail/netqmail/DESCR12
-rw-r--r--mail/netqmail/Makefile36
-rw-r--r--mail/netqmail/distinfo5
-rw-r--r--mail/netqmail/patches/patch-aa65
4 files changed, 118 insertions, 0 deletions
diff --git a/mail/netqmail/DESCR b/mail/netqmail/DESCR
new file mode 100644
index 00000000000..c963fd8e1dd
--- /dev/null
+++ b/mail/netqmail/DESCR
@@ -0,0 +1,12 @@
+Charles Cazabon, Dave Sill, Henning Brauer, Peter Samuel, and
+Russell Nelson have put together a netqmail-1.05 distribution of
+qmail. It is comprised of qmail-1.03 plus a patch file, some
+documentation, and a shell script which prepares the files for
+compilation.
+
+We have done this because in our opinion, too many new users are
+confused by the out-of-date INSTALL file, and too much time is
+spent arguing on the mailing list over bugs. We have tried to stick
+to the barest minimum number of changes. We have fixed only those
+things which are out-and-out wrong, or which have been approved by
+djb (specifically QMAILQUEUE).
diff --git a/mail/netqmail/Makefile b/mail/netqmail/Makefile
new file mode 100644
index 00000000000..11437259843
--- /dev/null
+++ b/mail/netqmail/Makefile
@@ -0,0 +1,36 @@
+# $NetBSD: Makefile,v 1.1.1.1 2004/07/21 22:42:04 schmonz Exp $
+#
+
+DISTNAME= netqmail-1.05
+CATEGORIES= mail
+MASTER_SITES= http://qmail.org/
+
+MAINTAINER= schmonz@NetBSD.org
+HOMEPAGE= http://qmail.org/netqmail/
+COMMENT= Unofficial distribution of qmail that includes basic patches
+
+CONFLICTS+= qmail-[0-9]*
+
+USE_BUILDLINK3= yes
+
+# netqmail is a modification of the qmail source.
+RESTRICTED= "modified source and binaries may not be distributed"
+NO_BIN_ON_CDROM=${RESTRICTED}
+NO_BIN_ON_FTP= ${RESTRICTED}
+NO_PACKAGE= "needs work to function properly as a binary package"
+
+WRKSRC= ${WRKDIR}/${DISTNAME}/${DISTNAME}
+
+.include "../../mail/qmail/Makefile.common"
+
+.if defined(PKG_PHASE) && ${PKG_PHASE} == "extract"
+WRKSRC= ${WRKDIR}/${DISTNAME}
+.endif
+
+post-extract:
+ @extract_file=qmail-1.03.tar.gz; export extract_file; \
+ cd ${WRKSRC}; ${EXTRACT_CMD}; cd qmail-1.03; \
+ ${PATCH} ${PATCH_DIST_ARGS} < ../${DISTNAME}.patch; \
+ cd ..; ${MV} qmail-1.03 ${DISTNAME}
+
+.include "../../mk/bsd.pkg.mk"
diff --git a/mail/netqmail/distinfo b/mail/netqmail/distinfo
new file mode 100644
index 00000000000..af4890125a0
--- /dev/null
+++ b/mail/netqmail/distinfo
@@ -0,0 +1,5 @@
+$NetBSD: distinfo,v 1.1.1.1 2004/07/21 22:42:04 schmonz Exp $
+
+SHA1 (netqmail-1.05.tar.gz) = fe4cbe97bd2f18a5ca1b36e4fbbd6c524256a829
+Size (netqmail-1.05.tar.gz) = 252264 bytes
+SHA1 (patch-aa) = c9928d0879dee77010bb469d4afa8c4ca35668f8
diff --git a/mail/netqmail/patches/patch-aa b/mail/netqmail/patches/patch-aa
new file mode 100644
index 00000000000..cf1473dbf20
--- /dev/null
+++ b/mail/netqmail/patches/patch-aa
@@ -0,0 +1,65 @@
+$NetBSD: patch-aa,v 1.1.1.1 2004/07/21 22:42:04 schmonz Exp $
+
+--- dns.c.orig 2004-07-20 20:02:28.000000000 -0400
++++ dns.c
+@@ -19,10 +19,12 @@ extern int res_search();
+ static unsigned short getshort(c) unsigned char *c;
+ { unsigned short u; u = c[0]; return (u << 8) + c[1]; }
+
+-static union { HEADER hdr; unsigned char buf[PACKETSZ]; } response;
++static struct { unsigned char *buf; } response;
++static int responsebuflen = 0;
+ static int responselen;
+ static unsigned char *responseend;
+ static unsigned char *responsepos;
++static u_long saveresoptions;
+
+ static int numanswers;
+ static char name[MAXDNAME];
+@@ -43,18 +45,33 @@ int type;
+ errno = 0;
+ if (!stralloc_copy(&glue,domain)) return DNS_MEM;
+ if (!stralloc_0(&glue)) return DNS_MEM;
+- responselen = lookup(glue.s,C_IN,type,response.buf,sizeof(response));
++ if (!responsebuflen)
++ if (response.buf = (unsigned char *)alloc(PACKETSZ+1))
++ responsebuflen = PACKETSZ+1;
++ else return DNS_MEM;
++
++ responselen = lookup(glue.s,C_IN,type,response.buf,responsebuflen);
++ if ((responselen >= responsebuflen) ||
++ (responselen > 0 && (((HEADER *)response.buf)->tc)))
++ {
++ if (responsebuflen < 65536)
++ if (alloc_re(&response.buf, responsebuflen, 65536))
++ responsebuflen = 65536;
++ else return DNS_MEM;
++ saveresoptions = _res.options;
++ _res.options |= RES_USEVC;
++ responselen = lookup(glue.s,C_IN,type,response.buf,responsebuflen);
++ _res.options = saveresoptions;
++ }
+ if (responselen <= 0)
+ {
+ if (errno == ECONNREFUSED) return DNS_SOFT;
+ if (h_errno == TRY_AGAIN) return DNS_SOFT;
+ return DNS_HARD;
+ }
+- if (responselen >= sizeof(response))
+- responselen = sizeof(response);
+ responseend = response.buf + responselen;
+ responsepos = response.buf + sizeof(HEADER);
+- n = ntohs(response.hdr.qdcount);
++ n = ntohs(((HEADER *)response.buf)->qdcount);
+ while (n-- > 0)
+ {
+ i = dn_expand(response.buf,responseend,responsepos,name,MAXDNAME);
+@@ -64,7 +81,7 @@ int type;
+ if (i < QFIXEDSZ) return DNS_SOFT;
+ responsepos += QFIXEDSZ;
+ }
+- numanswers = ntohs(response.hdr.ancount);
++ numanswers = ntohs(((HEADER *)response.buf)->ancount);
+ return 0;
+ }
+