🔗 Feature: Client side cleanup
- Goal: Improve code quality and maintainability.
- Status: started;
- ETA: Two-three months once started
- Version: Squid 3.4 and later
- Developer: AmosJeffries
- More: squid-dev thread
🔗 Details
We need thin and clean HTTP server code that makes sense to developers. Clear interaction with Comm, Store, and Forward APIs (which should probably be cleaned up before this project). The current code accumulated many serious design flaws that make changes difficult and risky. Most (perhaps all) developers cannot even grasp all the interactions and inner dependencies, which causes the snowball effect of degrading code quality.
Affected client_side* classes may be renamed to reflect the fact that they implement an HTTP server. This code communicates with Squid clients and, hence, has been called client side.
🔗 Progress
🔗 Done
- Comm::TcpAcceptor separated out
- class to handle the Comm level operations of accept() and following socket state lookups
- Defined the scope and purpose for ConnStateData
- class to manage a client TCP connection
- reading HTTP/1.1 frames (request headers block, body blocks)
- writing HTTP/1.1 frames (response headers block, 1xx headers block, body blocks)
- class to manage a client TCP connection
- generate HttpParser, ClientSocketContext and other AsyncJobs to operate on teh above frames types as needed
🔗 In Progress
- Create a master transaction state object for relaying data easily
- Refactor ConnStateData to meet the above criteria
🔗 TO DO
- Define the scope and purpose for ClientSocketContext
- Define the scope and purpose for ClientHttpRequest
Categories: WantedFeature
Navigation: Site Search, Site Pages, Categories, 🔼 go up