aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2010-08-30 23:23:28 +0200
committerBadlop <badlop@process-one.net>2010-08-30 23:25:02 +0200
commitc754c91ad1e68bb10afc541321dc13c4711fc665 (patch)
tree217cefdea98b64a5bb9aef5672b1d92db0ed3b8b
parentimplemented backend-independed key-value cacheing table; applied to mod_caps.... (diff)
Add IPv6 support to mod_irc (thanks to Matthias Schiffer)(EJAB-1298)
-rw-r--r--src/mod_irc/mod_irc_connection.erl12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/mod_irc/mod_irc_connection.erl b/src/mod_irc/mod_irc_connection.erl
index 107e6602e..39a06a294 100644
--- a/src/mod_irc/mod_irc_connection.erl
+++ b/src/mod_irc/mod_irc_connection.erl
@@ -105,8 +105,16 @@ init([From, Host, Server, Username, Encoding, Port, Password]) ->
open_socket(init, StateData) ->
Addr = StateData#state.server,
Port = StateData#state.port,
- ?DEBUG("connecting to ~s:~p~n", [Addr, Port]),
- case gen_tcp:connect(Addr, Port, [binary, {packet, 0}]) of
+ ?DEBUG("Connecting with IPv6 to ~s:~p", [Addr, Port]),
+ Connect6 = gen_tcp:connect(Addr, Port, [inet6, binary, {packet, 0}]),
+ Connect = case Connect6 of
+ {error, _} ->
+ ?DEBUG("Connection with IPv6 to ~s:~p failed. Now using IPv4.", [Addr, Port]),
+ gen_tcp:connect(Addr, Port, [inet, binary, {packet, 0}]);
+ _ ->
+ Connect6
+ end,
+ case Connect of
{ok, Socket} ->
NewStateData = StateData#state{socket = Socket},
if