diff options
| author | Bond_009 <bond.009@outlook.com> | 2021-06-08 22:26:59 +0200 |
|---|---|---|
| committer | Bond_009 <bond.009@outlook.com> | 2021-06-09 09:59:30 +0200 |
| commit | 06401ffa0d8ae98fa42c750847f97c3c291b06ae (patch) | |
| tree | 0ba34f7139b2589379fca0127e2876799bd7dbae /Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs | |
| parent | b986cb57b7a73236f5a3a1ed22ee8233bd0c75a8 (diff) | |
Fix duplicate keys causing an exception
Diffstat (limited to 'Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs')
| -rw-r--r-- | Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs b/Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs index f1b47ce33..310a3d31a 100644 --- a/Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs +++ b/Jellyfin.Server/Middleware/UrlDecodeQueryFeature.cs @@ -68,15 +68,20 @@ namespace Jellyfin.Server.Middleware foreach (var pair in queryString) { var i = pair.IndexOf('='); - if (i == -1) { // encoded is an equals. - pairs.Add(pair.ToString(), StringValues.Empty); + // We use TryAdd so duplicate keys get ignored + pairs.TryAdd(pair.ToString(), StringValues.Empty); continue; } - pairs.Add(pair[..i].ToString(), new StringValues(pair[(i + 1)..].ToString())); + var k = pair[..i].ToString(); + var v = pair[(i + 1)..].ToString(); + if (!pairs.TryAdd(k, new StringValues(v))) + { + pairs[k] = StringValues.Concat(pairs[k], v); + } } _store = new QueryCollection(pairs); |
