diff options
| author | Maximilian Hils <git@maximilianhils.com> | 2020-03-30 23:09:07 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-03-30 23:09:07 +0200 |
| commit | 67368232c509a38087c2809aeb193c0b7a1f541d (patch) | |
| tree | 5e0ce2f3f5855d965012104d9dbb4c9a4137b55f | |
| parent | 7d87154130e1052e4ecb3d3c2e754124d76b18f8 (diff) | |
| parent | 1930578f05aa8574b8df94cad099cdf14a869723 (diff) | |
| download | mitmproxy-67368232c509a38087c2809aeb193c0b7a1f541d.tar.gz mitmproxy-67368232c509a38087c2809aeb193c0b7a1f541d.tar.bz2 mitmproxy-67368232c509a38087c2809aeb193c0b7a1f541d.zip | |
Merge pull request #3839 from naivekun/fix_for_issue_3833
Fix for issue 3833
| -rw-r--r-- | mitmproxy/net/http/headers.py | 8 | ||||
| -rw-r--r-- | test/mitmproxy/net/http/test_headers.py | 2 |
2 files changed, 9 insertions, 1 deletions
diff --git a/mitmproxy/net/http/headers.py b/mitmproxy/net/http/headers.py index 8a58cbbc..baed7e06 100644 --- a/mitmproxy/net/http/headers.py +++ b/mitmproxy/net/http/headers.py @@ -162,8 +162,12 @@ class Headers(multidict.MultiDict): pattern = re.compile(pattern, flags) replacements = 0 flag_count = count > 0 + count_reached = False fields = [] for name, value in self.fields: + if count_reached: + fields.append((name, value)) + continue line, n = pattern.subn(repl, name + b": " + value, count=count) try: name, value = line.split(b": ", 1) @@ -173,10 +177,12 @@ class Headers(multidict.MultiDict): pass else: replacements += n + fields.append((name, value)) if flag_count: count -= n if count == 0: - break + count_reached = True + continue fields.append((name, value)) self.fields = tuple(fields) return replacements diff --git a/test/mitmproxy/net/http/test_headers.py b/test/mitmproxy/net/http/test_headers.py index 8fc8b027..5f208dcb 100644 --- a/test/mitmproxy/net/http/test_headers.py +++ b/test/mitmproxy/net/http/test_headers.py @@ -88,6 +88,8 @@ class TestHeaders: headers = Headers(Host="foobarfoo.com", Accept="foo/bar") replacements = headers.replace("foo", "bar", count=1) assert replacements == 1 + assert headers["Host"] == "barbarfoo.com" + assert headers["Accept"] == "foo/bar" def test_parse_content_type(): |
