Do not use the #iq record anymore internally. However it's still created

and passed to other modules.

SVN Revision: 1405
This commit is contained in:
Jean-Sébastien Pédron 2008-07-01 14:25:02 +00:00
parent 5317dd64d7
commit 48cf5cb84a
5 changed files with 31 additions and 55 deletions

View File

@ -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 <js.pedron@meetic-corp.com>
* src/Makefile.in: Remove the -I flag for exmpp includes; the

View File

@ -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 ->

View File

@ -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 ->

View File

@ -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'),

View File

@ -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.