I’ve spent much of the past week fixing Apache bugs. In fact, I’ve done rather a lot of it for a couple of months, going back to the run-up to 2.2.5.
Over this past week, I’ve been undertaking a challenge that’s been outstanding for some time: to iron out defects in mod_proxy’s HTTP/1.1 protocol compliance. Many of these are quite esoteric, and involve a lot of donkeywork to set up testcases and run tests, so tackling them is, a priori, a lot of work for relatively little return.
Fortunately a good deal of groundwork has been done. On Monday, I signed up as a user of the Co-Advisor testbench. This gives me access to a test/diagnostic tool, and a suite of testcases covering a good deal of the more esoteric aspects of RFC2616 (the HTTP protocol spec).
Coadvisor’s creator Alex Rousskov ran Apache through the test suite some years ago, and is responsible for several of our longest-standing bug reports. After querying one of those bugs, I entered into correspondence with him, following which he offered me, in my capacity as an Apache developer, full use of the test suite.
Progress so far has been good, with five actual mod_proxy bugs fixed and tested (two of which are new bugs I detected using the tool). Many of these would’ve been a major PITA to test without Co-Advisor. In general, there may be several testcases attributable to a single bug, but in terms of testcases, we have:
- 2.2.6 out-of-the-box
SUCCESS 296 cases, VIOLATION 42 cases, FAILURE 31 cases
- 2.2.6 with configuration options fixed for protocol compliance (TraceEnable On and ProxyVia On):
SUCCESS 307 cases, VIOLATION 31 cases, FAILURE 31 cases
- With fixes made this week:
SUCCESS 338 cases, VIOLATION 18 cases, FAILURE 13 cases
Note that FAILURE here means the testcase didn’t run, which may or may not mean a bug, while VIOLATION means a definite bug. But that’s with the proviso that a few of the testcases are themselves suspect. Indeed, the majority of the remaining violations are going to need some clarification of whether Apache or the testcase is in error. We could be into the realms of debating how many angels can dance on a pinhead.
Anyone interested in the details of this exercise should see the tracking bug report here.