[squid-users] To Do List (smart pointer examples)

Alex Rousskov rousskov at measurement-factory.com
Tue Feb 11 22:05:11 UTC 2025


On 2025-02-07 18:41, Jonathan Lee wrote:

> Can someone show me an example of doing one of these requests on the to 
> do list?

Please direct future development questions and followups to squid-dev 
mailing list! This squid-users mailing list is meant for Squid operators 
or administrators rather than developers.


> Do anyone have an example plus the section of the code on gethub needs 
> all the changes, (I am a student, and the code base is massive) What I 
> am looking for is a single example and I will do more of them.

These TODOs may be too difficult to implement and test correctly without 
understanding of smart pointers and associated pitfalls, but you can 
look through past git commits to find similar pointer conversion examples:

* f05e4f37: Upgrade ACLFilledChecklist::request to smart Pointer
* 2d5ac435: Do not use raw pointers to index sourcehash CachePeers
* e7959b56: Do not use raw pointers to index CARP CachePeers
* d603e3c2: Cleanup: make Client::request a Pointer
* a0c227a9: Cleanup: convert MemObject::_reply to ReplyPointer
* c43405e7: Cleanup: convert MemObject::request to Pointer

Disclaimer: I have used commit messages to find the examples above. I 
did not revisit each commit to assess whether it is indeed a good 
example for the remaining TODOs quoted below.

If you decide to convert a raw pointer, my recommendation is to start 
with a class data member that is _not_ used in many places, so that you 
do not have to modify a lot of code. However, that recommendation alone 
is probably enough to avoid the pitfalls often present in such conversions!


HTH,

Alex.


> On Squid's easy to do list it states...
> 
>  1. update a /HttpRequest/ raw pointer to a |HttpRequest::Pointer|.
>     Including all code performing locking on it
>  2. update a |HttpReply| raw pointer to a |HttpReply::Pointer|.
>     Including all code performing locking on it
>  3. update a |HttpMsg| raw pointer to a |HttpMsg::Pointer|. Including
>     all code performing locking on it
>  4. update a CBDATA raw pointer to a CbcPointer. Including all code
>     performing validation tests and locking on it.




More information about the squid-users mailing list