On Mon, 23 Jan 2006, Gonzalo Arana wrote:

Hi,

I'm sory to bother you, but I rather ask you directly instead of
asking this to the list:

As I inidcated previously I prefer public flaming when I am in error ;-)

while trying to hunt bug# 1491, I've noticed this in external_acl.cc
(function externalAclHandleReply()):
...
if (reply)
 entry = external_acl_cache_add(state->def, state->key, entryData);
else {
   if (reply)
**    entry = (external_acl_entry *)hash_lookup(state->def->cache, state->key);
   else {
     external_acl_entry *oldentry =
       (external_acl_entry *)hash_lookup(state->def->cache, state->key);

Unless I am reading this bad, the line marked with ** is never
executed, am I right?

Right..

This was added by you (unless I am mistaken) while fixing bug# 577, on
revision 1.35 of external_acl.cc, see:
http://www.squid-cache.org/cgi-bin/cvsweb.cgi/squid3/src/external_acl.cc.diff?r1=1.35&r2=1.36

I guess that the second 'if (reply)' should be deleted, am I right?

The whole if block should be unwinded it seems. Looks like a bad port of a Squid-2.5 patch.

The corresponding 2.5 code reads:

    if (cbdataValid(state->def)) {
        if (reply)
            entry = external_acl_cache_add(state->def, state->key, result, 
user, error);
        else {
            external_acl_entry *oldentry = hash_lookup(state->def->cache, 
state->key);
            if (oldentry)
                external_acl_cache_delete(state->def, oldentry);
        }
    }

which makes more sense..

Squid-3 has now been corrected to match this.

Regards
Henrik

Reply via email to