Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/processone/ejabberd.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2003-10-09 22:09:05 +0400
committerAlexey Shchepin <alexey@process-one.net>2003-10-09 22:09:05 +0400
commit7df146166a7229a66e5d7d4fe8476a5a4c646e0b (patch)
tree4160eed36b115426b948f3944476ce41a1cf9fa6 /src/jd2ejd.erl
parent8e7106dd748b8b07da95f91a328ef145dc002997 (diff)
* src/ejabberd_c2s.erl: Added authentification logging
* src/ejabberd_listener.erl: Added logging of accepted connections * src/stringprep/stringprep_drv.c: Cleanup * src/jd2ejd.erl: Added support for iq:private importing * src/mod_configure.erl: Fixed user removal * src/mod_private.erl: Added remove_user/1 * doc/guide.tex: Updated * src/mod_disco.erl: Added "extra_domains" option SVN Revision: 146
Diffstat (limited to 'src/jd2ejd.erl')
-rw-r--r--src/jd2ejd.erl42
1 files changed, 31 insertions, 11 deletions
diff --git a/src/jd2ejd.erl b/src/jd2ejd.erl
index 456fc0a65..6c3815d3b 100644
--- a/src/jd2ejd.erl
+++ b/src/jd2ejd.erl
@@ -93,9 +93,7 @@ wait_for_xdb(closed, StateData) ->
xdb_data({xmlstreamelement, El}, StateData) ->
{xmlelement, Name, Attrs, Els} = El,
Server = StateData#state.server,
- From = {StateData#state.user,
- Server,
- ""},
+ From = jlib:make_jid(StateData#state.user, Server, ""),
NewState =
case xml:get_attr_s("xmlns", Attrs) of
?NS_AUTH ->
@@ -109,9 +107,9 @@ xdb_data({xmlstreamelement, El}, StateData) ->
mod_roster:set_items(StateData#state.user, El),
StateData;
?NS_VCARD ->
- Res = mod_vcard:process_local_iq(From,
- {"", ?MYNAME, ""},
- {iq, "", set, ?NS_VCARD, El}),
+ Res = mod_vcard:process_sm_iq(From,
+ jlib:make_jid("", ?MYNAME, ""),
+ {iq, "", set, ?NS_VCARD, El}),
StateData;
"jabber:x:offline" ->
process_offline(From, El),
@@ -124,8 +122,22 @@ xdb_data({xmlstreamelement, El}, StateData) ->
% io:format("user ~s~n", [User]),
% StateData;
XMLNS ->
- io:format("jd2ejd: Unknown namespace \"~s\"~n", [XMLNS]),
- StateData
+ case xml:get_attr_s("j_private_flag", Attrs) of
+ "1" ->
+ mod_private:process_local_iq(
+ From,
+ jlib:make_jid("", ?MYNAME, ""),
+ {iq, "", set, ?NS_PRIVATE,
+ {xmlelement, "query", [],
+ [jlib:remove_attr(
+ "j_private_flag",
+ jlib:remove_attr("xdbns", El))]}}),
+ StateData;
+ _ ->
+ io:format("jd2ejd: Unknown namespace \"~s\"~n",
+ [XMLNS]),
+ StateData
+ end
end,
{next_state, xdb_data, NewState};
@@ -191,7 +203,7 @@ handle_info(_, StateName, StateData) ->
%% Returns: any
%%----------------------------------------------------------------------
terminate(Reason, StateName, StateData) ->
- StateData#state.pid ! {jd2ejd, exited},
+ StateData#state.pid ! {jd2ejd, Reason},
ok.
%%%----------------------------------------------------------------------
@@ -217,12 +229,20 @@ process_offline(To, {xmlelement, _, _, Els}) ->
import_file(File) ->
+ clear_queue(),
start(File),
receive
- M -> M
- after 1000 -> ok
+ {jd2ejd, Result} -> Result
+ after 4000 -> timeout
end.
+clear_queue() ->
+ receive
+ {jd2ejd, _Result} -> clear_queue
+ after 0 -> ok
+ end.
+
+
import_dir(Dir) ->
{ok, Files} = file:list_dir(Dir),
MsgFiles = lists:filter(