Hi,

attached diff adds an rc script for net/ejabberd.

note that on ejabberd stop, the epmd name service daemon, that automatically
gets started when starting ejabberd, keeps running. However, the main ejabberd
process gets stopped.

I tried to kill this epmd in rc_stop, but then I recognized, that after it 
calls 
rc_stop, rc_check is called in order to make sure the daemon is indeed stopped.
However, running ejabberdctl again in the rc_check, restarted the just 
killed epmd :(

the ejabberd processes look like this when they are running:

ps auxwww | grep ejabberd 
_ejabberd 28013  0.0  0.0   440   980 ??  S      3:53PM    0:00.19 
/usr/local/lib/erlang/erts-5.9.2/bin/epmd -daemon
_ejabberd 12207  0.0  2.7 71892 55836 ??  I      4:09PM    0:04.35 
/usr/local/lib/erlang/erts-5.9.2/bin/beam.smp -P 250000 -- -root 
/usr/local/lib/erlang -progname erl -- -home /var/db/ejabberd -- -sname 
ejabberd@localhost -noshell -noinput -noshell -noinput -pa 
/usr/local/lib/ejabberd/ebin -mnesia dir "/var/db/ejabberd/ejabberd" -kernel 
inet_dist_use_interface {127,0,0,1} -s ejabberd -sasl sasl_error_logger 
{file,"/var/log/ejabberd/erlang.log"} -smp auto start  start 
_ejabberd 15360  0.0  0.1   680  1128 ??  I      4:09PM    0:00.00 inet_gethost 
4
_ejabberd    47  0.0  0.1   604  1308 ??  Is     4:09PM    0:00.01 inet_gethost 
4

I specify daemon_flags, "--node ejabberd@localhost" that translate into the
--sname ejabberd@localhost parameter seen above.

so just grepping for the process in rc_check is not that sufficient, since
it might find instances running, with wrong parameters :(

Don't know if there is a better way how to also kill the epmd. 

Hoping on input/ideas, how to get rid of the epmd on rc_stop too, or else 
if the above could be considered as OK?

cheers,
Sebastian


Index: Makefile
===================================================================
RCS file: /cvs/ports/net/ejabberd/Makefile,v
retrieving revision 1.33
diff -u -r1.33 Makefile
--- Makefile    27 Oct 2014 15:44:20 -0000      1.33
+++ Makefile    9 Dec 2014 14:58:43 -0000
@@ -4,7 +4,7 @@
 
 V=                     2.1.12
 DISTNAME=              ejabberd-$V
-REVISION=              1
+REVISION=              2
 
 CATEGORIES=            net
 
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/net/ejabberd/pkg/PLIST,v
retrieving revision 1.14
diff -u -r1.14 PLIST
--- pkg/PLIST   24 Jan 2014 19:05:29 -0000      1.14
+++ pkg/PLIST   9 Dec 2014 14:58:43 -0000
@@ -275,3 +275,7 @@
 @sample /var/log/ejabberd/
 @sample /var/db/ejabberd/
 @sample /var/db/ejabberd/ejabberd/
+@mode
+@owner
+@group
+@rcscript ${RCDIR}/ejabberd
Index: pkg/ejabberd.rc
===================================================================
RCS file: pkg/ejabberd.rc
diff -N pkg/ejabberd.rc
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ pkg/ejabberd.rc     9 Dec 2014 14:58:43 -0000
@@ -0,0 +1,25 @@
+#!/bin/sh
+#
+# $OpenBSD$
+
+daemon="${TRUEPREFIX}/sbin/ejabberdctl"
+daemon_user="_ejabberd"
+
+. /etc/rc.d/rc.subr
+
+rc_start() {
+  ${daemon} ${daemon_flags} start 2>>/dev/null >>/dev/null
+}
+
+rc_stop() {
+  ${daemon} ${daemon_flags} stop 2>>/dev/null >>/dev/null
+
+}
+
+rc_check() {
+  ${daemon} ${daemon_flags} status 2>>/dev/null >>/dev/null
+}
+
+rc_reload=NO
+
+rc_cmd $1



Reply via email to