Hello, I had a strange and hard to trace problem with Radiator server that was connected to Oracle database (for maintaining session database and accounting) and had a handler (for IPASS requests) that would fork.
Every time the server forked our radiusd would lose it's connection to database. That resulted in errors like: ORA-03113: end-of-file on communication channel (DBD ERROR: OCIStmtExecute) in the middle of a query execution. The problem was hard to trace because the reason for failure was not in the broken query but somewhere else. After many hours of work I discovered that closing a few file descriptors just after the daemon forked a child (in the child process) would prevent it from happening. Here are those few lines of that dirty hack that did the job for me: use IO::Handle; in file radiusd.pl, sub safeFork: elsif (defined $pid) { # Child. # <ddzeko> # # close kid's file descriptors ;>>> # (this will teach the kid to stay out of # parent's database business) # if (1) { my ($io) = new IO::Handle; for (my $i = 3; $i < 20; $i++) { $io->fdopen($i, 'r') && $io->close; } } # </ddzeko> return 1; } Greetings, --damir; === Archive at http://www.open.com.au/archives/radiator/ Announcements on [EMAIL PROTECTED] To unsubscribe, email '[EMAIL PROTECTED]' with 'unsubscribe radiator' in the body of the message.