summaryrefslogtreecommitdiff
path: root/src/mod_echo.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-02-16 11:00:26 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-02-16 11:10:24 +0300
commit8b2d3084986defd6045a0c02706415e0e7ae4b3f (patch)
tree419b64fc2d07646d221fdfa2f526e057fb34c6d2 /src/mod_echo.erl
parentMerge branch 'master' of github.com:processone/ejabberd (diff)
Change routing API
Now 'From' and 'To' arguments must be omitted in functions and structures related to routing. The commit deprecates the following functions: ejabberd_router:route/3 in favor of ejabberd_router:route/1 ejabberd_router:route_error/4 in favor of ejabberd_router:route_error/2 ejabberd_local:route_iq/4 in favor of ejabberd_local:route_iq/2 ejabberd_local:route_iq/5 in favor of ejabberd_local:route_iq/3 The format of {route, From, To, Packet} is changed in favor of {route, Packet}
Diffstat (limited to 'src/mod_echo.erl')
-rw-r--r--src/mod_echo.erl18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/mod_echo.erl b/src/mod_echo.erl
index 7c8722fc..5db5d49c 100644
--- a/src/mod_echo.erl
+++ b/src/mod_echo.erl
@@ -104,17 +104,20 @@ handle_cast(_Msg, State) -> {noreply, State}.
%% {stop, Reason, State}
%% Description: Handling all non call/cast messages
%%--------------------------------------------------------------------
-handle_info({route, From, To, Packet}, State) ->
+handle_info({route, Packet}, State) ->
+ From = xmpp:get_from(Packet),
+ To = xmpp:get_to(Packet),
Packet2 = case From#jid.user of
<<"">> ->
Lang = xmpp:get_lang(Packet),
Txt = <<"User part of JID in 'from' is empty">>,
xmpp:make_error(
Packet, xmpp:err_bad_request(Txt, Lang));
- _ -> Packet
+ _ ->
+ xmpp:set_from_to(Packet, To, From)
end,
do_client_version(disabled, To, From),
- ejabberd_router:route(To, From, Packet2),
+ ejabberd_router:route(Packet2),
{noreply, State};
handle_info(_Info, State) -> {noreply, State}.
@@ -166,13 +169,14 @@ do_client_version(enabled, From, To) ->
From2 = From#jid{resource = Random_resource,
lresource = Random_resource},
ID = randoms:get_string(),
- Packet = #iq{from = From, to = To, type = get,
+ Packet = #iq{from = From2, to = To, type = get,
id = randoms:get_string(),
sub_els = [#version{}]},
- ejabberd_router:route(From2, To, Packet),
+ ejabberd_router:route(Packet),
receive
- {route, To, From2,
- #iq{id = ID, type = result, sub_els = [#version{} = V]}} ->
+ {route,
+ #iq{to = To, from = From2,
+ id = ID, type = result, sub_els = [#version{} = V]}} ->
?INFO_MSG("Version of the client ~s:~n~s",
[jid:to_string(To), xmpp:pp(V)])
after 5000 -> % Timeout in miliseconds: 5 seconds