aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Dokuchaev <danfe@FreeBSD.org>2024-02-05 10:44:44 +0000
committerAlexey Dokuchaev <danfe@FreeBSD.org>2024-02-05 10:44:44 +0000
commit1b25faa3f9e7604f59613b5d52bd562148f63c04 (patch)
tree6c1e351639849665c16b1d8570499c86b018102e
parent6fcbf445d838965fd747bd501af3c4ea05e80a1c (diff)
downloadports-1b25faa3f9e7604f59613b5d52bd562148f63c04.tar.gz
ports-1b25faa3f9e7604f59613b5d52bd562148f63c04.zip
net/dante: restore read/send-side pipe system check during configure
It was disabled (patched out) in July 2023 based on the pkg-fallout@ emails, nearly seven months after the last regression which could be causing it had been fixed. Evidently, the cluster was running buggy kernel for its port-building jails long enough to confuse people the problem was still somehow exhibiting itself. While here, assume maintainership, fix some DRY bugs in the Makefile, and install the manpages under $PREFIX/share/man per new world order. PR: 272755 Fixes: 2b81a5f3f73c
-rw-r--r--net/dante/Makefile31
-rw-r--r--net/dante/files/patch-acinclude.m4276
-rw-r--r--net/dante/pkg-plist8
3 files changed, 21 insertions, 294 deletions
diff --git a/net/dante/Makefile b/net/dante/Makefile
index 0031bfd84ba0..458dbabda958 100644
--- a/net/dante/Makefile
+++ b/net/dante/Makefile
@@ -4,7 +4,7 @@ CATEGORIES= net security
MASTER_SITES= http://www.inet.no/dante/files/ \
ftp://ftp.inet.no/pub/socks/
-MAINTAINER= ports@FreeBSD.org
+MAINTAINER= danfe@FreeBSD.org
COMMENT= Circuit-level firewall/proxy
WWW= https://www.inet.no/dante/
@@ -16,8 +16,9 @@ LIB_DEPENDS= libminiupnpc.so:net/miniupnpc \
CONFLICTS= socks5
-USES= autoreconf libtool localbase
+USES= libtool localbase
GNU_CONFIGURE= yes
+GNU_CONFIGURE_MANPREFIX= ${PREFIX}/share
CONFIGURE_ARGS= --with-socks-conf=${PREFIX}/etc/socks.conf \
--with-sockd-conf=${PREFIX}/etc/sockd.conf
INSTALL_TARGET= install-strip
@@ -28,23 +29,25 @@ USE_RC_SUBR= sockd
OPTIONS_DEFINE= DOCS EXAMPLES
post-install:
- ${INSTALL_DATA} ${WRKSRC}/example/socks.conf ${STAGEDIR}${PREFIX}/etc/socks.conf.sample
- ${INSTALL_DATA} ${WRKSRC}/example/sockd.conf ${STAGEDIR}${PREFIX}/etc/sockd.conf.sample
+.for x in s d
+ ${INSTALL_DATA} ${WRKSRC}/example/sock${x}.conf \
+ ${STAGEDIR}${PREFIX}/etc/sock${x}.conf.sample
+.endfor
post-install-EXAMPLES-on:
@${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
- ${INSTALL_DATA} ${WRKSRC}/example/sockd-basic.conf ${STAGEDIR}${EXAMPLESDIR}
- ${INSTALL_DATA} ${WRKSRC}/example/sockd-chaining.conf ${STAGEDIR}${EXAMPLESDIR}
- ${INSTALL_DATA} ${WRKSRC}/example/socks-simple-withoutnameserver.conf ${STAGEDIR}${EXAMPLESDIR}
- ${INSTALL_DATA} ${WRKSRC}/example/socks-simple.conf ${STAGEDIR}${EXAMPLESDIR}
+ ${INSTALL_DATA} ${WRKSRC}/example/sockd-basic.conf \
+ ${WRKSRC}/example/sockd-chaining.conf \
+ ${WRKSRC}/example/socks-simple-withoutnameserver.conf \
+ ${WRKSRC}/example/socks-simple.conf ${STAGEDIR}${EXAMPLESDIR}
post-install-DOCS-on:
- @${MKDIR} ${STAGEDIR}${DOCSDIR}
@${MKDIR} ${STAGEDIR}${DOCSDIR}/contrib
- ${INSTALL_DATA} ${WRKSRC}/doc/README* ${STAGEDIR}${DOCSDIR}
- ${INSTALL_DATA} ${WRKSRC}/doc/rfc* ${STAGEDIR}${DOCSDIR}
- ${INSTALL_DATA} ${WRKSRC}/doc/SOCKS4*.protocol ${STAGEDIR}${DOCSDIR}
- ${INSTALL_DATA} ${WRKSRC}/UPGRADE ${STAGEDIR}${DOCSDIR}
- ${INSTALL_DATA} ${WRKSRC}/contrib/sockd-stat.awk ${STAGEDIR}${DOCSDIR}/contrib/sockd-stat.awk
+ ${INSTALL_DATA} ${WRKSRC}/doc/README* \
+ ${WRKSRC}/doc/rfc* \
+ ${WRKSRC}/doc/SOCKS4*.protocol \
+ ${WRKSRC}/UPGRADE ${STAGEDIR}${DOCSDIR}
+ ${INSTALL_DATA} ${WRKSRC}/contrib/sockd-stat.awk \
+ ${STAGEDIR}${DOCSDIR}/contrib
.include <bsd.port.mk>
diff --git a/net/dante/files/patch-acinclude.m4 b/net/dante/files/patch-acinclude.m4
deleted file mode 100644
index 771468ccefc0..000000000000
--- a/net/dante/files/patch-acinclude.m4
+++ /dev/null
@@ -1,276 +0,0 @@
---- acinclude.m4.orig 2023-07-27 14:17:06 UTC
-+++ acinclude.m4
-@@ -437,270 +437,10 @@ unset pipeside
- #This little hack tries to make an educated guess as to what is the
- #case on this particular system.
- AC_MSG_CHECKING(read/send-side pipe system)
--AC_TRY_RUN([
--#include <sys/types.h>
--#include <sys/socket.h>
-+#This test is known to fail on the FreeBSD's official packaging
-+#machine. Set it to recvbased as FreeBSD is known to be.
-
--#include <assert.h>
--#include <stdio.h>
--#include <stdlib.h>
--#include <string.h>
--#include <unistd.h>
--#include <fcntl.h>
--#include <errno.h>
--
--#ifndef MIN
--#define MIN(a,b) ((a) < (b) ? (a) : (b))
--#endif /* !MIN */
--
--#if NEED_AF_LOCAL
--#define AF_LOCAL AF_UNIX
--#endif /* NEED_AF_LOCAL */
--
--#define PACKETSIZE (1024)
--
--#define PADBYTES (sizeof(short) * (64))
--/*
-- * Just a wild guess. Dante uses sizeof(long).
-- */
--
--#define SEND_PIPE (0)
--#define RECV_PIPE (1)
--
--#define EXIT_OK (0) /* type successfully determined */
--#define EXIT_UNKNOWN (1) /* error: unable to determine type */
--
--static void
--setsockets(const int doreverse, const size_t packetsize,
-- const int s, const int r,
-- int *sndbuf, int *sndbuf_set,
-- int *rcvbuf, int *rcvbuf_set);
--
--static size_t
--sendtest(const int s, const char *buf, const size_t buflen);
--
--void
--reswrite(const char *res);
--
--int
--main(void)
--{
-- size_t sent, packetcount;
-- int sndbuf, sndbuf_set, rcvbuf, rcvbuf_set;
-- char buf[PACKETSIZE];
-- int datapipev[2];
--
-- if (socketpair(AF_LOCAL, SOCK_DGRAM, 0, datapipev) != 0) {
-- perror("socketpair()");
-- exit(EXIT_UNKNOWN);
-- }
--
-- setsockets(0,
-- PACKETSIZE,
-- datapipev[SEND_PIPE],
-- datapipev[RECV_PIPE],
-- &sndbuf, &sndbuf_set,
-- &rcvbuf, &rcvbuf_set);
--
-- packetcount = MIN(sndbuf, sndbuf_set) / (PACKETSIZE + PADBYTES);
--
-- fprintf(stderr,
-- "Requested sndbuf to be %d, is %d. "
-- "Requested rcvbuf to be %d, is %d.\n"
-- "Calculated packetcount is %lu\n",
-- sndbuf, sndbuf_set,
-- rcvbuf, rcvbuf_set,
-- (unsigned long)packetcount);
--
-- sent = sendtest(datapipev[SEND_PIPE], buf, PACKETSIZE) / PACKETSIZE;
--
-- if (sent >= packetcount) {
-- fprintf(stderr, "status determined by send-side\n");
-- reswrite("sendbased");
-- exit(EXIT_OK);
-- }
--
-- /*
-- * Try the reverse. Perhaps this system wants a large rcvbuf rather than
-- * a large sndbuf.
-- */
-- close(datapipev[SEND_PIPE]);
-- close(datapipev[RECV_PIPE]);
--
-- if (socketpair(AF_LOCAL, SOCK_DGRAM, 0, datapipev) != 0) {
-- perror("socketpair()");
-- exit(EXIT_UNKNOWN);
-- }
--
-- setsockets(1,
-- PACKETSIZE,
-- datapipev[SEND_PIPE],
-- datapipev[RECV_PIPE],
-- &sndbuf, &sndbuf_set,
-- &rcvbuf, &rcvbuf_set);
--
-- packetcount = MIN(rcvbuf, rcvbuf_set) / (PACKETSIZE + PADBYTES);
--
-- fprintf(stderr,
-- "Requested sndbuf to be %d, is %d. "
-- "Requested rcvbuf to be %d, is %d.\n"
-- "Calculated packetcount is %lu\n",
-- sndbuf, sndbuf_set,
-- rcvbuf, rcvbuf_set,
-- (unsigned long)packetcount);
--
-- sent = sendtest(datapipev[SEND_PIPE], buf, PACKETSIZE) / PACKETSIZE;
--
-- if (sent >= packetcount) {
-- fprintf(stderr, "status determined by read-side\n");
-- reswrite("recvbased");
-- exit(EXIT_OK);
-- }
--
-- fprintf(stderr, "status is unknown\n");
-- return EXIT_UNKNOWN;
--}
--
--static void
--setsockets(doreverse, packetsize, s, r, sndbuf, sndbuf_set, rcvbuf, rcvbuf_set)
-- const int doreverse;
-- const size_t packetsize;
-- const int s;
-- const int r;
-- int *sndbuf, *sndbuf_set;
-- int *rcvbuf, *rcvbuf_set;
--{
-- socklen_t len;
-- int p;
--
-- if ((p = fcntl(s, F_GETFL, 0)) == -1
-- || fcntl(s, F_SETFL, p | O_NONBLOCK) == -1
-- || fcntl(r, F_SETFL, p | O_NONBLOCK) == -1) {
-- perror("fcntl(F_SETFL/F_GETFL, O_NONBLOCK) failed");
-- exit(EXIT_UNKNOWN);
-- }
--
-- len = sizeof(*sndbuf_set);
--
-- if (doreverse) {
-- *sndbuf = packetsize + PADBYTES;
--
-- if (setsockopt(s, SOL_SOCKET, SO_SNDBUF, sndbuf, sizeof(*sndbuf)) != 0) {
-- perror("setsockopt(SO_SNDBUF)");
-- exit(EXIT_UNKNOWN);
-- }
--
-- if (getsockopt(s, SOL_SOCKET, SO_SNDBUF, sndbuf_set, &len) != 0) {
-- perror("getsockopt(SO_SNDBUF)");
-- exit(EXIT_UNKNOWN);
-- }
--
-- *rcvbuf = *sndbuf_set * 10;
-- if (setsockopt(r, SOL_SOCKET, SO_RCVBUF, rcvbuf, sizeof(*rcvbuf)) != 0) {
-- perror("setsockopt(SO_RCVBUF)");
-- exit(EXIT_UNKNOWN);
-- }
-- }
-- else {
-- *rcvbuf = packetsize + PADBYTES;
--
-- if (setsockopt(r, SOL_SOCKET, SO_RCVBUF, rcvbuf, sizeof(*rcvbuf)) != 0) {
-- perror("setsockopt(SO_RCVBUF)");
-- exit(EXIT_UNKNOWN);
-- }
--
-- if (getsockopt(r, SOL_SOCKET, SO_RCVBUF, rcvbuf_set, &len) != 0) {
-- perror("getsockopt(SO_RCVBUF)");
-- exit(EXIT_UNKNOWN);
-- }
--
-- *sndbuf = *rcvbuf_set * 10;
-- if (setsockopt(s, SOL_SOCKET, SO_SNDBUF, sndbuf, sizeof(*sndbuf)) != 0) {
-- perror("setsockopt(SO_SNDBUF)");
-- exit(EXIT_UNKNOWN);
-- }
-- }
--
-- if (getsockopt(s, SOL_SOCKET, SO_SNDBUF, sndbuf_set, &len) != 0
-- || getsockopt(r, SOL_SOCKET, SO_RCVBUF, rcvbuf_set, &len) != 0) {
-- perror("getsockopt(SO_SNDBUF/SO_RCVBUF)");
-- exit(EXIT_UNKNOWN);
-- }
--
-- fprintf(stderr, "sndbuf is %lu, rcvbuf is %lu\n",
-- (unsigned long)*sndbuf_set, (unsigned long)*rcvbuf_set);
--
-- if (doreverse) {
-- if (*rcvbuf_set < *rcvbuf) {
-- fprintf(stderr, "failed to set rcvbuf to %lu. Is %lu\n",
-- (unsigned long)*rcvbuf, (unsigned long)*rcvbuf_set);
-- exit(EXIT_UNKNOWN);
-- }
-- }
-- else {
-- if (*sndbuf_set < *sndbuf) {
-- fprintf(stderr, "failed to set sndbuf to %lu (is %lu)\n",
-- (unsigned long)*sndbuf, (unsigned long)*sndbuf_set);
-- exit(EXIT_UNKNOWN);
-- }
-- }
--}
--
--static size_t
--sendtest(s, buf, buflen)
-- const int s;
-- const char *buf;
-- const size_t buflen;
--{
-- ssize_t rc;
-- size_t sent;
-- int i;
--
-- i = 1;
-- sent = 0;
-- errno = 0;
--
-- while (1) {
-- if ((rc = write(s, buf, buflen)) == -1)
-- break;
-- else {
-- assert(rc == (ssize_t)buflen);
--
-- ++i;
-- sent += rc;
-- }
-- }
--
-- fprintf(stderr,
-- "failed sending packet #%d, sent %ld/%ld. "
-- "Total bytes sent: %lu. Error on last packet: %s\n",
-- i,
-- (long)rc,
-- (unsigned long)buflen,
-- (unsigned long)sent,
-- strerror(errno));
--
-- return sent;
--}
--
--void
--reswrite(res)
-- const char *res;
--{
-- FILE *fp;
-- if ((fp = fopen("conftest.out", "w")) == NULL) {
-- perror("fopen");
-- exit(1);
-- }
-- fprintf(fp, "%s\n", res);
-- fclose(fp);
--}], [pipeside=`cat conftest.out`
-- AC_MSG_RESULT([$pipeside])
--], [AC_MSG_RESULT(unknown)],
-- [dnl XXX assume no when cross-compiling
-- AC_MSG_RESULT(cross-compiling, assuming unknown)])
--
--case $pipeside in
-+case "recvbased" in
- recvbased)
- AC_DEFINE(HAVE_PIPEBUFFER_RECV_BASED, 1, [platform pipe behavior])
- ;;
diff --git a/net/dante/pkg-plist b/net/dante/pkg-plist
index 5d5e703139d2..009b96a3336c 100644
--- a/net/dante/pkg-plist
+++ b/net/dante/pkg-plist
@@ -8,10 +8,6 @@ lib/libsocks.so
lib/libsocks.so.0
lib/libsocks.so.0.1.1
sbin/sockd
-man/man1/socksify.1.gz
-man/man5/sockd.conf.5.gz
-man/man5/socks.conf.5.gz
-man/man8/sockd.8.gz
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/sockd-basic.conf
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/sockd-chaining.conf
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/socks-simple-withoutnameserver.conf
@@ -26,3 +22,7 @@ man/man8/sockd.8.gz
%%PORTDOCS%%%%DOCSDIR%%/rfc1928.txt
%%PORTDOCS%%%%DOCSDIR%%/rfc1929.txt
%%PORTDOCS%%%%DOCSDIR%%/rfc1961.txt
+share/man/man1/socksify.1.gz
+share/man/man5/sockd.conf.5.gz
+share/man/man5/socks.conf.5.gz
+share/man/man8/sockd.8.gz