From 495d06a9705affac48e7cb51760863eb3edc472a Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 2 Mar 2017 15:59:33 -0500 Subject: [PATCH] re-use socket --- .../TunerHosts/HdHomerun/HdHomerunManager.cs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs index 53405e9de4..a25a6d6ed8 100644 --- a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs +++ b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs @@ -37,16 +37,24 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun } public async Task CheckTunerAvailability(IpAddressInfo remoteIp, int tuner, CancellationToken cancellationToken) + { + using (var socket = _socketFactory.CreateTcpSocket(remoteIp, HdHomeRunPort)) + { + return await CheckTunerAvailability(socket, remoteIp, tuner, cancellationToken).ConfigureAwait(false); + } + } + + private async Task CheckTunerAvailability(ISocket socket, IpAddressInfo remoteIp, int tuner, CancellationToken cancellationToken) { var ipEndPoint = new IpEndPointInfo(remoteIp, HdHomeRunPort); - var tcpClient = _socketFactory.CreateTcpSocket(remoteIp, HdHomeRunPort); + var lockkeyMsg = CreateGetMessage(tuner, "lockkey"); - await tcpClient.SendAsync(lockkeyMsg, lockkeyMsg.Length, ipEndPoint, cancellationToken); - var response = await tcpClient.ReceiveAsync(cancellationToken).ConfigureAwait(false); + await socket.SendAsync(lockkeyMsg, lockkeyMsg.Length, ipEndPoint, cancellationToken); + var response = await socket.ReceiveAsync(cancellationToken).ConfigureAwait(false); string returnVal; ParseReturnMessage(response.Buffer, response.ReceivedBytes, out returnVal); - return (returnVal == "none"); + return string.Equals(returnVal, "none", StringComparison.OrdinalIgnoreCase); } public async Task StartStreaming(IpAddressInfo remoteIp, IpAddressInfo localIp, int localPort, string url, int numTuners, CancellationToken cancellationToken) @@ -71,7 +79,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun for (int i = 0; i < numTuners; ++i) { - if (!await CheckTunerAvailability(_remoteIp, i, cancellationToken).ConfigureAwait(false)) + if (!await CheckTunerAvailability(tcpClient, _remoteIp, i, cancellationToken).ConfigureAwait(false)) continue; _activeTuner = i;