diff options
-rw-r--r-- | include/ns.hrl | 1 | ||||
-rw-r--r-- | src/ejabberd_auth_external.erl | 4 | ||||
-rw-r--r-- | src/ejabberd_receiver.erl | 2 | ||||
-rw-r--r-- | src/mod_mam.erl | 26 | ||||
-rwxr-xr-x | tools/joincluster | 6 | ||||
-rwxr-xr-x | tools/leavecluster | 6 |
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 |