o Use jlib:short_bare_jid/1.
o Rewrite is_auth_packet/1 to use new formats. o Don't convert <presence/> before calling ejabberd_sm:set_presence/7. o Don't convert broadcast children, because it's an internal special element. SVN Revision: 1397
This commit is contained in:
parent
b9074097da
commit
f55274c7fb
|
@ -13,6 +13,11 @@
|
|||
* src/ejabberd_sm.erl: Forgot to convert a <presence/> from the new to
|
||||
the old record.
|
||||
|
||||
* src/ejabberd_c2s.erl: Use jlib:short_bare_jid/1. Rewrite
|
||||
is_auth_packet/1 to use new formats. Don't convert <presence/> before
|
||||
calling ejabberd_sm:set_presence/7. Don't convert broadcast children,
|
||||
because it's an internal special element.
|
||||
|
||||
2008-06-30 Jean-Sébastien Pédron <js.pedron@meetic-corp.com>
|
||||
|
||||
* src/Makefile.in: Remove the -I flag for exmpp includes; the
|
||||
|
|
|
@ -419,8 +419,7 @@ wait_for_auth({xmlstreamelement, El}, StateData) ->
|
|||
StateData#state.server,
|
||||
{[], []},
|
||||
[U, StateData#state.server]),
|
||||
LJID = jlib:short_jid(
|
||||
exmpp_jid:jid_to_bare_jid(JID)),
|
||||
LJID = jlib:short_bare_jid(JID),
|
||||
Fs1 = [LJID | Fs],
|
||||
Ts1 = [LJID | Ts],
|
||||
PrivList = ejabberd_hooks:run_fold(
|
||||
|
@ -741,7 +740,7 @@ wait_for_session({xmlstreamelement, El}, StateData) ->
|
|||
StateData#state.server,
|
||||
{[], []},
|
||||
[U, StateData#state.server]),
|
||||
LJID = jlib:short_jid(exmpp_jid:jid_to_bare_jid(JID)),
|
||||
LJID = jlib:short_bare_jid(JID),
|
||||
Fs1 = [LJID | Fs],
|
||||
Ts1 = [LJID | Ts],
|
||||
PrivList =
|
||||
|
@ -1017,9 +1016,8 @@ handle_info({route, FromOld, ToOld, PacketOld}, StateName, StateData) ->
|
|||
#xmlel{attrs = Attrs} when ?IS_PRESENCE(Packet) ->
|
||||
case exmpp_presence:get_type(Packet) of
|
||||
'probe' ->
|
||||
% XXX OLD FORMAT: LFrom and LBFrom.
|
||||
LFrom = jlib:short_jid(From),
|
||||
LBFrom = jlib:short_jid(exmpp_jid:jid_to_bare_jid(From)),
|
||||
LBFrom = jlib:short_bare_jid(From),
|
||||
NewStateData =
|
||||
case ?SETS:is_element(
|
||||
LFrom, StateData#state.pres_a) orelse
|
||||
|
@ -1031,8 +1029,6 @@ handle_info({route, FromOld, ToOld, PacketOld}, StateName, StateData) ->
|
|||
case ?SETS:is_element(
|
||||
LFrom, StateData#state.pres_f) of
|
||||
true ->
|
||||
% XXX OLD FORMAT: Stores short
|
||||
% JIDs.
|
||||
A = ?SETS:add_element(
|
||||
LFrom,
|
||||
StateData#state.pres_a),
|
||||
|
@ -1041,8 +1037,6 @@ handle_info({route, FromOld, ToOld, PacketOld}, StateName, StateData) ->
|
|||
case ?SETS:is_element(
|
||||
LBFrom, StateData#state.pres_f) of
|
||||
true ->
|
||||
% XXX OLD FORMAT: Stores
|
||||
% short JIDs.
|
||||
A = ?SETS:add_element(
|
||||
LBFrom,
|
||||
StateData#state.pres_a),
|
||||
|
@ -1055,15 +1049,13 @@ handle_info({route, FromOld, ToOld, PacketOld}, StateName, StateData) ->
|
|||
process_presence_probe(From, To, NewStateData),
|
||||
{false, Attrs, NewStateData};
|
||||
'error' ->
|
||||
% XXX OLD FORMAT: LFrom.
|
||||
LFrom = jlib:short_jid(From),
|
||||
NewA = remove_element(LFrom,
|
||||
StateData#state.pres_a),
|
||||
{true, Attrs, StateData#state{pres_a = NewA}};
|
||||
'invisible' ->
|
||||
% XXX OLD FORMAT: Create a function to change 'type'.
|
||||
Attrs1 = exmpp_stanza:set_type_in_attrs(Attrs,
|
||||
"unavailable"),
|
||||
'unavailable'),
|
||||
{true, Attrs1, StateData};
|
||||
'subscribe' ->
|
||||
{true, Attrs, StateData};
|
||||
|
@ -1084,10 +1076,8 @@ handle_info({route, FromOld, ToOld, PacketOld}, StateName, StateData) ->
|
|||
{FromOld, ToOld, PacketOld},
|
||||
in]) of
|
||||
allow ->
|
||||
% XXX OLD FORMAT: LFrom and LBFrom.
|
||||
LFrom = jlib:short_jid(From),
|
||||
LBFrom = jlib:short_jid(
|
||||
exmpp_jid:jid_to_bare_jid(From)),
|
||||
LBFrom = jlib:short_bare_jid(From),
|
||||
%% Note contact availability
|
||||
% XXX OLD FORMAT: Els are #xmlelement.
|
||||
Els = PacketOld#xmlelement.children,
|
||||
|
@ -1135,12 +1125,9 @@ handle_info({route, FromOld, ToOld, PacketOld}, StateName, StateData) ->
|
|||
end
|
||||
end;
|
||||
#xmlel{name = 'broadcast', attrs = Attrs} ->
|
||||
% XXX OLD FORMAT: Els are #xmlelement.
|
||||
Els = PacketOld#xmlelement.children,
|
||||
?DEBUG("broadcast~n~p~n", [Els]),
|
||||
case Els of
|
||||
?DEBUG("broadcast~n~p~n", [Packet#xmlel.children]),
|
||||
case Packet#xmlel.children of
|
||||
[{item, {U, S, R} = _IJIDShort, ISubscription}] ->
|
||||
% XXX OLD FORMAT: IJID is of the form {U, S, R}.
|
||||
IJID = exmpp_jid:make_jid(U, S, R),
|
||||
{false, Attrs,
|
||||
roster_change(IJID, ISubscription,
|
||||
|
@ -1177,7 +1164,6 @@ handle_info({route, FromOld, ToOld, PacketOld}, StateName, StateData) ->
|
|||
% XXX OLD FORMAT: IQ is an old #iq,
|
||||
% From, To.
|
||||
IQ = jlib:iq_query_info(PacketOld),
|
||||
io:format("IQ = ~p~n", [IQ]),
|
||||
gen_iq_handler:handle(Host, Module, Function, Opts,
|
||||
FromOld, ToOld, IQ);
|
||||
[] ->
|
||||
|
@ -1233,12 +1219,13 @@ handle_info({route, FromOld, ToOld, PacketOld}, StateName, StateData) ->
|
|||
Attrs3 = exmpp_stanza:set_recipient_in_attrs(Attrs2, To),
|
||||
FixedPacket = Packet#xmlel{attrs = Attrs3},
|
||||
send_element(StateData, FixedPacket),
|
||||
% XXX OLD FORMAT: From, To, FixedPacket.
|
||||
% XXX OLD FORMAT: JID, From, To, FixedPacket.
|
||||
JIDOld = jlib:to_old_jid(StateData#state.jid),
|
||||
FixedPacketOld = exmpp_xml:xmlel_to_xmlelement(FixedPacket,
|
||||
[?DEFAULT_NS], ?PREFIXED_NS),
|
||||
ejabberd_hooks:run(user_receive_packet,
|
||||
StateData#state.server,
|
||||
[StateData#state.jid, FromOld, ToOld, FixedPacketOld]),
|
||||
[JIDOld, FromOld, ToOld, FixedPacketOld]),
|
||||
% XXX OLD FORMAT: From, To, FixedPacket.
|
||||
ejabberd_hooks:run(c2s_loop_debug, [{route, FromOld, ToOld, PacketOld}]),
|
||||
fsm_next_state(StateName, NewState);
|
||||
|
@ -1345,30 +1332,27 @@ new_id() ->
|
|||
|
||||
|
||||
is_auth_packet(El) ->
|
||||
% XXX OLD FORMAT: El.
|
||||
ElOld = exmpp_xml:xmlel_to_xmlelement(El,
|
||||
[?DEFAULT_NS], ?PREFIXED_NS),
|
||||
NS_Auth = atom_to_list(?NS_LEGACY_AUTH),
|
||||
case jlib:iq_query_info(ElOld) of
|
||||
#iq{id = ID, type = Type, xmlns = NS_Auth, sub_el = SubEl} ->
|
||||
{xmlelement, _, _, Els} = SubEl,
|
||||
{auth, ID, Type,
|
||||
get_auth_tags(Els, "", "", "", undefined)};
|
||||
_ ->
|
||||
case exmpp_iq:is_request(El) of
|
||||
true ->
|
||||
{auth, exmpp_stanza:get_id(El), exmpp_iq:get_type(El),
|
||||
get_auth_tags(El#xmlel.children,
|
||||
undefined, undefined, undefined, undefined)};
|
||||
false ->
|
||||
false
|
||||
end.
|
||||
|
||||
|
||||
get_auth_tags([{xmlelement, Name, _Attrs, Els}| L], U, P, D, R) ->
|
||||
CData = xml:get_cdata(Els),
|
||||
get_auth_tags([#xmlel{ns = ?NS_LEGACY_AUTH, name = Name, children = Els} | L],
|
||||
U, P, D, R) ->
|
||||
CData = exmpp_xml:get_cdata_from_list_as_list(Els),
|
||||
case Name of
|
||||
"username" ->
|
||||
'username' ->
|
||||
get_auth_tags(L, CData, P, D, R);
|
||||
"password" ->
|
||||
'password' ->
|
||||
get_auth_tags(L, U, CData, D, R);
|
||||
"digest" ->
|
||||
'digest' ->
|
||||
get_auth_tags(L, U, P, CData, R);
|
||||
"resource" ->
|
||||
'resource' ->
|
||||
get_auth_tags(L, U, P, D, CData);
|
||||
_ ->
|
||||
get_auth_tags(L, U, P, D, R)
|
||||
|
@ -1390,7 +1374,7 @@ get_conn_type(StateData) ->
|
|||
|
||||
process_presence_probe(From, To, StateData) ->
|
||||
LFrom = jlib:short_jid(From),
|
||||
LBFrom = jlib:short_jid(exmpp_jid:jid_to_bare_jid(From)),
|
||||
LBFrom = jlib:short_bare_jid(From),
|
||||
case StateData#state.pres_last of
|
||||
undefined ->
|
||||
ok;
|
||||
|
@ -1563,9 +1547,9 @@ presence_track(From, To, Packet, StateData) ->
|
|||
LTo = jlib:short_jid(To),
|
||||
User = StateData#state.user,
|
||||
Server = StateData#state.server,
|
||||
BFrom = exmpp_jid:jid_to_bare_jid(From),
|
||||
% XXX OLD FORMAT: From, To, Packet.
|
||||
FromOld = jlib:to_old_jid(From),
|
||||
BFrom = exmpp_jid:jid_to_bare_jid(From),
|
||||
ToOld = jlib:to_old_jid(To),
|
||||
PacketOld = exmpp_xml:xmlel_to_xmlelement(Packet,
|
||||
[?DEFAULT_NS], ?PREFIXED_NS),
|
||||
|
@ -1839,15 +1823,12 @@ roster_change(IJID, ISubscription, StateData) ->
|
|||
|
||||
update_priority(Priority, Packet, StateData) ->
|
||||
Info = [{ip, StateData#state.ip},{conn, StateData#state.conn}],
|
||||
% XXX OLD FORMAT: Packet.
|
||||
PacketOld = exmpp_xml:xmlel_to_xmlelement(Packet,
|
||||
[?DEFAULT_NS], ?PREFIXED_NS),
|
||||
ejabberd_sm:set_presence(StateData#state.sid,
|
||||
StateData#state.user,
|
||||
StateData#state.server,
|
||||
StateData#state.resource,
|
||||
Priority,
|
||||
PacketOld,
|
||||
Packet,
|
||||
Info).
|
||||
|
||||
process_privacy_iq(From, To,
|
||||
|
|
Loading…
Reference in New Issue