Skip to content
Snippets Groups Projects
Commit 3c7b8fd3 authored by Marcin Gryszkalis's avatar Marcin Gryszkalis Committed by Renato Botelho
Browse files

net/rinetd: update to new upstream and 0.73

While here, pet portlint and portclippy.

PR:		274331
parent d2524927
No related branches found
No related tags found
No related merge requests found
PORTNAME= rinetd
PORTVERSION= 0.62
PORTREVISION= 4
PORTVERSION= 0.73
DISTVERSIONPREFIX= v
CATEGORIES= net
MASTER_SITES= http://www.boutell.com/rinetd/http/ \
GENTOO
DISTNAME= rinetd
MAINTAINER= garga@FreeBSD.org
COMMENT= Simple TCP port redirector
WWW= https://github.com/samhocevar/rinetd
LICENSE= GPLv2
OPTIONS_DEFINE= DOCS
WRKSRC= ${WRKDIR}/rinetd-${PORTVERSION}
USES= cpe dos2unix autoreconf
USE_GITHUB= yes
GH_ACCOUNT= samhocevar
GH_TAGNAME= d4e0a60
USE_RC_SUBR= rinetd
USES= cpe dos2unix
GNU_CONFIGURE= yes
PORTDOCS= index.html
PLIST_FILES= sbin/rinetd \
man/man8/rinetd.8.gz
USE_RC_SUBR= rinetd
post-extract:
@${MV} ${WRKDIR}/rinetd ${WRKSRC}
OPTIONS_DEFINE= DOCS
post-patch:
@${REINPLACE_CMD} -E "s,(/etc/rinetd.conf),${PREFIX}\1," \
${WRKSRC}/rinetd.[8c]
@${REINPLACE_CMD} -E "s,/usr(/sbin/rinetd),${PREFIX}\1," \
@${REINPLACE_CMD} -E \
-e "s,(/etc/rinetd.conf),${PREFIX}\1," \
-e "s,/usr(/sbin/rinetd),${PREFIX}\1," \
${WRKSRC}/rinetd.8
@${REINPLACE_CMD} -e "s,cc ,${CC} ,g" ${WRKSRC}/Makefile
@${REINPLACE_CMD} -E "s,(/etc/rinetd.conf),${PREFIX}\1," \
${WRKSRC}/src/rinetd.h
post-install:
${MV} ${STAGEDIR}${PREFIX}/etc/rinetd.conf \
${STAGEDIR}${PREFIX}/etc/rinetd.conf.sample
post-install-DOCS-on:
${MKDIR} ${STAGEDIR}${DOCSDIR}
.for f in ${PORTDOCS}
${INSTALL_DATA} ${WRKSRC}/${PORTDOCS} ${STAGEDIR}${DOCSDIR}
......
SHA256 (rinetd.tar.gz) = 0c68d27c5bd4b16ce4f58a6db514dd6ff37b2604a88b02c1dfcdc00fc1059898
SIZE (rinetd.tar.gz) = 115541
TIMESTAMP = 1696686326
SHA256 (samhocevar-rinetd-v0.73-d4e0a60_GH0.tar.gz) = 76eef19e0af8459c9434ac8ac0b58edac1bba353f5aaceb1d5f971fb3f6a3016
SIZE (samhocevar-rinetd-v0.73-d4e0a60_GH0.tar.gz) = 45544
--- ../rinetd.orig/Makefile Mon Mar 1 13:41:50 1999
+++ Makefile Sat Jun 12 12:54:48 1999
@@ -1,9 +1,14 @@
-CFLAGS=-DLINUX -g
+CFLAGS+=-I. -DLINUX
-rinetd: rinetd.o match.o
- gcc rinetd.o match.o -o rinetd
+all: rinetd
+
+rinetd: rinetd.o match.o getopt.o
+ ${CC} ${CFLAGS} rinetd.o match.o getopt.o -o rinetd
+
+getopt.o:
+ ${CC} ${CFLAGS} -c getopt.c
install: rinetd
- install -m 700 rinetd /usr/sbin
- install -m 644 rinetd.8 /usr/man/man8
+ install -s -m 755 rinetd ${DESTDIR}${PREFIX}/sbin
+ install -m 644 rinetd.8 ${DESTDIR}${PREFIX}/man/man8
--- rinetd.c.orig Thu Jul 19 22:19:59 2001
+++ rinetd.c Thu Jul 19 22:20:26 2001
@@ -243,6 +243,7 @@
signal(SIGHUP, hup);
#endif /* WIN32 */
signal(SIGTERM, term);
+ setsid();
initArrays();
readConfiguration();
RegisterPID();
@@ -646,6 +646,7 @@
}
}
}
+ fclose(in);
/* Open the log file */
if (logFile) {
fclose(logFile);
--- rinetd.c.orig Mon Apr 14 22:19:23 2003
+++ rinetd.c Tue Oct 4 07:25:42 2005
@@ -12,6 +12,7 @@
#include <netinet/in.h>
#include <getopt.h>
#include <errno.h>
+#include <poll.h>
#define INVALID_SOCKET (-1)
#include <sys/time.h>
#endif /* WIN32 */
@@ -94,6 +95,7 @@
#include "match.h"
SOCKET *seFds = 0;
+static int first_set = 0;
/* In network order, for network purposes */
struct in_addr *seLocalAddrs = 0;
unsigned short *seLocalPorts = 0;
@@ -750,15 +752,82 @@
void openLocalFd(int se, int i);
int getAddress(char *host, struct in_addr *iaddr);
+inline void poll_init_fds(struct pollfd *pfds, int size) {
+ int i;
+
+ memset(pfds, 0, sizeof(struct pollfd) * size);
+ first_set = 1;
+ for(i = 0; i < size; i++)
+ pfds[i].fd = -1;
+}
+
+inline int poll_set_fd(struct pollfd *pfds, int size, int count,
+ int fd, short int ev) {
+#ifdef _NEW_POLL_SET_FD
+ if(first_set) {
+ pfds[count].fd = fd;
+ pfds[count].events |= ev;
+ first_set = 0;
+ return 0;
+ }
+ if(pfds[count].fd != fd && !first_set) {
+ count++;
+ }
+
+ pfds[count].fd = fd;
+ pfds[count].events |= ev;
+
+ return count;
+#else
+ int i;
+
+ for(i = 0; i < size; i++) {
+ if(pfds[i].fd == -1) {
+ pfds[i].fd = fd;
+ pfds[i].events |= ev;
+ count++;
+ break;
+ }
+ if(pfds[i].fd == fd) {
+ pfds[i].events |= ev;
+ break;
+ }
+ }
+
+ return count;
+#endif
+}
+
+int poll_fd_isset(struct pollfd *pfds, int nfds, int fd, short event) {
+ int i;
+
+ for(i = 0; i < nfds; i++) {
+ if(pfds[i].fd == fd)
+ return pfds[i].revents & event;
+ }
+
+ return 0;
+}
+
void selectPass(void) {
int i;
- fd_set readfds, writefds;
- FD_ZERO(&readfds);
- FD_ZERO(&writefds);
+ int nfds = 0;
+ int total = 0;
+ static struct pollfd *pfds = NULL;
+
/* Server sockets */
+ total = seTotal + (coTotal * 2);
+
+ if(!pfds) {
+ pfds = malloc(sizeof(struct pollfd) * total);
+ }
+
+ poll_init_fds(pfds, total);
+
for (i = 0; (i < seTotal); i++) {
if (seFds[i] != INVALID_SOCKET) {
- FD_SET(seFds[i], &readfds);
+ //FD_SET(seFds[i], &readfds)
+ nfds = poll_set_fd(pfds, total, nfds, seFds[i], POLLIN);
}
}
/* Connection sockets */
@@ -768,35 +837,47 @@
}
if (coClosing[i]) {
if (!reClosed[i]) {
- FD_SET(reFds[i], &writefds);
- }
- if (!loClosed[i]) {
- FD_SET(loFds[i], &writefds);
+ //FD_SET(reFds[i], &writefds);
+ nfds = poll_set_fd(pfds, total, nfds,
+ reFds[i], POLLOUT);
}
}
/* Get more input if we have room for it */
if ((!reClosed[i]) && (coInputRPos[i] < bufferSpace)) {
- FD_SET(reFds[i], &readfds);
+ //FD_SET(reFds[i], &readfds);
+ nfds = poll_set_fd(pfds, total, nfds, reFds[i], POLLIN);
}
/* Send more output if we have any */
if ((!reClosed[i]) && (coOutputWPos[i] < coOutputRPos[i])) {
- FD_SET(reFds[i], &writefds);
+ //FD_SET(reFds[i], &writefds);
+ nfds = poll_set_fd(pfds, total, nfds, reFds[i], POLLOUT);
}
+ if (coClosing[i]) {
+ if (!loClosed[i]) {
+ //FD_SET(loFds[i], &writefds);
+ nfds = poll_set_fd(pfds, total, nfds,
+ loFds[i], POLLOUT);
+ }
+ }
/* Accept more output from the local
server if there's room */
if ((!loClosed[i]) && (coOutputRPos[i] < bufferSpace)) {
- FD_SET(loFds[i], &readfds);
+ //FD_SET(loFds[i], &readfds);
+ nfds = poll_set_fd(pfds, total, nfds, loFds[i], POLLIN);
}
/* Send more input to the local server
if we have any */
if ((!loClosed[i]) && (coInputWPos[i] < coInputRPos[i])) {
- FD_SET(loFds[i], &writefds);
+ //FD_SET(loFds[i], &writefds);
+ nfds = poll_set_fd(pfds, total, nfds, loFds[i], POLLOUT);
}
}
- select(maxfd + 1, &readfds, &writefds, 0, 0);
+ //select(maxfd + 1, &readfds, &writefds, 0, 0);
+ poll(pfds, nfds + 1, -1);
for (i = 0; (i < seTotal); i++) {
if (seFds[i] != -1) {
- if (FD_ISSET(seFds[i], &readfds)) {
+ //if (FD_ISSET(seFds[i], &readfds)) {
+ if (poll_fd_isset(pfds, nfds, seFds[i], POLLIN)) {
handleAccept(i);
}
}
@@ -806,22 +887,26 @@
continue;
}
if (!reClosed[i]) {
- if (FD_ISSET(reFds[i], &readfds)) {
+ //if (FD_ISSET(reFds[i], &readfds)) {
+ if (poll_fd_isset(pfds, nfds, reFds[i], POLLIN)) {
handleRemoteRead(i);
}
}
if (!reClosed[i]) {
- if (FD_ISSET(reFds[i], &writefds)) {
+ //if (FD_ISSET(reFds[i], &writefds)) {
+ if (poll_fd_isset(pfds, nfds, reFds[i], POLLOUT)) {
handleRemoteWrite(i);
}
}
if (!loClosed[i]) {
- if (FD_ISSET(loFds[i], &readfds)) {
+ //if (FD_ISSET(loFds[i], &readfds)) {
+ if (poll_fd_isset(pfds, nfds, loFds[i], POLLIN)) {
handleLocalRead(i);
}
}
if (!loClosed[i]) {
- if (FD_ISSET(loFds[i], &writefds)) {
+ //if (FD_ISSET(loFds[i], &writefds)) {
+ if (poll_fd_isset(pfds, nfds, loFds[i], POLLOUT)) {
handleLocalWrite(i);
}
}
--- src/Makefile.am.orig 2023-10-07 16:13:36 UTC
+++ src/Makefile.am
@@ -18,7 +18,7 @@ parse.c: parse.peg
# _DARWIN_C_SOURCE is for NI_MAXHOST on OS X
# _XOPEN_SOURCE is for struct sigaction
# _GNU_SOURCE is for h_errno and gethostbyname-related macros
-___rinetd_CFLAGS = -std=c99 -D_POSIX_C_SOURCE=200809L \
+___rinetd_CFLAGS = -std=c99 \
-D_XOPEN_SOURCE -D_GNU_SOURCE -D_DARWIN_C_SOURCE \
-Wall -Wextra -Wwrite-strings
--- src/rinetd.c.orig 2023-10-07 16:13:36 UTC
+++ src/rinetd.c
@@ -927,7 +927,7 @@ RETSIGTYPE quit(int s)
void registerPID(char const *pid_file_name)
{
-#if defined(__linux__)
+#if defined(__linux__) || defined(__FreeBSD__)
FILE *pid_file = fopen(pid_file_name, "w");
if (pid_file == NULL) {
/* non-fatal, non-Linux may lack /var/run... */
@sample etc/rinetd.conf.sample
sbin/rinetd
man/man8/rinetd.8.gz
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment