summaryrefslogtreecommitdiff
path: root/scripts/rabbitmq-env
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/rabbitmq-env')
-rw-r--r--scripts/rabbitmq-env16
1 files changed, 12 insertions, 4 deletions
diff --git a/scripts/rabbitmq-env b/scripts/rabbitmq-env
index 0014643260..c46667097f 100644
--- a/scripts/rabbitmq-env
+++ b/scripts/rabbitmq-env
@@ -93,14 +93,22 @@ fi
[ "x" = "x$RABBITMQ_USE_LONGNAME" ] && RABBITMQ_USE_LONGNAME=${USE_LONGNAME}
if [ "xtrue" = "x$RABBITMQ_USE_LONGNAME" ] ; then
RABBITMQ_NAME_TYPE=-name
- [ "x" = "x$HOSTNAME" ] && HOSTNAME=`env hostname -f`
- [ "x" = "x$NODENAME" ] && NODENAME=rabbit@${HOSTNAME}
+ NAMETYPE=longnames
else
RABBITMQ_NAME_TYPE=-sname
- [ "x" = "x$HOSTNAME" ] && HOSTNAME=`env hostname`
- [ "x" = "x$NODENAME" ] && NODENAME=rabbit@${HOSTNAME%%.*}
+ NAMETYPE=shortnames
fi
+# We use Erlang to query the local hostname because hostname(1) and
+# Erlang may return different results.
+[ "x" = "x$NODENAME" ] && NODENAME=rabbit@$( \
+ erl -A0 -noinput -boot start_clean -eval \
+ 'net_kernel:start([list_to_atom("rabbit-gethostname-" ++ os:getpid()), '$NAMETYPE']),
+ [_, H] = string:tokens(atom_to_list(node()), "@"),
+ io:format("~s~n", [H]),
+ halt().')
+unset NAMETYPE
+
##--- Set environment vars RABBITMQ_<var_name> to defaults if not set
rmq_normalize_path() {