def _class_scope(self, env):
H2Conf(env).add_vhost_test1().install()
assert env.apache_restart() == 0
+ # test_h2_203_02 sends a response header with an illegal char on
+ # purpose; httpd rightly rejects it with AH02430 and RST_STREAMs the
+ # request. With HTTP/2 that error is emitted *late*, during stream
+ # teardown, and a single case can produce several AH02430 lines spread
+ # over time -- so a per-case ignore_recent() races the stragglers,
+ # which then surface in a later test's check_error_log() (the timing,
+ # and thus which MPM trips, varies with sync vs async h2 handoff).
+ # AH02430 is only ever produced here intentionally, so ignore it for
+ # the whole class; restore the prior set afterwards so it does not leak.
+ env.httpd_error_log.add_ignored_lognos(['AH02430'])
+ yield
+ env.httpd_error_log.remove_ignored_lognos(['AH02430'])
# by default, we accept leading/trailing ws in request fields
def test_h2_203_01_ws_ignore(self, env):
for l in lognos:
self._ignored_lognos.add(l)
+ def remove_ignored_lognos(self, lognos: List[str]):
+ for l in lognos:
+ self._ignored_lognos.discard(l)
+
def _is_ignored(self, line: str) -> bool:
if self._lookup_matches(line, self._ignored_matches):
return True