aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/ns.hrl1
-rw-r--r--src/ejabberd_auth_external.erl4
-rw-r--r--src/ejabberd_receiver.erl2
-rw-r--r--src/mod_mam.erl26
-rwxr-xr-xtools/joincluster6
-rwxr-xr-xtools/leavecluster6
6 files changed, 31 insertions, 14 deletions
diff --git a/include/ns.hrl b/include/ns.hrl
index 0685ae65c..85cf762ef 100644
--- a/include/ns.hrl
+++ b/include/ns.hrl
@@ -144,6 +144,7 @@
-define(NS_MAM_TMP, <<"urn:xmpp:mam:tmp">>).
-define(NS_MAM_0, <<"urn:xmpp:mam:0">>).
-define(NS_MAM_1, <<"urn:xmpp:mam:1">>).
+-define(NS_SID_0, <<"urn:xmpp:sid:0">>).
-define(NS_PING, <<"urn:xmpp:ping">>).
-define(NS_CARBONS_2, <<"urn:xmpp:carbons:2">>).
-define(NS_CARBONS_1, <<"urn:xmpp:carbons:1">>).
diff --git a/src/ejabberd_auth_external.erl b/src/ejabberd_auth_external.erl
index 9dcf3410f..4d11507ee 100644
--- a/src/ejabberd_auth_external.erl
+++ b/src/ejabberd_auth_external.erl
@@ -311,7 +311,9 @@ get_mod_last_configured(Server) ->
end.
is_configured(Host, Module) ->
- gen_mod:is_loaded(Host, Module).
+ Os = ejabberd_config:get_local_option({modules, Host},
+ fun(M) when is_list(M) -> M end),
+ lists:keymember(Module, 1, Os).
opt_type(extauth_cache) ->
fun (false) -> undefined;
diff --git a/src/ejabberd_receiver.erl b/src/ejabberd_receiver.erl
index 3f8f979dc..9652e5268 100644
--- a/src/ejabberd_receiver.erl
+++ b/src/ejabberd_receiver.erl
@@ -250,7 +250,7 @@ handle_info({Tag, _TCPSocket, Data},
?HIBERNATE_TIMEOUT};
{error, Reason} ->
if is_binary(Reason) ->
- ?ERROR_MSG("TLS error = ~s", [Reason]);
+ ?DEBUG("TLS error = ~s", [Reason]);
true ->
ok
end,
diff --git a/src/mod_mam.erl b/src/mod_mam.erl
index cd9dd7e40..3e3e0873d 100644
--- a/src/mod_mam.erl
+++ b/src/mod_mam.erl
@@ -169,7 +169,11 @@ user_receive_packet(Pkt, C2SState, JID, Peer, _To) ->
attrs = [{<<"by">>, LServer},
{<<"xmlns">>, ?NS_MAM_TMP},
{<<"id">>, ID}]},
- NewEls = [Archived|NewPkt#xmlel.children],
+ StanzaID = #xmlel{name = <<"stanza-id">>,
+ attrs = [{<<"by">>, LServer},
+ {<<"xmlns">>, ?NS_SID_0},
+ {<<"id">>, ID}]},
+ NewEls = [Archived, StanzaID|NewPkt#xmlel.children],
NewPkt#xmlel{children = NewEls};
_ ->
NewPkt
@@ -194,9 +198,19 @@ user_send_packet(Pkt, C2SState, JID, Peer) ->
muc_filter_message(Pkt, #state{config = Config} = MUCState,
RoomJID, From, FromNick) ->
if Config#config.mam ->
- NewPkt = strip_my_archived_tag(Pkt, MUCState#state.server_host),
- store_muc(MUCState, NewPkt, RoomJID, From, FromNick),
- NewPkt;
+ By = jlib:jid_to_string(RoomJID),
+ NewPkt = strip_my_archived_tag(Pkt, By),
+ case store_muc(MUCState, NewPkt, RoomJID, From, FromNick) of
+ {ok, ID} ->
+ StanzaID = #xmlel{name = <<"stanza-id">>,
+ attrs = [{<<"by">>, By},
+ {<<"xmlns">>, ?NS_SID_0},
+ {<<"id">>, ID}]},
+ NewEls = [StanzaID|NewPkt#xmlel.children],
+ NewPkt#xmlel{children = NewEls};
+ _ ->
+ NewPkt
+ end;
true ->
Pkt
end.
@@ -345,8 +359,8 @@ should_archive(#xmlel{}) ->
strip_my_archived_tag(Pkt, LServer) ->
NewEls = lists:filter(
- fun(#xmlel{name = <<"archived">>,
- attrs = Attrs}) ->
+ fun(#xmlel{name = Tag, attrs = Attrs})
+ when Tag == <<"archived">>; Tag == <<"stanza-id">> ->
case catch jlib:nameprep(
xml:get_attr_s(
<<"by">>, Attrs)) of
diff --git a/tools/joincluster b/tools/joincluster
index 99b96bdb3..7db639930 100755
--- a/tools/joincluster
+++ b/tools/joincluster
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/bin/sh
# Add the current ejabberd node in a cluster
@@ -15,7 +15,7 @@
# 30 : network issue
# 31 : node names incompatibility
-function error
+error()
{
echo "Error: $1" >&2
exit $2
@@ -67,7 +67,7 @@ CTL=$(which ejabberdctl)
echo "Using commands:"
[ -x "$CTL" ] && echo $CTL || error "can't find ejabberdctl" 10
-. $CTL stop 2>/dev/null >/dev/null
+exec $CTL stop 2>/dev/null >/dev/null
ERLC=${ERL}c
[ -x $ERL ] && echo $ERL || error "can't find erl" 11
diff --git a/tools/leavecluster b/tools/leavecluster
index 688b6032b..736020446 100755
--- a/tools/leavecluster
+++ b/tools/leavecluster
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/bin/sh
# Remove the current ejabberd node in a cluster
@@ -11,7 +11,7 @@
# 12 : erlc not found
# 22 : temporary dir can not be created
-function error
+error()
{
echo "Error: $1" >&2
exit $2
@@ -45,7 +45,7 @@ CTL=$(which ejabberdctl)
echo "Using commands:"
[ -x "$CTL" ] && echo $CTL || error "can't find ejabberdctl" 10
-. $CTL stop 2>/dev/null >/dev/null
+exec $CTL stop 2>/dev/null >/dev/null
ERLC=${ERL}c
[ -x $ERL ] && echo $ERL || error "can't find erl" 11