From 1938bdd077b47aab9598458a4d77096812638bbc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Jun 2026 05:35:02 +0000 Subject: [PATCH 1/4] Bump Microsoft.VisualStudio.Threading from 17.14.15 to 18.7.23 --- updated-dependencies: - dependency-name: Microsoft.VisualStudio.Threading dependency-version: 18.7.23 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- DevProxy/DevProxy.csproj | 2 +- DevProxy/packages.lock.json | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/DevProxy/DevProxy.csproj b/DevProxy/DevProxy.csproj index 64e1f019..5b68ec58 100644 --- a/DevProxy/DevProxy.csproj +++ b/DevProxy/DevProxy.csproj @@ -36,7 +36,7 @@ - + diff --git a/DevProxy/packages.lock.json b/DevProxy/packages.lock.json index a7b5a9ac..c5cd6a29 100644 --- a/DevProxy/packages.lock.json +++ b/DevProxy/packages.lock.json @@ -35,13 +35,13 @@ }, "Microsoft.VisualStudio.Threading": { "type": "Direct", - "requested": "[17.14.15, )", - "resolved": "17.14.15", - "contentHash": "1DrCusT3xNLSlaJg77BsUSAzrhjdZBAvvsS0PMzyPM+fGais6SnISOhqdZQop8VVMIBLsYm2gyF9W7THjgavwA==", + "requested": "[18.7.23, )", + "resolved": "18.7.23", + "contentHash": "IiK1otNipjvDIk8SClYwOP1uRZLpVA3luVMKSTPhhjhxqv2pp8/tzfLy/IB7HW+voeEodCTHh0q9LbLIBdGNKA==", "dependencies": { - "Microsoft.VisualStudio.Threading.Analyzers": "17.14.15", - "Microsoft.VisualStudio.Threading.Only": "17.14.15", - "Microsoft.VisualStudio.Validation": "17.8.8" + "Microsoft.VisualStudio.Threading.Analyzers": "18.7.23", + "Microsoft.VisualStudio.Threading.Only": "18.7.23", + "Microsoft.VisualStudio.Validation": "17.13.22" } }, "Newtonsoft.Json": { @@ -247,21 +247,21 @@ }, "Microsoft.VisualStudio.Threading.Analyzers": { "type": "Transitive", - "resolved": "17.14.15", - "contentHash": "mXQPJsbuUD2ydq4/ffd8h8tSOFCXec+2xJOVNCvXjuMOq/+5EKHq3D2m2MC2+nUaXeFMSt66VS/J4HdKBixgcw==" + "resolved": "18.7.23", + "contentHash": "dyj6z8m+LFjpeH69hdnciCcRCmD0YgMlvuQEywiEshjqj/blgQ+PuWX8Vd5gkWQFoBN4e+TFxx6DvGNSv/gIKg==" }, "Microsoft.VisualStudio.Threading.Only": { "type": "Transitive", - "resolved": "17.14.15", - "contentHash": "NqONyw1RXyj9P3k5e1uU2k9kc1ptwuU5NJQzG+MPq7vQVHUzBY8HLuJf/N2Rw5H/myD96CVxziDxmjawPuzntw==", + "resolved": "18.7.23", + "contentHash": "iOaVAQLPt1KxFyYqZqKxqNu8BgQUiPLNeT8XhX+549eWaGw49e1MxjlkjTIBwvlfrU4lPp+Nm99oRpmsgN7RJw==", "dependencies": { - "Microsoft.VisualStudio.Validation": "17.8.8" + "Microsoft.VisualStudio.Validation": "17.13.22" } }, "Microsoft.VisualStudio.Validation": { "type": "Transitive", - "resolved": "17.8.8", - "contentHash": "rWXThIpyQd4YIXghNkiv2+VLvzS+MCMKVRDR0GAMlflsdo+YcAN2g2r5U1Ah98OFjQMRexTFtXQQ2LkajxZi3g==" + "resolved": "17.13.22", + "contentHash": "fC20ITOxlUpGQ0ltAxITQbeFxwuB6OjLT3lByC4+/Gm46o/Mwv9hlIVrBhiUhnqdQzUUvr4EHkdiYe7WOSMLmw==" }, "Newtonsoft.Json.Schema": { "type": "Transitive", From 9029cb98f42a5a6276519b66fd3010a33cbda1c4 Mon Sep 17 00:00:00 2001 From: Waldek Mastykarz Date: Tue, 30 Jun 2026 09:04:09 +0200 Subject: [PATCH 2/4] Fix VSTHRD103: make LoadCertificate async The new version of Microsoft.VisualStudio.Threading (18.x) flags synchronous file I/O in async methods. Convert LoadCertificate to async and use File.ReadAllBytesAsync. --- .impeccable/hook.cache.json | 1 + DevProxy/Proxy/CertificateDiskCache.cs | 12 ++++++------ 2 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 .impeccable/hook.cache.json diff --git a/.impeccable/hook.cache.json b/.impeccable/hook.cache.json new file mode 100644 index 00000000..ebc7c5d0 --- /dev/null +++ b/.impeccable/hook.cache.json @@ -0,0 +1 @@ +{"version":1,"sessions":{}} \ No newline at end of file diff --git a/DevProxy/Proxy/CertificateDiskCache.cs b/DevProxy/Proxy/CertificateDiskCache.cs index e7442a63..7ac41d3d 100644 --- a/DevProxy/Proxy/CertificateDiskCache.cs +++ b/DevProxy/Proxy/CertificateDiskCache.cs @@ -18,10 +18,10 @@ internal sealed class CertificateDiskCache : ICertificateCache private string? rootCertificatePath; - public Task LoadRootCertificateAsync(string pathOrName, string password, X509KeyStorageFlags storageFlags, CancellationToken cancellationToken) + public async Task LoadRootCertificateAsync(string pathOrName, string password, X509KeyStorageFlags storageFlags, CancellationToken cancellationToken) { var path = GetRootCertificatePath(pathOrName, false); - return Task.FromResult(LoadCertificate(path, password, storageFlags)); + return await LoadCertificateAsync(path, password, storageFlags, cancellationToken); } public async Task SaveRootCertificateAsync(string pathOrName, string password, X509Certificate2 certificate, CancellationToken cancellationToken) @@ -31,10 +31,10 @@ public async Task SaveRootCertificateAsync(string pathOrName, string password, X await File.WriteAllBytesAsync(path, exported, cancellationToken); } - public Task LoadCertificateAsync(string subjectName, X509KeyStorageFlags storageFlags, CancellationToken cancellationToken) + public async Task LoadCertificateAsync(string subjectName, X509KeyStorageFlags storageFlags, CancellationToken cancellationToken) { var filePath = Path.Combine(GetCertificatePath(false), subjectName + DefaultCertificateFileExtension); - return Task.FromResult(LoadCertificate(filePath, string.Empty, storageFlags)); + return await LoadCertificateAsync(filePath, string.Empty, storageFlags, cancellationToken); } public async Task SaveCertificateAsync(string subjectName, X509Certificate2 certificate, CancellationToken cancellationToken) @@ -118,7 +118,7 @@ private string GetRootCertificateDirectory(bool create) return rootCertificatePath; } - private static X509Certificate2? LoadCertificate(string path, string password, X509KeyStorageFlags storageFlags) + private static async Task LoadCertificateAsync(string path, string password, X509KeyStorageFlags storageFlags, CancellationToken cancellationToken) { byte[] exported; @@ -129,7 +129,7 @@ private string GetRootCertificateDirectory(bool create) try { - exported = File.ReadAllBytes(path); + exported = await File.ReadAllBytesAsync(path, cancellationToken); } catch (IOException) { From 06be1666232e9e8df2c7b2cf3003fb0f24471906 Mon Sep 17 00:00:00 2001 From: Waldek Mastykarz Date: Tue, 30 Jun 2026 09:04:16 +0200 Subject: [PATCH 3/4] Remove accidentally committed cache file --- .impeccable/hook.cache.json | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .impeccable/hook.cache.json diff --git a/.impeccable/hook.cache.json b/.impeccable/hook.cache.json deleted file mode 100644 index ebc7c5d0..00000000 --- a/.impeccable/hook.cache.json +++ /dev/null @@ -1 +0,0 @@ -{"version":1,"sessions":{}} \ No newline at end of file From 3e0385c70cff77d93074739da838679e32c062b6 Mon Sep 17 00:00:00 2001 From: Waldek Mastykarz Date: Tue, 30 Jun 2026 09:21:32 +0200 Subject: [PATCH 4/4] Update dependent lock files after branch merge --- DevProxy.Plugins/packages.lock.json | 12 ++++++------ DevProxy/packages.lock.json | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/DevProxy.Plugins/packages.lock.json b/DevProxy.Plugins/packages.lock.json index 917b1dab..0bed3622 100644 --- a/DevProxy.Plugins/packages.lock.json +++ b/DevProxy.Plugins/packages.lock.json @@ -141,8 +141,8 @@ }, "Markdig": { "type": "Transitive", - "resolved": "1.3.0", - "contentHash": "1cWDY3Rhd24SVe66p2ekhEPhaSAXuH3WgGn6EPNjqXL0Y4ycK7GXtq0UE5oeBYircNlqJIEQk9W2vz60hRaezA==" + "resolved": "1.3.2", + "contentHash": "fZgOC/3CswUrndjDTac70aQpYdtxbW5+5bRumR7vzvI2HJbkmgKisB1c9oT+GA6v0jB/JDR9BLa9FiPzQmaK6A==" }, "Microsoft.Bcl.AsyncInterfaces": { "type": "Transitive", @@ -464,8 +464,8 @@ }, "Scriban": { "type": "Transitive", - "resolved": "7.2.4", - "contentHash": "hx7WeBo0aObZ3v9ZzicZYQtu7fH+I1pRRnzQbv8r0blUhiH9Ay+60/GwkAJZJ7133dr3ZWkzqUqnSloczOf+jw==" + "resolved": "7.2.5", + "contentHash": "6HDyv0P6PVdx/prWM3Aw0QHAT/DCpkBxOovZ2iPIH4L4ZvJ13JNYJgyUI+xJ5K2agXreYTBe23AL5ZQNTqJQvA==" }, "SharpYaml": { "type": "Transitive", @@ -528,7 +528,7 @@ "devproxy.abstractions": { "type": "Project", "dependencies": { - "Markdig": "[1.3.0, )", + "Markdig": "[1.3.2, )", "Microsoft.EntityFrameworkCore.Sqlite": "[10.0.9, )", "Microsoft.Extensions.Configuration": "[10.0.9, )", "Microsoft.Extensions.Configuration.Binder": "[10.0.9, )", @@ -538,7 +538,7 @@ "Microsoft.OpenApi": "[3.7.0, )", "Microsoft.OpenApi.YamlReader": "[3.7.0, )", "Newtonsoft.Json.Schema": "[4.0.1, )", - "Scriban": "[7.2.4, )", + "Scriban": "[7.2.5, )", "System.CommandLine": "[2.0.9, )", "Unobtanium.Web.Proxy": "[0.1.5, )", "YamlDotNet": "[18.0.0, )" diff --git a/DevProxy/packages.lock.json b/DevProxy/packages.lock.json index c5cd6a29..d63b0452 100644 --- a/DevProxy/packages.lock.json +++ b/DevProxy/packages.lock.json @@ -112,8 +112,8 @@ }, "Markdig": { "type": "Transitive", - "resolved": "1.3.0", - "contentHash": "1cWDY3Rhd24SVe66p2ekhEPhaSAXuH3WgGn6EPNjqXL0Y4ycK7GXtq0UE5oeBYircNlqJIEQk9W2vz60hRaezA==" + "resolved": "1.3.2", + "contentHash": "fZgOC/3CswUrndjDTac70aQpYdtxbW5+5bRumR7vzvI2HJbkmgKisB1c9oT+GA6v0jB/JDR9BLa9FiPzQmaK6A==" }, "Microsoft.Bcl.AsyncInterfaces": { "type": "Transitive", @@ -286,8 +286,8 @@ }, "Scriban": { "type": "Transitive", - "resolved": "7.2.4", - "contentHash": "hx7WeBo0aObZ3v9ZzicZYQtu7fH+I1pRRnzQbv8r0blUhiH9Ay+60/GwkAJZJ7133dr3ZWkzqUqnSloczOf+jw==" + "resolved": "7.2.5", + "contentHash": "6HDyv0P6PVdx/prWM3Aw0QHAT/DCpkBxOovZ2iPIH4L4ZvJ13JNYJgyUI+xJ5K2agXreYTBe23AL5ZQNTqJQvA==" }, "SharpYaml": { "type": "Transitive", @@ -347,12 +347,12 @@ "devproxy.abstractions": { "type": "Project", "dependencies": { - "Markdig": "[1.3.0, )", + "Markdig": "[1.3.2, )", "Microsoft.EntityFrameworkCore.Sqlite": "[10.0.9, )", "Microsoft.OpenApi": "[3.7.0, )", "Microsoft.OpenApi.YamlReader": "[3.7.0, )", "Newtonsoft.Json.Schema": "[4.0.1, )", - "Scriban": "[7.2.4, )", + "Scriban": "[7.2.5, )", "System.CommandLine": "[2.0.9, )", "Unobtanium.Web.Proxy": "[0.1.5, )", "YamlDotNet": "[18.0.0, )"