diff --git a/src/Runner.Sdk/Util/VssUtil.cs b/src/Runner.Sdk/Util/VssUtil.cs index bf74fa16c..894e29864 100644 --- a/src/Runner.Sdk/Util/VssUtil.cs +++ b/src/Runner.Sdk/Util/VssUtil.cs @@ -23,7 +23,13 @@ namespace GitHub.Runner.Sdk if (VssClientHttpRequestSettings.Default.UserAgent != null && VssClientHttpRequestSettings.Default.UserAgent.Count > 0) { - headerValues.AddRange(VssClientHttpRequestSettings.Default.UserAgent); + foreach (var headerVal in VssClientHttpRequestSettings.Default.UserAgent) + { + if (!headerValues.Contains(headerVal)) + { + headerValues.Add(headerVal); + } + } } VssClientHttpRequestSettings.Default.UserAgent = headerValues; @@ -33,6 +39,23 @@ namespace GitHub.Runner.Sdk { VssClientHttpRequestSettings.Default.ServerCertificateValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator; } + + var rawHeaderValues = new List(); + rawHeaderValues.AddRange(additionalUserAgents); + rawHeaderValues.Add(new ProductInfoHeaderValue($"({StringUtil.SanitizeUserAgentHeader(RuntimeInformation.OSDescription)})")); + + if (RawClientHttpRequestSettings.Default.UserAgent != null && RawClientHttpRequestSettings.Default.UserAgent.Count > 0) + { + foreach (var headerVal in RawClientHttpRequestSettings.Default.UserAgent) + { + if (!rawHeaderValues.Contains(headerVal)) + { + rawHeaderValues.Add(headerVal); + } + } + } + + RawClientHttpRequestSettings.Default.UserAgent = rawHeaderValues; } public static VssConnection CreateConnection( diff --git a/src/Runner.Worker/JobRunner.cs b/src/Runner.Worker/JobRunner.cs index 17915231e..14328c452 100644 --- a/src/Runner.Worker/JobRunner.cs +++ b/src/Runner.Worker/JobRunner.cs @@ -49,6 +49,9 @@ namespace GitHub.Runner.Worker !string.IsNullOrEmpty(orchestrationId.Value)) { HostContext.UserAgents.Add(new ProductInfoHeaderValue("OrchestrationId", orchestrationId.Value)); + + // make sure orchestration id is in the user-agent header. + VssUtil.InitializeVssClientSettings(HostContext.UserAgents, HostContext.WebProxy); } var jobServerQueueTelemetry = false; diff --git a/src/Sdk/Common/Common/RawHttpHeaders.cs b/src/Sdk/Common/Common/RawHttpHeaders.cs index f4f6beabe..55f0caaf9 100644 --- a/src/Sdk/Common/Common/RawHttpHeaders.cs +++ b/src/Sdk/Common/Common/RawHttpHeaders.cs @@ -1,12 +1,11 @@ using System; using System.ComponentModel; -using System.Diagnostics.CodeAnalysis; namespace GitHub.Services.Common.Internal { [EditorBrowsable(EditorBrowsableState.Never)] public static class RawHttpHeaders { - public const String SessionHeader = "X-Runner-Session"; + public const String SessionHeader = "X-Actions-Session"; } } diff --git a/src/Sdk/Common/Common/RawHttpMessageHandler.cs b/src/Sdk/Common/Common/RawHttpMessageHandler.cs index 09cd2d59a..316bcd576 100644 --- a/src/Sdk/Common/Common/RawHttpMessageHandler.cs +++ b/src/Sdk/Common/Common/RawHttpMessageHandler.cs @@ -138,6 +138,8 @@ namespace GitHub.Services.Common response.Dispose(); } + this.Settings.ApplyTo(request); + // Let's start with sending a token IssuedToken token = null; if (m_tokenProvider != null)