[Mimedefang] MySQL Greylisting - server has gone away

Paul Murphy pjm at ousekjarr.org
Mon Mar 20 08:23:41 EST 2006



> Your software will probably become a lot more robust if you solve
> this problem in MIMEDefang, by testing the database handle before
> using it.

The problem with this approach is that the test has to identify that the
handle is stale, close it, and then re-open it again - and all outside of
"filter_initialise", which is where this sort of thing really has to be.

> If you're using "connect_cached" in your filter, that might be all
> you need, since that automatically tests the database handle to see if
> it is valid.

I am indeed using "connect_cached", but when the handle has timed out, and
the DBI still has it open, the slave dies as described.

My code contains:

$greylist_dbh =
DBI->connect_cached("DBI:mysql:database=$DATABASE;host=localhost",
	"greylist",$dbpass,
        { RaiseError => 1, AutoCommit => 0 })
        or die $DBI::errstr;    

I've also now realised that this isn't helping, as "RaiseError" effectively
causes a die() if anything goes wrong. This should almost certainly be
changed, and then each use of the handle should check the return code.

Best Wishes,

Paul.


-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.385 / Virus Database: 268.2.5/284 - Release Date: 17/03/2006
 




More information about the MIMEDefang mailing list