Change libmilter to use poll(2) instead of select(2) unconditionally. All supported systems should have poll(2). If one is found that doesn't then this can be revisited and some way of making it conditional can be implemented. This resolves an issue with applications that have a large number of open files and want to bump FD_SETSIZE. Since libmilter no longer uses select(2), the application is free to monkey with FD_SETSIZE as it pleases.diff -r1.16 -r1.17 pkgsrc/mail/libmilter/Makefile
(jnemeth)
@@ -1,27 +1,28 @@ | @@ -1,27 +1,28 @@ | |||
1 | # $NetBSD: Makefile,v 1.16 2008/06/14 08:58:06 tron Exp $ | 1 | # $NetBSD: Makefile,v 1.17 2009/12/16 09:46:36 jnemeth Exp $ | |
2 | 2 | |||
3 | PKGNAME= libmilter-${DIST_VERS} | 3 | PKGNAME= libmilter-${DIST_VERS} | |
4 | PKGREVISION= 1 | |||
4 | COMMENT= Mail filter support library for sendmail | 5 | COMMENT= Mail filter support library for sendmail | |
5 | 6 | |||
6 | PKG_DESTDIR_SUPPORT= user-destdir | 7 | PKG_DESTDIR_SUPPORT= user-destdir | |
7 | 8 | |||
8 | .include "options.mk" | 9 | .include "options.mk" | |
9 | .include "../../mail/sendmail/Makefile.common" | 10 | .include "../../mail/sendmail/Makefile.common" | |
10 | 11 | |||
11 | INSTALLATION_DIRS= include lib | 12 | INSTALLATION_DIRS= include lib | |
12 | 13 | |||
13 | post-patch: make-sendmail-siteconfig | 14 | post-patch: make-sendmail-siteconfig | |
14 | 15 | |||
15 | do-build: | 16 | do-build: | |
16 | (cd ${WRKSRC}/libmilter && env ${MAKE_ENV} ./Build) | 17 | (cd ${WRKSRC}/libmilter && env ${MAKE_ENV} ./Build) | |
17 | 18 | |||
18 | do-install: | 19 | do-install: | |
19 | (cd ${WRKSRC}/libmilter && env ${MAKE_ENV} ./Build BINOWN=${BINOWN:Q} BINGRP=${BINGRP:Q} SHAREOWN=${SHAREOWN:Q} SHAREGRP=${SHAREGRP:Q} INCLUDEDIR=${DESTDIR:Q}${PREFIX}/include LIBDIR=${DESTDIR:Q}${PREFIX}/lib install) | 20 | (cd ${WRKSRC}/libmilter && env ${MAKE_ENV} ./Build BINOWN=${BINOWN} BINGRP=${BINGRP} SHAREOWN=${SHAREOWN} SHAREGRP=${SHAREGRP} INCLUDEDIR=${DESTDIR}${PREFIX}/include LIBDIR=${DESTDIR}${PREFIX}/lib install) | |
20 | 21 | |||
21 | PTHREAD_OPTS+= require | 22 | PTHREAD_OPTS+= require | |
22 | 23 | |||
23 | .include "../../mk/pthread.buildlink3.mk" | 24 | .include "../../mk/pthread.buildlink3.mk" | |
24 | .include "../../mk/bsd.pkg.mk" | 25 | .include "../../mk/bsd.pkg.mk" | |
25 | 26 | |||
26 | # has to be below include for bsd.pkg.mk, else substition fails | 27 | # has to be below include for bsd.pkg.mk, else substition fails | |
27 | OBJDIR!= ${ECHO} obj.`${UNAME} -srm | ${TR} \ .` | 28 | OBJDIR!= ${ECHO} obj.`${UNAME} -srm | ${TR} \ .` |
@@ -1,18 +1,19 @@ | @@ -1,18 +1,19 @@ | |||
1 | $NetBSD: distinfo,v 1.41 2009/03/24 21:05:42 jnemeth Exp $ | 1 | $NetBSD: distinfo,v 1.42 2009/12/16 09:46:36 jnemeth Exp $ | |
2 | 2 | |||
3 | SHA1 (sendmail.8.14.3.tar.gz) = 814c54c3917aa6b0981b5ea99fb34e0c02f31489 | 3 | SHA1 (sendmail.8.14.3.tar.gz) = 814c54c3917aa6b0981b5ea99fb34e0c02f31489 | |
4 | RMD160 (sendmail.8.14.3.tar.gz) = 5423360ce908c985827cf6524a6de87e3451c27a | 4 | RMD160 (sendmail.8.14.3.tar.gz) = 5423360ce908c985827cf6524a6de87e3451c27a | |
5 | Size (sendmail.8.14.3.tar.gz) = 2069209 bytes | 5 | Size (sendmail.8.14.3.tar.gz) = 2069209 bytes | |
6 | SHA1 (patch-aa) = b7ceece7760e3d637016da039f8429c1fb89f2cf | 6 | SHA1 (patch-aa) = b7ceece7760e3d637016da039f8429c1fb89f2cf | |
7 | SHA1 (patch-ab) = a2abf6e78772e257e2a1973e7730159ff24a91aa | 7 | SHA1 (patch-ab) = a2abf6e78772e257e2a1973e7730159ff24a91aa | |
8 | SHA1 (patch-ac) = 96c19300b4188dbcbd202768eea912f675dadc27 | 8 | SHA1 (patch-ac) = 96c19300b4188dbcbd202768eea912f675dadc27 | |
9 | SHA1 (patch-ad) = 7232cc7ceb46a2dbf631d61185e4c6ca4af18a13 | 9 | SHA1 (patch-ad) = 7232cc7ceb46a2dbf631d61185e4c6ca4af18a13 | |
10 | SHA1 (patch-ae) = ae06caa125fe4d4fc85123dc0a5d0016cd099ebd | 10 | SHA1 (patch-ae) = ae06caa125fe4d4fc85123dc0a5d0016cd099ebd | |
11 | SHA1 (patch-af) = f1fb00d9d27f512c550ad7dbcd014563122488b5 | 11 | SHA1 (patch-af) = f1fb00d9d27f512c550ad7dbcd014563122488b5 | |
12 | SHA1 (patch-ag) = 1889e8d7938664af926a9a169bb53f6da924f0bb | 12 | SHA1 (patch-ag) = 1889e8d7938664af926a9a169bb53f6da924f0bb | |
13 | SHA1 (patch-ah) = e6be09008b9230ffdd1560aaacbdbb2ee4fb8028 | 13 | SHA1 (patch-ah) = e6be09008b9230ffdd1560aaacbdbb2ee4fb8028 | |
14 | SHA1 (patch-ai) = aca71358618e8c1dc785a8b2dc049b97232b8795 | 14 | SHA1 (patch-ai) = aca71358618e8c1dc785a8b2dc049b97232b8795 | |
15 | SHA1 (patch-aj) = e65e6fe44380de2f9c397c1a97677eb4ad285433 | 15 | SHA1 (patch-aj) = e65e6fe44380de2f9c397c1a97677eb4ad285433 | |
16 | SHA1 (patch-al) = f5d8cef8c4abba5d5ae813b754c16037190a7ef1 | 16 | SHA1 (patch-al) = f5d8cef8c4abba5d5ae813b754c16037190a7ef1 | |
17 | SHA1 (patch-am) = d84eedbff0f037c1db341255dc9e1877866f12c7 | 17 | SHA1 (patch-am) = d84eedbff0f037c1db341255dc9e1877866f12c7 | |
18 | SHA1 (patch-an) = 82d2df0c609099f295eb00f1f5e19391ae97833c | 18 | SHA1 (patch-an) = 82d2df0c609099f295eb00f1f5e19391ae97833c | |
19 | SHA1 (patch-ao) = 51e27f1fa90420bf7a5daa1379c4b0f07b596177 |
@@ -1,14 +1,14 @@ | @@ -1,14 +1,14 @@ | |||
1 | # $NetBSD: site.config.m4,v 1.9 2008/03/14 03:02:45 jnemeth Exp $ | 1 | # $NetBSD: site.config.m4,v 1.10 2009/12/16 09:46:36 jnemeth Exp $ | |
2 | 2 | |||
3 | # pathnames specific to pkgsrc | 3 | # pathnames specific to pkgsrc | |
4 | # | 4 | # | |
5 | define(`confEBINDIR', `${PREFIX}/libexec/sendmail') | 5 | define(`confEBINDIR', `${PREFIX}/libexec/sendmail') | |
6 | define(`confMBINDIR', `${PREFIX}/libexec/sendmail') | 6 | define(`confMBINDIR', `${PREFIX}/libexec/sendmail') | |
7 | define(`confSBINDIR', `${PREFIX}/sbin') | 7 | define(`confSBINDIR', `${PREFIX}/sbin') | |
8 | define(`confUBINDIR', `${PREFIX}/bin') | 8 | define(`confUBINDIR', `${PREFIX}/bin') | |
9 | define(`confHFDIR', `${PREFIX}/share/misc') | 9 | define(`confHFDIR', `${PREFIX}/share/misc') | |
10 | define(`confINSTALL_RAWMAN', 'yes') | 10 | define(`confINSTALL_RAWMAN', 'yes') | |
11 | define(`confDONT_INSTALL_CATMAN', 'yes') | 11 | define(`confDONT_INSTALL_CATMAN', 'yes') | |
12 | define(`confMANROOT', `${PREFIX}/${PKGMANDIR}/man') | 12 | define(`confMANROOT', `${PREFIX}/${PKGMANDIR}/man') | |
13 | define(`confMANROOTMAN', `${PREFIX}/${PKGMANDIR}/man') | 13 | define(`confMANROOTMAN', `${PREFIX}/${PKGMANDIR}/man') | |
14 | define(`confMAN1EXT', `1') | 14 | define(`confMAN1EXT', `1') | |
@@ -19,13 +19,19 @@ define(`confMAN8EXT', `8') | @@ -19,13 +19,19 @@ define(`confMAN8EXT', `8') | |||
19 | APPENDDEF(`confENVDEF', `-I${PREFIX}/include -DSMRSH_CMDDIR=\"${SMRSH_CMDDIR}\"') | 19 | APPENDDEF(`confENVDEF', `-I${PREFIX}/include -DSMRSH_CMDDIR=\"${SMRSH_CMDDIR}\"') | |
20 | APPENDDEF(`confLIBS', `-L${PREFIX}/lib') | 20 | APPENDDEF(`confLIBS', `-L${PREFIX}/lib') | |
21 | APPENDDEF(`confMAPDEF', `-DSOCKETMAP') | 21 | APPENDDEF(`confMAPDEF', `-DSOCKETMAP') | |
22 | 22 | |||
23 | # the following are handled by pkgsrc | 23 | # the following are handled by pkgsrc | |
24 | define(`confINST_DEP',`') | 24 | define(`confINST_DEP',`') | |
25 | define(`confNO_STATISTICS_INSTALL') | 25 | define(`confNO_STATISTICS_INSTALL') | |
26 | 26 | |||
27 | # set file ownership to pkgsrc default | 27 | # set file ownership to pkgsrc default | |
28 | define(`confLIBOWN', `${BINOWN}') | 28 | define(`confLIBOWN', `${BINOWN}') | |
29 | define(`confLIBGRP', `${BINGRP}') | 29 | define(`confLIBGRP', `${BINGRP}') | |
30 | define(`confINCOWN', `${SHAREOWN}') | 30 | define(`confINCOWN', `${SHAREOWN}') | |
31 | define(`confINCGRP', `${SHAREGRP}') | 31 | define(`confINCGRP', `${SHAREGRP}') | |
32 | ||||
33 | # have libmilter use poll(2) instead of select(2) | |||
34 | # XXX all supported systems should support poll(2), if one is discovered | |||
35 | # that doesn't, we can revisit this | |||
36 | APPENDDEF(`conf_libmilter_ENVDEF', `-DSM_CONF_POLL=1') | |||
37 |
$NetBSD: patch-ao,v 1.1 2009/12/16 09:46:36 jnemeth Exp $
Fix a possibly incorrect error message.
Patch sent upstream, 2009/12/15 -- jnemeth
--- libmilter/listener.c.orig 2007-04-23 22:22:50.000000000 +0000
+++ libmilter/listener.c
@@ -777,8 +777,9 @@ mi_listener(conn, dbg, smfi, timeout, ba
continue;
scnt++;
smi_log(SMI_LOG_ERR,
- "%s: select() failed (%s), %s",
- smfi->xxfi_name, sm_errstring(save_errno),
+ "%s: %s() failed (%s), %s",
+ smfi->xxfi_name, MI_POLLSELECT,
+ sm_errstring(save_errno),
scnt >= MAX_FAILS_S ? "abort" : "try again");
MI_SLEEP(scnt);
if (scnt >= MAX_FAILS_S)