protected async Task <SourceConnectionClient> DoConnectGiv(Uri source, CancellationToken cancel_token) { Logger.Debug("DoConnectGiv"); AddressFamily family = AddressFamily.InterNetwork; if (source.HostNameType == UriHostNameType.IPv6) { family = AddressFamily.InterNetworkV6; } Socket socket; socket = PeerCast.ReceiveGivSocket(Guid.Parse(source.LocalPath.Substring("/channel/".Length)), family); if (socket != null) { var client = new TcpClient(); client.Client = socket; var connection = new SourceConnectionClient(client); connection.Stream.ReadTimeout = 30000; connection.Stream.WriteTimeout = 8000; remoteHost = socket.RemoteEndPoint; this.client = client; return(connection); } else { return(null); } }