Commit 1aeafcfe authored by Marc Gravell's avatar Marc Gravell

Merge pull request #155 from olviko/pull_req20

A fix for https://github.com/StackExchange/StackExchange.Redis/issues/20
parents ca652fca 378b7ace
...@@ -120,6 +120,7 @@ public void Dispose() ...@@ -120,6 +120,7 @@ public void Dispose()
} }
OnDispose(); OnDispose();
} }
internal SocketToken BeginConnect(EndPoint endpoint, ISocketCallback callback) internal SocketToken BeginConnect(EndPoint endpoint, ISocketCallback callback)
{ {
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
...@@ -130,11 +131,24 @@ internal SocketToken BeginConnect(EndPoint endpoint, ISocketCallback callback) ...@@ -130,11 +131,24 @@ internal SocketToken BeginConnect(EndPoint endpoint, ISocketCallback callback)
CompletionType connectCompletionType = CompletionType.Any; CompletionType connectCompletionType = CompletionType.Any;
this.ShouldForceConnectCompletionType(ref connectCompletionType); this.ShouldForceConnectCompletionType(ref connectCompletionType);
if (endpoint is DnsEndPoint)
{
// A work-around for a Mono bug in BeginConnect(EndPoint endpoint, AsyncCallback callback, object state)
DnsEndPoint dnsEndpoint = (DnsEndPoint)endpoint;
CompletionTypeHelper.RunWithCompletionType(
(cb) => socket.BeginConnect(dnsEndpoint.Host, dnsEndpoint.Port, cb, Tuple.Create(socket, callback)),
(ar) => EndConnectImpl(ar),
connectCompletionType);
}
else
{
CompletionTypeHelper.RunWithCompletionType( CompletionTypeHelper.RunWithCompletionType(
(cb) => socket.BeginConnect(endpoint, cb, Tuple.Create(socket, callback)), (cb) => socket.BeginConnect(endpoint, cb, Tuple.Create(socket, callback)),
(ar) => EndConnectImpl(ar), (ar) => EndConnectImpl(ar),
connectCompletionType); connectCompletionType);
} }
}
catch (NotImplementedException ex) catch (NotImplementedException ex)
{ {
if (!(endpoint is IPEndPoint)) if (!(endpoint is IPEndPoint))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment