aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_c2s.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/ejabberd_c2s.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/ejabberd_c2s.erl')
-rw-r--r--src/ejabberd_c2s.erl36
1 files changed, 12 insertions, 24 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl
index 56f66d52c..2262fde29 100644
--- a/src/ejabberd_c2s.erl
+++ b/src/ejabberd_c2s.erl
@@ -187,9 +187,7 @@ open_session(#{user := U, server := S, resource := R,
%%%===================================================================
%%% Hooks
%%%===================================================================
-process_info(#{lserver := LServer} = State,
- {route, From, To, Packet0}) ->
- Packet = xmpp:set_from_to(Packet0, From, To),
+process_info(#{lserver := LServer} = State, {route, Packet}) ->
{Pass, State1} = case Packet of
#presence{} ->
process_presence_in(State, Packet);
@@ -545,7 +543,7 @@ process_iq_in(State, #iq{} = IQ) ->
allow ->
{true, State};
deny ->
- route_error(IQ, xmpp:err_service_unavailable()),
+ ejabberd_router:route_error(IQ, xmpp:err_service_unavailable()),
{false, State}
end.
@@ -561,7 +559,8 @@ process_message_in(State, #message{type = T} = Msg) ->
true ->
ok;
false ->
- route_error(Msg, xmpp:err_service_unavailable())
+ ejabberd_router:route_error(
+ Msg, xmpp:err_service_unavailable())
end,
{false, State}
end.
@@ -611,7 +610,8 @@ route_probe_reply(From, To, #{lserver := LServer, pres_f := PresF,
%% Don't route a presence probe to oneself
case From == To of
false ->
- route(xmpp:set_from_to(Packet, To, From));
+ ejabberd_router:route(
+ xmpp:set_from_to(Packet, To, From));
true ->
ok
end
@@ -649,14 +649,14 @@ process_presence_out(#{user := User, server := Server, lserver := LServer,
LServer,
[User, Server, To, Type]),
BareFrom = jid:remove_resource(From),
- route(xmpp:set_from_to(Pres, BareFrom, To)),
+ ejabberd_router:route(xmpp:set_from_to(Pres, BareFrom, To)),
State
end;
allow when Type == error; Type == probe ->
- route(Pres),
+ ejabberd_router:route(Pres),
State;
allow ->
- route(Pres),
+ ejabberd_router:route(Pres),
A = case Type of
available -> ?SETS:add_element(LTo, PresA);
unavailable -> ?SETS:del_element(LTo, PresA)
@@ -728,7 +728,7 @@ check_privacy_then_route(#{lang := Lang} = State, Pkt) ->
Err = xmpp:err_not_acceptable(ErrText, Lang),
xmpp_stream_in:send_error(State, Pkt, Err);
allow ->
- route(Pkt),
+ ejabberd_router:route(Pkt),
State
end.
@@ -755,18 +755,6 @@ filter_blocked(#{jid := From} = State, Pres, LJIDSet) ->
end
end, [], LJIDSet).
--spec route(stanza()) -> ok.
-route(Pkt) ->
- From = xmpp:get_from(Pkt),
- To = xmpp:get_to(Pkt),
- ejabberd_router:route(From, To, Pkt).
-
--spec route_error(stanza(), stanza_error()) -> ok.
-route_error(Pkt, Err) ->
- From = xmpp:get_from(Pkt),
- To = xmpp:get_to(Pkt),
- ejabberd_router:route_error(To, From, Pkt, Err).
-
-spec route_multiple(state(), [jid()], stanza()) -> ok.
route_multiple(#{lserver := LServer}, JIDs, Pkt) ->
From = xmpp:get_from(Pkt),
@@ -805,8 +793,8 @@ resource_conflict_action(U, S, R) ->
-spec bounce_message_queue() -> ok.
bounce_message_queue() ->
- receive {route, From, To, Pkt} ->
- ejabberd_router:route(From, To, Pkt),
+ receive {route, Pkt} ->
+ ejabberd_router:route(Pkt),
bounce_message_queue()
after 0 ->
ok