From afc302cd6fc04fe12d468950a6573edf86888686 Mon Sep 17 00:00:00 2001 From: Jared Date: Thu, 3 Dec 2020 19:20:15 -0800 Subject: [PATCH] Dispose of WebResponses. Use VsWhere. --- Agent.Installer.Win/Services/InstallerService.cs | 12 ++++++++---- Agent/Services/AgentSocket.cs | 2 +- Agent/Services/CommandExecutor.cs | 2 +- Agent/Services/ScriptRunner.cs | 2 +- Agent/Services/Updater.cs | 6 +++--- Server/API/AlertsController.cs | 2 +- Utilities/Publish.ps1 | 6 +++--- 7 files changed, 18 insertions(+), 14 deletions(-) diff --git a/Agent.Installer.Win/Services/InstallerService.cs b/Agent.Installer.Win/Services/InstallerService.cs index 51342943..51866f1b 100644 --- a/Agent.Installer.Win/Services/InstallerService.cs +++ b/Agent.Installer.Win/Services/InstallerService.cs @@ -197,8 +197,10 @@ namespace Remotely.Agent.Installer.Win.Services { await sw.WriteAsync(Serializer.Serialize(setupOptions)); } - var response = await wr.GetResponseAsync() as HttpWebResponse; - Logger.Write($"Create device response: {response.StatusCode}"); + using (var response = await wr.GetResponseAsync() as HttpWebResponse) + { + Logger.Write($"Create device response: {response.StatusCode}"); + } } } catch (WebException ex) when ((ex.Response is HttpWebResponse response) && response.StatusCode == HttpStatusCode.BadRequest) @@ -284,8 +286,10 @@ namespace Remotely.Agent.Installer.Win.Services var wr = WebRequest.CreateHttp($"{serverUrl}/Downloads/Remotely-Win10-{Platform}.zip"); wr.Method = "Head"; - var response = (HttpWebResponse)await wr.GetResponseAsync(); - FileIO.WriteAllText(Path.Combine(InstallPath, "etag.txt"), response.Headers["ETag"]); + using (var response = (HttpWebResponse)await wr.GetResponseAsync()) + { + FileIO.WriteAllText(Path.Combine(InstallPath, "etag.txt"), response.Headers["ETag"]); + } ZipFile.ExtractToDirectory(targetFile, tempDir); var fileSystemEntries = Directory.GetFileSystemEntries(tempDir); diff --git a/Agent/Services/AgentSocket.cs b/Agent/Services/AgentSocket.cs index 4c164260..2c2842a9 100644 --- a/Agent/Services/AgentSocket.cs +++ b/Agent/Services/AgentSocket.cs @@ -238,7 +238,7 @@ namespace Remotely.Agent.Services { var url = $"{ConnectionInfo.Host}/API/FileSharing/{fileID}"; var wr = WebRequest.CreateHttp(url); - var response = await wr.GetResponseAsync(); + using var response = await wr.GetResponseAsync(); var cd = response.Headers["Content-Disposition"]; var filename = cd .Split(";") diff --git a/Agent/Services/CommandExecutor.cs b/Agent/Services/CommandExecutor.cs index 69246000..f267c106 100644 --- a/Agent/Services/CommandExecutor.cs +++ b/Agent/Services/CommandExecutor.cs @@ -151,7 +151,7 @@ namespace Remotely.Agent.Services { await sw.WriteAsync(JsonSerializer.Serialize(result)); } - await webRequest.GetResponseAsync(); + (await webRequest.GetResponseAsync())?.Dispose(); } } } diff --git a/Agent/Services/ScriptRunner.cs b/Agent/Services/ScriptRunner.cs index 980e7abd..ee3ba8fd 100644 --- a/Agent/Services/ScriptRunner.cs +++ b/Agent/Services/ScriptRunner.cs @@ -30,7 +30,7 @@ namespace Remotely.Agent.Services var url = $"{connectionInfo.Host}/API/FileSharing/{fileID}"; var wr = WebRequest.CreateHttp(url); - var response = await wr.GetResponseAsync(); + using var response = await wr.GetResponseAsync(); var cd = response.Headers["Content-Disposition"]; var filename = cd.Split(";").FirstOrDefault(x => x.Trim().StartsWith("filename")).Split("=")[1]; using var rs = response.GetResponseStream(); diff --git a/Agent/Services/Updater.cs b/Agent/Services/Updater.cs index e5accfeb..7b24849c 100644 --- a/Agent/Services/Updater.cs +++ b/Agent/Services/Updater.cs @@ -80,7 +80,7 @@ namespace Remotely.Agent.Services var wr = WebRequest.CreateHttp(fileUrl); wr.Method = "Head"; wr.Headers.Add("If-None-Match", lastEtag); - var response = (HttpWebResponse)await wr.GetResponseAsync(); + using var response = (HttpWebResponse)await wr.GetResponseAsync(); if (response.StatusCode == HttpStatusCode.NotModified) { Logger.Write("Service Updater: Version is current."); @@ -135,7 +135,7 @@ namespace Remotely.Agent.Services serverUrl + $"/api/AgentUpdate/DownloadPackage/win-{platform}/{downloadId}", zipPath); - await WebRequest.CreateHttp(serverUrl + $"/api/AgentUpdate/ClearDownload/{downloadId}").GetResponseAsync(); + (await WebRequest.CreateHttp(serverUrl + $"/api/AgentUpdate/ClearDownload/{downloadId}").GetResponseAsync()).Dispose(); foreach (var proc in Process.GetProcessesByName("Remotely_Installer")) @@ -174,7 +174,7 @@ namespace Remotely.Agent.Services serverUrl + $"/api/AgentUpdate/DownloadPackage/linux/{downloadId}", zipPath); - await WebRequest.CreateHttp(serverUrl + $"/api/AgentUpdate/ClearDownload/{downloadId}").GetResponseAsync(); + (await WebRequest.CreateHttp(serverUrl + $"/api/AgentUpdate/ClearDownload/{downloadId}").GetResponseAsync()).Dispose(); Logger.Write("Launching installer to perform update."); diff --git a/Server/API/AlertsController.cs b/Server/API/AlertsController.cs index c5457661..673c31d0 100644 --- a/Server/API/AlertsController.cs +++ b/Server/API/AlertsController.cs @@ -75,7 +75,7 @@ namespace Remotely.Server.API { sw.Write(alertOptions.ApiRequestBody); } - var response = (HttpWebResponse)httpRequest.GetResponse(); + using var response = (HttpWebResponse)httpRequest.GetResponse(); DataService.WriteEvent($"Alert API Response Status: {response.StatusCode}.", orgID); } catch (Exception ex) diff --git a/Utilities/Publish.ps1 b/Utilities/Publish.ps1 index 5a598c19..cfabaee0 100644 --- a/Utilities/Publish.ps1 +++ b/Utilities/Publish.ps1 @@ -24,9 +24,9 @@ param ( $ErrorActionPreference = "Stop" -$MSBuildPath = (Get-ChildItem -Path "${env:ProgramFiles(x86)}\Microsoft Visual Studio\" -Recurse -Filter "MSBuild.exe" -File | ForEach-Object { - [System.Diagnostics.FileVersionInfo]::GetVersionInfo($_.FullName) -} | Sort-Object -Property FileVersion -Descending | Select-Object -First 1).FileName +$InstallerDir = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer" +$VsWhere = "$InstallerDir\vswhere.exe" +$MSBuildPath = (&"$VsWhere" -latest -find "**\Current\Bin\MSBuild.exe").Trim() $Root = (Get-Item -Path $PSScriptRoot).Parent.FullName $SignAssemblies = $false