Hi to all  and thanks for the time given to read and reply these emails

I am having an strange issue with my external ACL, ocassionally im
getting blank inputs from squid to by proccessed by the external ACL,
for those cases I am returning ERR but squid is complainting showing
in cache.log errors like

2015/02/11 10:01:36| helperHandleRead: unexpected read from
session_active_def #Hlpr5, 4 bytes 'ERR
'

My question is, what should I return in those cases? its normal to
recieve those blanks? how to avoid them if possible?

Im worried about this detail because related to this events (only some
times) squid stop serving to client who fired the event, client has to
change IP to continue surfing.

Here is the definition of the external ACL, its supposed to receive IP

# Set up the normal session helper.
external_acl_type session_active_def concurrency=1 children-max=15
children-startup=12  ipv4 ttl=3 negative_ttl=1 %SRC
/etc/squid3/captive/sessionHelper.php

And here the code

#!/usr/bin/php
<?php
error_reporting(0);
$meminstance = new Memcache();
$meminstance->pconnect('127.0.0.1', 11211);
ini_set("memory_limit",($memoryLimit=512)."M");
while (!@feof(STDIN)) {
try{

        $line = trim(fgets(STDIN));
        if (!$line) { shell_exec("echo \"SESSION - No client ip error: \"
".$line." - "." - $(date) >> /var/log/squid3/session.log");
fwrite(STDOUT, "ERR\n"); continue;}

        $line = explode(" ", $line);

        $clientip = count($line > 1)?$line[1]:false; //1738

        if (!$clientip) { shell_exec("echo \"SESSION - No client ip error: \"
".$line." - "." - $(date) >> /var/log/squid3/session.log");
fwrite(STDOUT, "ERR\n"); continue;}

         $username = $meminstance->get($clientip);
        $hasInternet = 
$username?$meminstance->get("has_internet_$username"):false;
        if ($username && $hasInternet){
                        // extend session
                        $meminstance->set($clientip, $username, 0,3600); // 
extend 10 min
                        $meminstance->set("ip_".$username, $clientip, 0, 3600); 
// 10 min
                        $meminstance->set("has_internet_".$username, true, 0, 
3600); // 10 min
                        fwrite(STDOUT, "OK user=$username\n");
        }else{
                fwrite(STDOUT, "ERR\n");
        }
}catch(Exception $e){
                fwrite(STDOUT, "BH\n");
}
}
exit;
?>



Thanks to all
_______________________________________________
squid-users mailing list
squid-users@lists.squid-cache.org
http://lists.squid-cache.org/listinfo/squid-users

Reply via email to