]> granicus.if.org Git - ejabberd/commitdiff
Check node name is available before starting ejabberd (EJAB-1572)
authorBadlop <badlop@process-one.net>
Fri, 8 Jun 2012 15:33:21 +0000 (17:33 +0200)
committerBadlop <badlop@process-one.net>
Fri, 8 Jun 2012 15:33:21 +0000 (17:33 +0200)
src/ejabberdctl.template

index 0960f9affa45c7010e7f97015ba8344a9ebebaf9..461ec1a6ffbedb289bcc10e336d1cf811b75fead 100644 (file)
@@ -143,6 +143,9 @@ export EXEC_CMD
 # start server
 start ()
 {
+    checknodenameusage
+    [ "$?" -eq 0 ] && echo "\nERROR: The node '$ERLANG_NODE' is already running." && return 1
+
     $EXEC_CMD "$ERL \
       $NAME $ERLANG_NODE \
       -noinput -detached \
@@ -189,6 +192,9 @@ debug ()
 # start interactive server
 live ()
 {
+    checknodenameusage
+    [ "$?" -eq 0 ] && echo "\nERROR: The node '$ERLANG_NODE' is already running." && return 1
+
     echo "--------------------------------------------------------------------"
     echo ""
     echo "IMPORTANT: ejabberd is going to start in LIVE (interactive) mode."
@@ -362,6 +368,15 @@ wait_for_status()
     return $status
 }
 
+# check node name is used or not
+# $? --> 0=alreadyused 1=available
+checknodenameusage ()
+{
+    $EXEC_CMD "$ERL \
+      $NAME $ERLANG_NODE \
+       -s erlang halt | grep -c duplicate_name > /dev/null "
+}
+
 case $ARGS in
     ' start') start;;
     ' debug') debug;;