diff --git a/ChangeLog b/ChangeLog index 12d2b100b..4e03125f2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -39,6 +39,10 @@ * src/ejabberd_router.erl: Change warning message. + * src/ejabberd_sm.erl, src/ejabberd_c2s.erl, src/ejabberd_local.erl, + src/gen_iq_handler.erl: Do not use the #iq record anymore internally. + However it's still created and passed to other modules. + 2008-06-30 Jean-Sébastien Pédron * src/Makefile.in: Remove the -I flag for exmpp includes; the diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index 140e23378..76e92de8d 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -124,13 +124,6 @@ [?NS_JABBER_CLIENT], [{?NS_XMPP, "stream"}])). -define(ERR_FEATURE_NOT_IMPLEMENTED, ?STANZA_ERROR('feature-not-implemented')). -% XXX OLD FORMAT: Re-include jlib.hrl (after clean-up). --record(iq, {id = "", - type, - xmlns = "", - lang = "", - sub_el}). - %%%---------------------------------------------------------------------- %%% API %%%---------------------------------------------------------------------- @@ -546,7 +539,7 @@ wait_for_feature_request({xmlstreamelement, #xmlel{ns = NS, name = Name} = El}, certfile, 1, StateData#state.tls_options)] end, Socket = StateData#state.socket, - Proceed = exmpp_xml:document_fragment_to_list( + Proceed = exmpp_xml:node_to_list( exmpp_server_tls:proceed(), [?DEFAULT_NS], ?PREFIXED_NS), TLSSocket = (StateData#state.sockmod):starttls( Socket, TLSOpts, @@ -1825,10 +1818,8 @@ update_priority(Priority, Packet, StateData) -> process_privacy_iq(From, To, El, StateData) -> - % XXX OLD FORMAT: IQ is #iq. - ElOld = exmpp_xml:xmlel_to_xmlelement(El, - [?DEFAULT_NS], ?PREFIXED_NS), - IQOld = jlib:iq_query_info(ElOld), + % XXX OLD FORMAT: IQ_Rec is an #iq. + IQ_Rec = jlib:iq_query_info(El), % XXX OLD FORMAT: JIDs. FromOld = jlib:to_old_jid(From), ToOld = jlib:to_old_jid(To), @@ -1838,13 +1829,13 @@ process_privacy_iq(From, To, R = ejabberd_hooks:run_fold( privacy_iq_get, StateData#state.server, {error, ?ERR_FEATURE_NOT_IMPLEMENTED}, - [FromOld, ToOld, IQOld, StateData#state.privacy_list]), + [FromOld, ToOld, IQ_Rec, StateData#state.privacy_list]), {R, StateData}; set -> case ejabberd_hooks:run_fold( privacy_iq_set, StateData#state.server, {error, ?ERR_FEATURE_NOT_IMPLEMENTED}, - [FromOld, ToOld, IQOld]) of + [FromOld, ToOld, IQ_Rec]) of {result, R, NewPrivList} -> {{result, R}, StateData#state{privacy_list = NewPrivList}}; @@ -1930,13 +1921,14 @@ resend_subscription_requests(#state{user = User, PendingSubscriptions). process_unauthenticated_stanza(StateData, El) -> - ElOld = exmpp_xml:xmlel_to_xmlelement(El, [?DEFAULT_NS], ?PREFIXED_NS), - case jlib:iq_query_info(ElOld) of - IQ when is_record(IQ, iq) -> + case exmpp_iq:get_kind(El) of + request -> + % XXX OLD FORMAT: IQ_Rec is an #iq. + IQ_Rec = jlib:iq_query_info(El), ResOld = ejabberd_hooks:run_fold(c2s_unauthenticated_iq, StateData#state.server, empty, - [StateData#state.server, IQ, + [StateData#state.server, IQ_Rec, StateData#state.ip]), case ResOld of empty -> diff --git a/src/ejabberd_local.erl b/src/ejabberd_local.erl index e86c030bc..b0c355163 100644 --- a/src/ejabberd_local.erl +++ b/src/ejabberd_local.erl @@ -77,18 +77,14 @@ process_iq(From, To, Packet) -> request -> Host = To#jid.ldomain, Request = exmpp_iq:get_request(Packet), - XMLNS = case Request#xmlel.ns of - NS when is_atom(NS) -> atom_to_list(NS); - NS -> NS - end, + XMLNS = exmpp_xml:get_ns_as_list(Request), case ets:lookup(?IQTABLE, {XMLNS, Host}) of [{_, Module, Function}] -> - % XXX OLD FORMAT: From, To, Packet. + % XXX OLD FORMAT: From, To. FromOld = jlib:to_old_jid(From), ToOld = jlib:to_old_jid(To), - PacketOld = exmpp_xml:xmlel_to_xmlelement(Packet, - [?DEFAULT_NS], ?PREFIXED_NS), - IQ_Rec = jlib:iq_query_info(PacketOld), + % XXX OLD FORMAT: IQ_Rec is an #iq. + IQ_Rec = jlib:iq_query_info(Packet), ResIQ = Module:Function(FromOld, ToOld, IQ_Rec), if ResIQ /= ignore -> diff --git a/src/ejabberd_sm.erl b/src/ejabberd_sm.erl index bae6ce473..31d40eaf0 100644 --- a/src/ejabberd_sm.erl +++ b/src/ejabberd_sm.erl @@ -74,13 +74,6 @@ {?NS_XMPP, ?NS_XMPP_pfx}, {?NS_DIALBACK, ?NS_DIALBACK_pfx} ]). -% XXX OLD FORMAT: Re-include jlib.hrl (after clean-up). --record(iq, {id = "", - type, - xmlns = "", - lang = "", - sub_el}). - %%==================================================================== %% API %%==================================================================== @@ -662,19 +655,19 @@ get_max_user_sessions(LUser, Host) -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% process_iq(From, To, Packet) -> - % XXX OLD FORMAT: From, To, Packet. - FromOld = jlib:to_old_jid(From), - ToOld = jlib:to_old_jid(To), - PacketOld = exmpp_xml:xmlel_to_xmlelement(Packet, - [?DEFAULT_NS], ?PREFIXED_NS), - IQ = jlib:iq_query_info(PacketOld), - case IQ of - #iq{xmlns = XMLNS} -> + case exmpp_iq:get_kind(Packet) of + request -> Host = To#jid.ldomain, + Request = exmpp_iq:get_request(Packet), + XMLNS = exmpp_xml:get_ns_as_list(Request), case ets:lookup(sm_iqtable, {XMLNS, Host}) of [{_, Module, Function}] -> - % XXX OLD FORMAT: From, To, IQ. - ResIQ = Module:Function(FromOld, ToOld, IQ), + % XXX OLD FORMAT: From, To. + FromOld = jlib:to_old_jid(From), + ToOld = jlib:to_old_jid(To), + % XXX OLD FORMAT: IQ_Rec is an #iq. + IQ_Rec = jlib:iq_query_info(Packet), + ResIQ = Module:Function(FromOld, ToOld, IQ_Rec), if ResIQ /= ignore -> % XXX OLD FORMAT: ResIQ. @@ -686,14 +679,13 @@ process_iq(From, To, Packet) -> ok end; [{_, Module, Function, Opts}] -> - % XXX OLD FORMAT: From, To, IQ. gen_iq_handler:handle(Host, Module, Function, Opts, From, To, Packet); [] -> Err = exmpp_iq:error(Packet, 'service-unavailable'), ejabberd_router:route(To, From, Err) end; - reply -> + response -> ok; _ -> Err = exmpp_iq:error(Packet, 'bad-request'), diff --git a/src/gen_iq_handler.erl b/src/gen_iq_handler.erl index aeae283f7..e3da47f0c 100644 --- a/src/gen_iq_handler.erl +++ b/src/gen_iq_handler.erl @@ -227,14 +227,6 @@ convert_to_old_structs(From, To, IQ) -> true -> F = jlib:to_old_jid(From), T = jlib:to_old_jid(To), - Default_NS = case lists:member({IQ#xmlel.ns, none}, - IQ#xmlel.declared_ns) of - true -> []; - false -> [IQ#xmlel.ns] - end, - IQOld = exmpp_xml:xmlel_to_xmlelement(IQ, - Default_NS, - [{?NS_XMPP, ?NS_XMPP_pfx}, {?NS_DIALBACK, ?NS_DIALBACK_pfx}]), - I = jlib:iq_query_info(IQOld), - {F, T, I} + I_Rec = jlib:iq_query_info(IQ), + {F, T, I_Rec} end.