aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mod_muc/mod_muc_room.erl5
-rw-r--r--src/odbc/ejabberd_odbc.erl7
-rw-r--r--src/odbc/ejabberd_odbc_sup.erl46
3 files changed, 54 insertions, 4 deletions
diff --git a/src/mod_muc/mod_muc_room.erl b/src/mod_muc/mod_muc_room.erl
index f41c4532e..bc1563d69 100644
--- a/src/mod_muc/mod_muc_room.erl
+++ b/src/mod_muc/mod_muc_room.erl
@@ -1970,7 +1970,10 @@ get_config(Lang, StateData) ->
[{xmlcdata,
translate:translate(
Lang, "You need an x:data capable client to configure room")}]},
- {xmlelement, "x", [{"xmlns", ?NS_XDATA}], Res}], StateData}.
+ {xmlelement, "x", [{"xmlns", ?NS_XDATA},
+ {"type", "form"}],
+ Res}],
+ StateData}.
diff --git a/src/odbc/ejabberd_odbc.erl b/src/odbc/ejabberd_odbc.erl
index c496bf2be..3800d141e 100644
--- a/src/odbc/ejabberd_odbc.erl
+++ b/src/odbc/ejabberd_odbc.erl
@@ -31,13 +31,14 @@
%%% API
%%%----------------------------------------------------------------------
start() ->
- gen_server:start({local, ejabberd_odbc}, ejabberd_odbc, [], []).
+ gen_server:start(ejabberd_odbc, [], []).
start_link() ->
- gen_server:start_link({local, ejabberd_odbc}, ejabberd_odbc, [], []).
+ gen_server:start_link(ejabberd_odbc, [], []).
sql_query(Query) ->
- gen_server:call(ejabberd_odbc, {sql_query, Query}, 60000).
+ gen_server:call(ejabberd_odbc_sup:get_random_pid(),
+ {sql_query, Query}, 60000).
escape(S) ->
[case C of
diff --git a/src/odbc/ejabberd_odbc_sup.erl b/src/odbc/ejabberd_odbc_sup.erl
new file mode 100644
index 000000000..4ca7ff303
--- /dev/null
+++ b/src/odbc/ejabberd_odbc_sup.erl
@@ -0,0 +1,46 @@
+%%%----------------------------------------------------------------------
+%%% File : ejabberd_odbc_sup.erl
+%%% Author : Alexey Shchepin <alexey@sevcom.net>
+%%% Purpose : ODBC connections supervisor
+%%% Created : 22 Dec 2004 by Alexey Shchepin <alexey@sevcom.net>
+%%% Id : $Id$
+%%%----------------------------------------------------------------------
+
+-module(ejabberd_odbc_sup).
+-author('alexey@sevcom.net').
+-vsn('$Revision$ ').
+
+-export([start_link/0,
+ init/1,
+ get_pids/0,
+ get_random_pid/0
+ ]).
+
+-include("ejabberd.hrl").
+
+start_link() ->
+ supervisor:start_link({local, ?MODULE}, ?MODULE, []).
+
+init(_) ->
+ % TODO
+ N = 10,
+ {ok, {{one_for_one, 10, 1},
+ lists:map(
+ fun(I) ->
+ {I,
+ {ejabberd_odbc, start_link, []},
+ transient,
+ brutal_kill,
+ worker,
+ [?MODULE]}
+ end, lists:seq(1, N))}}.
+
+get_pids() ->
+ [Child ||
+ {_Id, Child, _Type, _Modules} <- supervisor:which_children(?MODULE),
+ Child /= undefined].
+
+get_random_pid() ->
+ Pids = get_pids(),
+ lists:nth(erlang:phash(now(), length(Pids)), Pids).
+