diff options
author | Alexey Shchepin <alexey@process-one.net> | 2003-10-12 18:21:16 +0000 |
---|---|---|
committer | Alexey Shchepin <alexey@process-one.net> | 2003-10-12 18:21:16 +0000 |
commit | 5c0ba6e337a9166be985101eae83153e96251d7d (patch) | |
tree | 1329509ed87bc31f3bee7ee45c3c7a0ebbda0e69 /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.example | 2 | ||||
-rw-r--r-- | src/ejabberd_config.erl | 8 | ||||
-rw-r--r-- | src/ejabberd_s2s_out.erl | 27 | ||||
-rw-r--r-- | src/jlib.erl | 11 |
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([], "") -> |