+2003-09-19 Alexey Shchepin <alexey@sevcom.net>
+
+ * src/mod_muc/mod_muc_room.erl: Debug output switched off
+
+ * src/mod_disco.erl: Server identity changed to "service/im"
+
+ * src/mod_register.erl: Fixed jabber:iq:register handler
+ registration, fixed registration removal processing
+
2003-09-16 Alexey Shchepin <alexey@sevcom.net>
* src/mod_disco.erl: Now only admin can discovery some nodes,
end,
loop();
{open_session, User, Resource, From} ->
- replace_and_register_my_connection(User, Resource, From),
- replace_alien_connection(User, Resource),
+ register_connection(User, Resource, From),
+ %replace_and_register_my_connection(User, Resource, From),
+ %replace_alien_connection(User, Resource),
loop();
{close_session, User, Resource} ->
remove_connection(User, Resource),
close_session(User, Resource) ->
ejabberd_sm ! {close_session, User, Resource}.
+
+register_connection(User, Resource, Pid) ->
+ LUser = jlib:tolower(User),
+ UR = {LUser, Resource},
+ F = fun() ->
+ Ss = mnesia:wread({session, UR}),
+ Ls = mnesia:wread({local_session, UR}),
+ mnesia:write(#session{ur = UR, user = LUser, node = node()}),
+ mnesia:write(#local_session{ur = UR, pid = Pid}),
+ {Ss, Ls}
+ end,
+ case mnesia:transaction(F) of
+ {atomic, {Ss, Ls}} ->
+ lists:foreach(
+ fun(R) ->
+ if R#session.node /= node() ->
+ {ejabberd_sm, R#session.node} !
+ {replace, User, Resource};
+ true ->
+ ok
+ end
+ end, Ss),
+ lists:foreach(
+ fun(R) ->
+ R#local_session.pid ! replaced
+ end, Ls);
+ _ ->
+ false
+ end.
+
+
+
replace_alien_connection(User, Resource) ->
LUser = jlib:tolower(User),
F = fun() ->
IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
gen_iq_handler:add_iq_handler(ejabberd_local, ?NS_REGISTER,
?MODULE, process_iq, IQDisc),
+ gen_iq_handler:add_iq_handler(ejabberd_sm, ?NS_REGISTER,
+ ?MODULE, process_iq, IQDisc),
ok.
init() ->
[SubEl, ?ERR_BAD_REQUEST]}
end
end;
+ (UTag == false) and (RTag /= false) ->
+ {User, Server, _} = From,
+ ejabberd_auth:remove_user(User),
+ {iq, ID, result, XMLNS, [SubEl]};
(UTag /= false) and (PTag /= false) ->
User = xml:get_tag_cdata(UTag),
Password = xml:get_tag_cdata(PTag),