diff --git a/ChangeLog b/ChangeLog index 323f1814e..f5c73dde0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-02-27 Evgeniy Khramtsov + + * src/mod_proxy65/mod_proxy65_service.erl: if an 'ip' option + is not defined, the module takes an IP address of a local hostname. + 2009-02-26 Badlop * doc/guide.tex: No mention to the release date in ejabberd Guide diff --git a/src/mod_proxy65/mod_proxy65_service.erl b/src/mod_proxy65/mod_proxy65_service.erl index ee11e3db0..901b5261c 100644 --- a/src/mod_proxy65/mod_proxy65_service.erl +++ b/src/mod_proxy65/mod_proxy65_service.erl @@ -215,26 +215,22 @@ parse_options(ServerHost, Opts) -> ACL = gen_mod:get_opt(access, Opts, all), Name = gen_mod:get_opt(name, Opts, "SOCKS5 Bytestreams"), IP = case gen_mod:get_opt(ip, Opts, none) of - none -> get_proxy_or_domainip(ServerHost, MyHost); - Addr -> Addr - end, + none -> get_my_ip(); + Addr -> Addr + end, StrIP = inet_parse:ntoa(IP), StreamAddr = [{"jid", MyHost}, {"host", StrIP}, {"port", integer_to_list(Port)}], #state{myhost = MyHost, - serverhost = ServerHost, - name = Name, - port = Port, - ip = IP, - stream_addr = StreamAddr, - acl = ACL}. + serverhost = ServerHost, + name = Name, + port = Port, + ip = IP, + stream_addr = StreamAddr, + acl = ACL}. -%% Return the IP of the proxy host, or if not found, the ip of the xmpp domain -get_proxy_or_domainip(ServerHost, MyHost) -> - case inet:getaddr(MyHost, inet) of +get_my_ip() -> + {ok, MyHostName} = inet:gethostname(), + case inet:getaddr(MyHostName, inet) of {ok, Addr} -> Addr; - {error, _} -> - case inet:getaddr(ServerHost, inet) of - {ok, Addr} -> Addr; - {error, _} -> {127,0,0,1} - end + {error, _} -> {127,0,0,1} end.