<div dir="ltr"><div><div><div>Hi all,<br></div><div>  the attached patch is a build- and run-tested merge proposal for next round of the coverity-fixes branch, currently focusing on more effective header name -> id lookups.<br></div><br>Here's the status with the current todo checklist:<br><br> * DONE 1. shift HDR_BAD_HDR to end of enum<br> * DONE 2. shift headers data array to http/RegistredHeaders.cc<br> * DONE 3. creatign LookupTable object from teh enum and array<br> * (with HDR_BAD_HDR as invalid value)<br> * DONE 4. replacing httpHeaderIdByName() uses with the lookup table<br> * NOT POSSIBLE 5. merge HDR_BAD_HDR and HDR_ENUM_END into one thing - HDR_ENUM_END is overloaded meaning "All" headers in Manglers.<br> * DONE 6. replacing httpHeaderNameById with direct array lookups<br> * DONE 7. being looking at the other arrays removal<br><br></div><div>In working on this I found out several instances of enum abuses - tracking those down has been the hardest part of the effort.<br>HttpHeader::parse is being used to parse error page templates - thus the relaxed any_registered_header() checks in some methods, e.g. HttpHdeader::addEntry().<br><br></div><div>Next steps, if there is consensus:<br></div>- moving LookupTable away from std::map to std::hash with custom gperf-derived Hashers for extra boost<br><div>- investigating whether strongly-typed enums can be used instead of C-style enums in more places.<br></div><div><div>- moving away from homegrown bitfields (CBIT_TEST etc.) towards std::vector<bool> or std::vector<unsigned char>, possibly via a class bitfield or somesuch.<br></div></div><br>-- <br><div>    Francesco</div>
</div></div>