aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2012-02-03 17:53:17 +0200
committerAlexey Shchepin <alexey@process-one.net>2012-02-03 17:53:17 +0200
commitecf7b0282e81643ccfcca259e77b9751dcb7f7d4 (patch)
tree24d76a9bd9c17418a07047486da21c0abf8c5e05 /src
parentUse separate timer for C2S_OPEN_TIMEOUT (diff)
parentAdded generic sha:to_hexlist/1 API function to convert sha results from (diff)
Merge branch '2.2.x' of git+ssh://git@gitorious.process-one.net/+ejabberd-developers/ejabberd/maincustomers.git into 2.2.x
Diffstat (limited to 'src')
-rw-r--r--src/mod_caps.erl6
-rw-r--r--src/sha.erl7
2 files changed, 10 insertions, 3 deletions
diff --git a/src/mod_caps.erl b/src/mod_caps.erl
index b98db6ac7..1f89b6cc3 100644
--- a/src/mod_caps.erl
+++ b/src/mod_caps.erl
@@ -168,7 +168,11 @@ user_receive_packet(_DebugFlag,
#jid{lserver = Server}, From, _To,
{xmlelement, "presence", Attrs, Els}) ->
Type = xml:get_attr_s("type", Attrs),
- if Type == ""; Type == "available" ->
+ IsRemote = not lists:member(From#jid.lserver, ?MYHOSTS),
+ %% Local users presence caps are already handled by user_send_packet.
+ %% Otherwise we could send multiple request when broadcasting presence
+ %% to every local subscriber.
+ if IsRemote and ((Type == "") or (Type == "available")) ->
case read_caps(Els) of
nothing ->
ok;
diff --git a/src/sha.erl b/src/sha.erl
index 33a82b889..d98c7848d 100644
--- a/src/sha.erl
+++ b/src/sha.erl
@@ -1,7 +1,7 @@
%%%----------------------------------------------------------------------
%%% File : sha.erl
%%% Author : Alexey Shchepin <alexey@process-one.net>
-%%% Purpose :
+%%% Purpose :
%%% Created : 20 Dec 2002 by Alexey Shchepin <alexey@process-one.net>
%%%
%%%
@@ -28,7 +28,7 @@
-author('alexey@process-one.net').
-export([start/0, sha/1, sha1/1, sha224/1, sha256/1, sha384/1,
- sha512/1]).
+ sha512/1, to_hexlist/1]).
-ifdef(HAVE_MD2).
-export([md2/1]).
@@ -61,6 +61,9 @@ digit_to_xchar(D) ->
sha(Text) ->
Bin = crypto:sha(Text),
+ to_hexlist(Bin).
+
+to_hexlist(Bin) ->
lists:reverse(ints_to_rxstr(binary_to_list(Bin), [])).
ints_to_rxstr([], Res) ->