From 65c5e875b5fa83f45ea56a026daa68f3d64e8940 Mon Sep 17 00:00:00 2001 From: Sviataslau Hankovich Date: Thu, 22 Oct 2020 16:59:16 +0300 Subject: [PATCH] Fix inaccurate parsing of HTTP headers (#417) --- .../Elsa.Activities.Http/Activities/SendHttpRequest.cs | 7 +++---- .../Elsa.Activities.Http/Activities/WriteHttpResponse.cs | 6 +++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/activities/Elsa.Activities.Http/Activities/SendHttpRequest.cs b/src/activities/Elsa.Activities.Http/Activities/SendHttpRequest.cs index f58fe0fd5..a755fe49d 100644 --- a/src/activities/Elsa.Activities.Http/Activities/SendHttpRequest.cs +++ b/src/activities/Elsa.Activities.Http/Activities/SendHttpRequest.cs @@ -143,7 +143,6 @@ namespace Elsa.Activities.Http.Activities set => SetState(value); } - protected override async Task OnExecuteAsync( WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) @@ -234,11 +233,11 @@ namespace Elsa.Activities.Http.Activities ); var headers = new HeaderDictionary(); - if (headersText != null) + if (!string.IsNullOrWhiteSpace(headersText)) { var headersQuery = from line in Regex.Split(headersText, "\\n", RegexOptions.Multiline) - let pair = line.Split(':', '=') + let pair = line.Split(new[] { ':', '=' }, 2) select new KeyValuePair(pair[0], pair[1]); foreach (var header in headersQuery) @@ -258,7 +257,7 @@ namespace Elsa.Activities.Http.Activities private bool GetMethodSupportsBody(string method) { - var methods = new[] { "POST", "PUT", "PATCH" }; + var methods = new[] { "POST", "PUT", "PATCH", "DELETE" }; return methods.Contains(method, StringComparer.InvariantCultureIgnoreCase); } } diff --git a/src/activities/Elsa.Activities.Http/Activities/WriteHttpResponse.cs b/src/activities/Elsa.Activities.Http/Activities/WriteHttpResponse.cs index 390c9e8ca..2f32c29b8 100644 --- a/src/activities/Elsa.Activities.Http/Activities/WriteHttpResponse.cs +++ b/src/activities/Elsa.Activities.Http/Activities/WriteHttpResponse.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using System.Net; using System.Text.RegularExpressions; @@ -124,11 +124,11 @@ namespace Elsa.Activities.Http.Activities cancellationToken ); - if (headersText != null) + if (!string.IsNullOrWhiteSpace(headersText)) { var headersQuery = from line in Regex.Split(headersText, "\\n", RegexOptions.Multiline) - let pair = line.Split(':', '=') + let pair = line.Split(new []{':', '='}, 2) select new KeyValuePair(pair[0], pair[1]); foreach (var header in headersQuery)