aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs
diff options
context:
space:
mode:
authorBaronGreenback <jimcartlidge@yahoo.co.uk>2021-05-08 12:52:25 +0100
committerBaronGreenback <jimcartlidge@yahoo.co.uk>2021-05-08 12:52:25 +0100
commitbd71de131c384765b9240b7a54649e2c9258b133 (patch)
tree5146ec86c5c72929f480b02202db0a05437326e8 /Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs
parent7185de970c2abef0255ca1ce5321c5d841ddefb8 (diff)
Changed to use span
Diffstat (limited to 'Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs')
-rw-r--r--Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs21
1 files changed, 13 insertions, 8 deletions
diff --git a/Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs b/Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs
index 44b30baac..c89a318e1 100644
--- a/Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs
+++ b/Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Web;
+using MediaBrowser.Common.Extensions;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Features;
using Microsoft.Extensions.Primitives;
@@ -61,19 +62,23 @@ namespace Jellyfin.Server.Middleware
}
var pairs = new Dictionary<string, StringValues>();
- var queryString = unencodedKey.Split('&', System.StringSplitOptions.RemoveEmptyEntries);
+ var queryString = unencodedKey.SpanSplit('&');
foreach (var pair in queryString)
{
- var item = pair.Split('=', System.StringSplitOptions.RemoveEmptyEntries);
- if (item.Length > 0)
- {
- pairs.Add(item[0], new StringValues(item.Length == 2 ? item[1] : string.Empty));
- }
- else
+ var item = pair.Split('=');
+ item.MoveNext();
+
+ var key = item.Current;
+ var val = item.MoveNext() ? item.Current : string.Empty;
+ if (key.Length == 0 && val.Length == 0)
{
- pairs.Add(pair, string.Empty);
+ // encoded is an equals.
+ pairs.Add(pair.ToString(), new StringValues(string.Empty));
+ continue;
}
+
+ pairs.Add(key.ToString(), new StringValues(val.ToString()));
}
_store = new QueryCollection(pairs);