aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2003-10-12 18:21:16 +0000
committerAlexey Shchepin <alexey@process-one.net>2003-10-12 18:21:16 +0000
commit5c0ba6e337a9166be985101eae83153e96251d7d (patch)
tree1329509ed87bc31f3bee7ee45c3c7a0ebbda0e69 /src
parent* doc/guide.tex: Updated (diff)
* doc/guide.tex: Updated
* src/ejabberd_s2s_out.erl: Added support for IPv6 and "_jabber-server.tcp" lookups * src/jlib.erl (string_to_jid1): Bugfix * src/ejabberd_config.erl: Now possible to specify path to config file in command line SVN Revision: 149
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd.cfg.example2
-rw-r--r--src/ejabberd_config.erl8
-rw-r--r--src/ejabberd_s2s_out.erl27
-rw-r--r--src/jlib.erl11
4 files changed, 25 insertions, 23 deletions
diff --git a/src/ejabberd.cfg.example b/src/ejabberd.cfg.example
index 2cc561b65..4474f3b68 100644
--- a/src/ejabberd.cfg.example
+++ b/src/ejabberd.cfg.example
@@ -14,7 +14,7 @@
% Another examples of ACLs:
%{acl, jabberorg, {server, "jabber.org"}}.
%{acl, aleksey, {user, "aleksey", "jabber.ru"}}.
-%{acl, test, {user_regexp, "^test"}}.
+%{acl, test, {user_regexp, "^test"}}.
%{acl, test, {user_glob, "test*"}}.
diff --git a/src/ejabberd_config.erl b/src/ejabberd_config.erl
index 9afa704dc..6b93c4954 100644
--- a/src/ejabberd_config.erl
+++ b/src/ejabberd_config.erl
@@ -34,7 +34,11 @@ start() ->
{local_content, true},
{attributes, record_info(fields, local_config)}]),
mnesia:add_table_copy(local_config, node(), ram_copies),
- load_file(?CONFIG_PATH).
+ Config = case application:get_env(config) of
+ {ok, Path} -> Path;
+ undefined -> ?CONFIG_PATH
+ end,
+ load_file(Config).
load_file(File) ->
@@ -43,7 +47,7 @@ load_file(File) ->
Res = lists:foldl(fun process_term/2, #state{}, Terms),
set_opts(Res);
{error, Reason} ->
- ?ERROR_MSG("~p", [Reason]),
+ ?ERROR_MSG("Can't load config file ~p: ~p", [File, Reason]),
exit(file:format_error(Reason))
end.
diff --git a/src/ejabberd_s2s_out.erl b/src/ejabberd_s2s_out.erl
index 16c76fea8..466f9fd0b 100644
--- a/src/ejabberd_s2s_out.erl
+++ b/src/ejabberd_s2s_out.erl
@@ -107,9 +107,16 @@ init([From, Server, Type]) ->
open_socket(init, StateData) ->
{Addr, Port} = get_addr_port(StateData#state.server),
?DEBUG("s2s_out: connecting to ~s:~p~n", [Addr, Port]),
- case gen_tcp:connect(Addr,
- Port,
- [binary, {packet, 0}]) of
+ Res = case gen_tcp:connect(Addr, Port,
+ [binary, {packet, 0}]) of
+ {ok, _Socket} = R -> R;
+ {error, Reason1} ->
+ ?DEBUG("s2s_out: connect return ~p~n", [Reason1]),
+ gen_tcp:connect(Addr, Port,
+ [binary, {packet, 0},
+ {tcp_module, inet6_tcp}])
+ end,
+ case Res of
{ok, Socket} ->
XMLStreamPid = xml_stream:start(self()),
send_text(Socket, io_lib:format(?STREAM_HEADER,
@@ -120,11 +127,8 @@ open_socket(init, StateData) ->
streamid = new_id()},
?S2STIMEOUT};
{error, Reason} ->
- ?DEBUG("s2s_out: connect return ~p~n", [Reason]),
- Error = case Reason of
- timeout -> ?ERR_REMOTE_SERVER_TIMEOUT;
- _ -> ?ERR_REMOTE_SERVER_NOT_FOUND
- end,
+ ?DEBUG("s2s_out: inet6 connect return ~p~n", [Reason]),
+ Error = ?ERR_REMOTE_SERVER_NOT_FOUND,
bounce_messages(Error),
{stop, normal, StateData}
end.
@@ -439,7 +443,12 @@ is_verify_res(_) ->
-include_lib("kernel/include/inet.hrl").
get_addr_port(Server) ->
- case inet_res:getbyname("_jabber._tcp." ++ Server, srv) of
+ Res = case inet_res:getbyname("_jabber-server._tcp." ++ Server, srv) of
+ {error, _Reason} ->
+ inet_res:getbyname("_jabber._tcp." ++ Server, srv);
+ {ok, _HEnt} = R -> R
+ end,
+ case Res of
{error, Reason} ->
?DEBUG("srv lookup of '~s' failed: ~p~n", [Server, Reason]),
{Server, ejabberd_config:get_local_option(outgoing_s2s_port)};
diff --git a/src/jlib.erl b/src/jlib.erl
index 839d6739c..f8b4062e1 100644
--- a/src/jlib.erl
+++ b/src/jlib.erl
@@ -171,17 +171,6 @@ string_to_jid1([$/ | J], "") ->
error;
string_to_jid1([$/ | J], N) ->
string_to_jid3(J, "", lists:reverse(N), "");
-string_to_jid1([C | J], N)
- when (C =< 32) or
- (C == $") or
- (C == $&) or
- (C == $') or
- (C == $:) or
- (C == $<) or
- (C == $>) or
- (C == 127)
- ->
- error;
string_to_jid1([C | J], N) ->
string_to_jid1(J, [C | N]);
string_to_jid1([], "") ->