diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-02-16 11:00:26 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-02-16 11:10:24 +0300 |
commit | 8b2d3084986defd6045a0c02706415e0e7ae4b3f (patch) | |
tree | 419b64fc2d07646d221fdfa2f526e057fb34c6d2 /src/mod_muc.erl | |
parent | Merge 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_muc.erl')
-rw-r--r-- | src/mod_muc.erl | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/mod_muc.erl b/src/mod_muc.erl index 046b691f..54936122 100644 --- a/src/mod_muc.erl +++ b/src/mod_muc.erl @@ -345,12 +345,14 @@ handle_call({create, Room, From, Nick, Opts}, _From, handle_cast(_Msg, State) -> {noreply, State}. -handle_info({route, From, To, Packet}, +handle_info({route, Packet}, #state{host = Host, server_host = ServerHost, access = Access, default_room_opts = DefRoomOpts, history_size = HistorySize, max_rooms_discoitems = MaxRoomsDiscoItems, room_shaper = RoomShaper} = State) -> + From = xmpp:get_from(Packet), + To = xmpp:get_to(Packet), case catch do_route(Host, ServerHost, Access, HistorySize, RoomShaper, From, To, Packet, DefRoomOpts, MaxRoomsDiscoItems) of {'EXIT', Reason} -> @@ -395,15 +397,15 @@ do_route(Host, ServerHost, Access, HistorySize, RoomShaper, Lang = xmpp:get_lang(Packet), ErrText = <<"Access denied by service policy">>, Err = xmpp:err_forbidden(ErrText, Lang), - ejabberd_router:route_error(To, From, Packet, Err) + ejabberd_router:route_error(Packet, Err) end. do_route1(_Host, _ServerHost, _Access, _HistorySize, _RoomShaper, - From, #jid{luser = <<"">>, lresource = <<"">>} = To, + _From, #jid{luser = <<"">>, lresource = <<"">>} = _To, #iq{} = IQ, _DefRoomOpts) -> - ejabberd_local:process_iq(From, To, IQ); + ejabberd_local:process_iq(IQ); do_route1(Host, ServerHost, Access, _HistorySize, _RoomShaper, - From, #jid{luser = <<"">>, lresource = <<"">>} = To, + From, #jid{luser = <<"">>, lresource = <<"">>} = _To, #message{lang = Lang, body = Body, type = Type} = Packet, _) -> {_AccessRoute, _AccessCreate, AccessAdmin, _AccessPersistent} = Access, if Type == error -> @@ -417,13 +419,13 @@ do_route1(Host, ServerHost, Access, _HistorySize, _RoomShaper, ErrText = <<"Only service administrators are allowed " "to send service messages">>, Err = xmpp:err_forbidden(ErrText, Lang), - ejabberd_router:route_error(To, From, Packet, Err) + ejabberd_router:route_error(Packet, Err) end end; do_route1(_Host, _ServerHost, _Access, _HistorySize, _RoomShaper, - From, #jid{luser = <<"">>} = To, Packet, _DefRoomOpts) -> + _From, #jid{luser = <<"">>} = _To, Packet, _DefRoomOpts) -> Err = xmpp:err_service_unavailable(), - ejabberd_router:route_error(To, From, Packet, Err); + ejabberd_router:route_error(Packet, Err); do_route1(Host, ServerHost, Access, HistorySize, RoomShaper, From, To, Packet, DefRoomOpts) -> {_AccessRoute, AccessCreate, _AccessAdmin, _AccessPersistent} = Access, @@ -442,23 +444,23 @@ do_route1(Host, ServerHost, Access, HistorySize, RoomShaper, Room, HistorySize, RoomShaper, From, Nick, DefRoomOpts), RMod:register_online_room(Room, Host, Pid), - mod_muc_room:route(Pid, From, Nick, Packet), + mod_muc_room:route(Pid, Packet), ok; false -> Lang = xmpp:get_lang(Packet), ErrText = <<"Room creation is denied by service policy">>, Err = xmpp:err_forbidden(ErrText, Lang), - ejabberd_router:route_error(To, From, Packet, Err) + ejabberd_router:route_error(Packet, Err) end; false -> Lang = xmpp:get_lang(Packet), ErrText = <<"Conference room does not exist">>, Err = xmpp:err_item_not_found(ErrText, Lang), - ejabberd_router:route_error(To, From, Packet, Err) + ejabberd_router:route_error(Packet, Err) end; {ok, Pid} -> ?DEBUG("MUC: send to process ~p~n", [Pid]), - mod_muc_room:route(Pid, From, Nick, Packet), + mod_muc_room:route(Pid, Packet), ok end. |