Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 21 Feb 2013 07:33:01 -0600
From:      Mark Felder <feld@feld.me>
To:        FreeBSD-gnats-submit@freebsd.org
Cc:        ehaupt@FreeBSD.org
Subject:   ports/176321: [PATCH] net/socat: rc script / daemon changes
Message-ID:  <E1U8WGj-000EtE-3A@feld.me>
Resent-Message-ID: <201302211340.r1LDe3Ap047722@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         176321
>Category:       ports
>Synopsis:       [PATCH] net/socat: rc script / daemon changes
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Thu Feb 21 13:40:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator:     feld
>Release:        FreeBSD 9.1-RELEASE amd64
>Organization:
>Environment:
System: FreeBSD mwi1.coffeenet.org 9.1-RELEASE FreeBSD 9.1-RELEASE #6 r243808: Mon Dec  3 07:51:34
>Description:
Last year when I submitted a patch to make socat properly daemonize I was unaware
of the existence of daemon(8). This patch changes the rc script to 
launch socat using daemon and removes the unnecessary wrapper script.

Removed file(s):
- files/socat_wrapper

Port maintainer (ehaupt@FreeBSD.org) is cc'd.

Generated with FreeBSD Port Tools 0.99_6 (mode: change, diff: suffix)
>How-To-Repeat:
>Fix:

--- socat-1.7.2.1_1.patch begins here ---
diff -ruN --exclude=CVS ../socat.orig/Makefile ./Makefile
--- ../socat.orig/Makefile	2013-01-15 07:46:57.000000000 -0600
+++ ./Makefile	2013-02-21 07:26:49.436309121 -0600
@@ -3,6 +3,7 @@
 
 PORTNAME=	socat
 PORTVERSION=	1.7.2.1
+PORTREVISION=	1
 CATEGORIES=	net ipv6
 MASTER_SITES=	http://www.dest-unreach.org/socat/download/ \
 		CRITICAL
@@ -21,7 +22,7 @@
 PORTSCOUT=	skipv:2.0.0-b2
 
 MAN1=		socat.1
-PLIST_FILES=	bin/filan bin/procan bin/socat sbin/socat_wrapper
+PLIST_FILES=	bin/filan bin/procan bin/socat
 PORTDOCS=	EXAMPLES README SECURITY FAQ
 
 .if ${CC} == clang
@@ -36,7 +37,6 @@
 .for f in filan procan socat
 	${INSTALL_PROGRAM} ${WRKSRC}/${f} ${PREFIX}/bin
 .endfor
-	${INSTALL_SCRIPT} ${FILESDIR}/socat_wrapper ${PREFIX}/sbin
 	${INSTALL_MAN} ${WRKSRC}/doc/${MAN1} ${MAN1PREFIX}/man/man1
 .if ${PORT_OPTIONS:MDOCS}
 	${MKDIR} ${DOCSDIR}
diff -ruN --exclude=CVS ../socat.orig/files/socat.in ./files/socat.in
--- ../socat.orig/files/socat.in	2012-11-17 00:00:21.000000000 -0600
+++ ./files/socat.in	2013-02-21 07:23:42.692312424 -0600
@@ -22,9 +22,13 @@
 
 : ${socat_enable="NO"}
 
-socat_flags="%%PREFIX%%/bin/socat ${socat_flags} &"
-command="%%PREFIX%%/sbin/socat_wrapper"
-command_interpreter="/bin/sh -T"
-pidfile=/var/run/socat_wrapper.pid
+start_cmd="${name}_start"
+pidfile=/var/run/socat.pid
+command="%%PREFIX%%/bin/socat"
+
+socat_start() {
+	echo "Starting ${name}."
+	/usr/sbin/daemon -f -p ${pidfile} ${command} ${socat_flags}
+}
 
 run_rc_command "$1"
diff -ruN --exclude=CVS ../socat.orig/files/socat_wrapper ./files/socat_wrapper
--- ../socat.orig/files/socat_wrapper	2012-11-17 00:00:21.000000000 -0600
+++ ./files/socat_wrapper	1969-12-31 18:00:00.000000000 -0600
@@ -1,91 +0,0 @@
-#!/bin/sh -T
-#
-#-
-# Copyright 2009 Thomas-Martin Seck. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted providing that the following conditions 
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in the
-#    documentation and/or other materials provided with the distribution.
-# 
-# THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-# $FreeBSD: ports/net/socat/files/socat_wrapper,v 1.2 2012/11/17 06:00:21 svnexp Exp $
-#
-# socat_wrapper socat [options]
-#
-# A simple wrapper script for socat (or any other program that does not
-# daemonize itself and logs to stdout).
-# 
-# This wrapper tries to emulate part of the functionality usually supplied by
-# software like daemontools or runit. It can be used by a FreeBSD port rc.d
-# script to start a program that does not daemonize itself and logs to
-# stdout/stderr. It redirects stdout and stderr to logger(1) via a fifo.
-# 
-# Note: We need a shell that can offer us asynchronous trap handling in order
-# to be able to abort the infinite loop from outside. FreeBSD's /bin/sh offers
-# the "-T" switch for this purpose.
-# 
-# TODO: send fd 2 output to never-never land to get rid of "Terminated" when we
-# kill this script but provide a way for errx() to communicate with the outside
-# world via stderr.
-#
-
-errx() {
-	echo "${me}: $@" >&2
-	exit 1
-}
-
-cleanup() {
-	rm -rf ${tmpdir}
-	rm -f ${pidfile}
-}
-
-PATH=/bin:/sbin:/usr/bin:/usr/sbin
-
-me=${0##*/}
-logger=/usr/bin/logger
-daemon_log_facility=daemon.notice
-self_log_facility=daemon.notice
-pidfile=/var/run/${me}.pid
-daemon_name=socat
-daemon_program="$1"
-shift
-
-test -x "${daemon_program}" || errx "cannot execute ${daemon_program}!"
-test -x ${logger} || errx "cannot execute ${logger}!"
-test -f ${pidfile} && errx "${pidfile} is already present -- is another instance of ${me} running?"
-echo $$ >${pidfile} || errx "cannot write to ${pidfile}!"
-tmpdir=`mktemp -d /tmp/${me}.XXXXXXXXXX` || errx "cannot generate tmpdir!"
-
-logfifo=${tmpdir}/fifo
-mkfifo -m 0600 ${logfifo} || errx "cannot generate fifo!"
-
-while true; do
-	trap 'break' 1 2 3 6 9 15
-	${logger} -i -p ${daemon_log_facility} -t ${daemon_name} <${logfifo} &
-	log_pid=$!
-	"${daemon_program}" $@ >${logfifo} 2>&1 &
-	daemon_pid=$!
-	wait ${daemon_pid}
-	${logger} -i -p ${self_log_facility} -t ${me} "${daemon_program} died -- restarting..."
-	sleep 2
-done
-
-kill -TERM ${daemon_pid} 2>/dev/null
-wait
-cleanup
--- socat-1.7.2.1_1.patch ends here ---

>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E1U8WGj-000EtE-3A>