From be27ac53f21f26b0ed48a48c7207c8eea3d0f521 Mon Sep 17 00:00:00 2001
From: Nicolas Thill <nico@openwrt.org>
Date: Mon, 7 Nov 2011 22:58:50 +0000
Subject: [PATCH] package/dropbear: use new service wrapper

SVN-Revision: 28838
---
 package/dropbear/Makefile            |  2 +-
 package/dropbear/files/dropbear.init | 30 +++++++++++++++++-----------
 2 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/package/dropbear/Makefile b/package/dropbear/Makefile
index 5006c94bb3..f0f3cad6dc 100644
--- a/package/dropbear/Makefile
+++ b/package/dropbear/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=dropbear
 PKG_VERSION:=0.53.1
-PKG_RELEASE:=5
+PKG_RELEASE:=6
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:= \
diff --git a/package/dropbear/files/dropbear.init b/package/dropbear/files/dropbear.init
index d06d2d5349..c909d28965 100755
--- a/package/dropbear/files/dropbear.init
+++ b/package/dropbear/files/dropbear.init
@@ -2,10 +2,13 @@
 # Copyright (C) 2006-2010 OpenWrt.org
 # Copyright (C) 2006 Carlos Sobrinho
 
-NAME=dropbear
-PROG=/usr/sbin/dropbear
 START=50
 STOP=50
+
+SERVICE_USE_PID=1
+
+NAME=dropbear
+PROG=/usr/sbin/dropbear
 PIDCOUNT=0
 EXTRA_COMMANDS="killclients"
 EXTRA_HELP="	killclients Kill ${NAME} processes except servers and yourself"
@@ -48,7 +51,8 @@ dropbear_start()
 	PIDCOUNT="$(( ${PIDCOUNT} + 1))"
 
 	# prepare parameters (initialise with pid file)
-	local args="-P /var/run/${NAME}.${PIDCOUNT}.pid"
+	local pid_file="/var/run/${NAME}.${PIDCOUNT}.pid"
+	local args="-P $pid_file"
 	local val
 	# A) password authentication
 	config_get_bool val "${section}" PasswordAuth 1
@@ -80,8 +84,7 @@ dropbear_start()
 
 	# execute program and return its exit code
 	[ "${verbosed}" -ne 0 ] && echo "${initscript}: section ${section} starting ${PROG} ${args}"
-	${PROG} ${args}
-	return $?
+	SERVICE_PID_FILE="$pid_file" service_start ${PROG} ${args}
 }
 
 keygen()
@@ -120,14 +123,17 @@ start()
 
 stop()
 {
-	# killing all server processes
-	local pidfile
-	for pidfile in `ls /var/run/${NAME}.*.pid`
-	 do
-		start-stop-daemon -q -K -s KILL -p "${pidfile}" -n "${NAME}"
-		rm -f "${pidfile}"
+	local pid_file pid_files
+	
+	pid_files=`ls /var/run/${NAME}.*.pid 2>/dev/null`
+	
+	[ -z "$pid_files" ] && return 1
+	
+	for pid_file in $pid_files; do
+		SERVICE_PID_FILE="$pid_file" service_stop ${PROG} && {
+			rm -f ${pid_file}
+		}
 	done
-	[ -z "${pidfile}" ] && echo "${initscript}: no pid files, if you get problems with start then try killclients"
 }
 
 killclients()
-- 
GitLab