private string[] CleanRequestHeader(string name) { string[] original = _request.GetHeaderUnmodified(name); if (original != null) { var tacking = new Tacking(); bool modified = false; foreach (var segment in new HeaderSegmentCollection(original)) { if (segment.Data.HasValue) { if (segment.Data.EndsWith(_encodingSuffixQuote, StringComparison.Ordinal)) { modified = true; if (!tacking.IsEmpty) { tacking.Add(CommaSegment); } tacking.Add(segment.Data.Subsegment(0, segment.Data.Count - _encodingSuffixQuote.Length)); tacking.Add(QuoteSegment); } else if (segment.Data.EndsWith(_encodingSuffix, StringComparison.Ordinal)) { modified = true; if (!tacking.IsEmpty) { tacking.Add(CommaSegment); } tacking.Add(segment.Data.Subsegment(0, segment.Data.Count - _encodingSuffix.Length)); } else { if (!tacking.IsEmpty) { tacking.Add(CommaSegment); } tacking.Add(segment.Data); } } } if (modified) { _request.SetHeader(name, tacking.BuildString()); return(original); } } return(null); }
private string[] CleanRequestHeader(string name) { string[] original = _request.GetHeaderUnmodified(name); if (original != null) { var tacking = new Tacking(); bool modified = false; foreach (var segment in new HeaderSegmentCollection(original)) { if (segment.Data.HasValue) { if (segment.Data.EndsWith(_encodingSuffixQuote, StringComparison.Ordinal)) { modified = true; if (!tacking.IsEmpty) { tacking.Add(CommaSegment); } tacking.Add(segment.Data.Subsegment(0, segment.Data.Count - _encodingSuffixQuote.Length)); tacking.Add(QuoteSegment); } else if (segment.Data.EndsWith(_encodingSuffix, StringComparison.Ordinal)) { modified = true; if (!tacking.IsEmpty) { tacking.Add(CommaSegment); } tacking.Add(segment.Data.Subsegment(0, segment.Data.Count - _encodingSuffix.Length)); } else { if (!tacking.IsEmpty) { tacking.Add(CommaSegment); } tacking.Add(segment.Data); } } } if (modified) { _request.SetHeader(name, tacking.BuildString()); return original; } } return null; }