diff options
author | Christophe Romain <christophe.romain@process-one.net> | 2014-05-06 13:29:35 +0200 |
---|---|---|
committer | Christophe Romain <christophe.romain@process-one.net> | 2014-05-06 13:29:35 +0200 |
commit | cc1f93d7a0f261841ee937f1084fea92fdb2d185 (patch) | |
tree | 12788c70afbe1658aa3a801738f27c26d6235b92 | |
parent | Fix PEP broadcasting issue (EJAB-1680) (diff) |
Fix PEP broadcasting issue on ODBC (EJAB-1680)
-rw-r--r-- | src/mod_pubsub_odbc.erl | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/src/mod_pubsub_odbc.erl b/src/mod_pubsub_odbc.erl index dad839fd3..45c30a11b 100644 --- a/src/mod_pubsub_odbc.erl +++ b/src/mod_pubsub_odbc.erl @@ -4077,15 +4077,7 @@ broadcast_stanza(Host, _Node, _NodeId, _Type, NodeOptions, SubsByDepth, NotifyTy broadcast_stanza({LUser, LServer, LResource}, Publisher, Node, NodeId, Type, NodeOptions, SubsByDepth, NotifyType, BaseStanza, SHIM) -> broadcast_stanza({LUser, LServer, LResource}, Node, NodeId, Type, NodeOptions, SubsByDepth, NotifyType, BaseStanza, SHIM), %% Handles implicit presence subscriptions - SenderResource = case LResource of - [] -> - case user_resources(LUser, LServer) of - [Resource|_] -> Resource; - _ -> <<>> - end; - _ -> - LResource - end, + SenderResource = user_resource(LUser, LServer, LResource), case ejabberd_sm:get_session_pid(LUser, LServer, SenderResource) of C2SPid when is_pid(C2SPid) -> Stanza = case get_option(NodeOptions, notification_type, headline) of @@ -4096,8 +4088,8 @@ broadcast_stanza({LUser, LServer, LResource}, Publisher, Node, NodeId, Type, Nod %% Also, add "replyto" if entity has presence subscription to the account owner %% See XEP-0163 1.1 section 4.3.1 ejabberd_c2s:broadcast(C2SPid, - {pep_message, binary_to_list(Node)++"+notify"}, - _Sender = jlib:make_jid(LUser, LServer, ""), + {pep_message, <<((Node))/binary, "+notify">>}, + _Sender = jlib:make_jid(LUser, LServer, <<"">>), _StanzaToSend = add_extended_headers(Stanza, _ReplyTo = extended_headers([jlib:jid_to_string(Publisher)]))); _ -> @@ -4162,6 +4154,13 @@ subscribed_nodes_by_jid(NotifyType, SubsByDepth) -> user_resources(User, Server) -> ejabberd_sm:get_user_resources(User, Server). +user_resource(User, Server, <<>>) -> + case user_resources(User, Server) of + [R | _] -> R; + _ -> <<>> + end; +user_resource(_, _, Resource) -> Resource. + %%%%%%% Configuration handling %%<p>There are several reasons why the default node configuration options request might fail:</p> |