Hello Hugh, Mike, everyone, I use Radiator 3.0 together with MySQL on Slackware 8.0 servers. I noticed that Radiator badly manages the loss of MySQL server ; in certain cases, Radiator consumes all available memory then crashes down.
I set up a test server and it was easy to reproduce the problem, here is the scenario : - start MySQL server - start Radiator - start radpwtst with thousands iterations to have the time to do our tests - shutdown MySQL server At this moment, Radiator starts to consume all available memory until it crashes (restarting Mysql server doesn't change anything...). I tried to increase or reduce 'FailureBackoffTime' but it doesn't seem to change anything. Shutting down MySQL when no radius request is sent doesn't reproduce the problem. Is my config file OK ? Here is a trace 4 debug with the config file Romain Vergniol CEGEDIM France PS : Radiator is a great product ! :) ====================================================================== Trace 4 debug: *** Received from 172.xxxxxxx port 1074 .... Code: Access-Request Identifier: 219 Authentic: 1234567890123456 Attributes: User-Name = "[EMAIL PROTECTED]" Service-Type = Framed NAS-IP-Address = 172.xxxxxx NAS-Port = 1234 Called-Station-Id = "0000" Calling-Station-Id = "987654321" NAS-Port-Type = Async Framed-IP-Address = 172.xxxxxxx User-Password = "<170>n<243>=<28><251><161><238>4<31><131>"B<18><249><132>" Fri May 31 11:50:46 2002: DEBUG: Handling request with Handler 'Request-Type=Access-Request' Fri May 31 11:50:46 2002: DEBUG: Deleting session for [EMAIL PROTECTED], 172.xxxxxx, 1234 Fri May 31 11:50:46 2002: DEBUG: Handling with Radius::AuthGROUP Fri May 31 11:50:46 2002: DEBUG: Handling with Radius::AuthSQL Fri May 31 11:50:46 2002: DEBUG: Handling with Radius::AuthSQL: Fri May 31 11:50:46 2002: DEBUG: Query is: select S.PASSWORD, S.CHECKATTR, S.REPLYATTR from SUBSCRIBERS as S, REL_PROFCOM as P where S.USERNAME='[EMAIL PROTECTED]' and S.NASIDENTIFIER='172.xxxxxx' and S.PROFCOM=P.ID and P.NUM='0000' Fri May 31 11:50:46 2002: DEBUG: Radius::AuthSQL looks for match with [EMAIL PROTECTED] Fri May 31 11:50:46 2002: DEBUG: Expiration date converted to: 1798758000 Fri May 31 11:50:46 2002: DEBUG: Radius::AuthSQL ACCEPT: Fri May 31 11:50:46 2002: DEBUG: Access accepted for [EMAIL PROTECTED] Fri May 31 11:50:46 2002: DEBUG: Packet dump: *** Sending to 172.xxxxxxxxport 1074 .... Code: Access-Accept Identifier: 219 Authentic: 1234567890123456 Attributes: Framed-IP-Address = 172.xxxxxxxxx Service-Type = Framed cisco-avpair = "ip:dns-servers=xxxxxxx yyyyyyyyyyyyyy" cisco-avpair = "ip:inacl#1=permit ip any 172.xxxxxxxxx/16" cisco-avpair = "ip:inacl#2=permit ip any host xxxxxxxxxxxxxxxx" cisco-avpair = "ip:inacl#3=permit ip any host yyyyyyyyyyyy" cisco-avpair = "ip:inacl#4=deny all any any" Framed-Protocol = PPP Fri May 31 11:50:46 2002: DEBUG: Packet dump: #------------------------------------------------ # Up to here, everything is OK # MySQL shuts down now #------------------------------------------------ *** Received from 172.xxxxxxxxx port 1074 .... Code: Accounting-Request Identifier: 220 Authentic: <212><29><155>$\<246><202><193><141><206><12><148><15><138><210>Q Attributes: User-Name = "[EMAIL PROTECTED]" Service-Type = Framed NAS-IP-Address = 172.xxxxxxx NAS-Port = 1234 NAS-Port-Type = Async Acct-Session-Id = "00001400" Acct-Status-Type = Start Called-Station-Id = "0000" Calling-Station-Id = "987654321" Framed-IP-Address = 172xxxxxxx Acct-Delay-Time = 0 Fri May 31 11:50:46 2002: DEBUG: Handling request with Handler 'Request-Type=Accounting-Request' Fri May 31 11:50:46 2002: DEBUG: Adding session for [EMAIL PROTECTED], 172.xxxxxx, 1234 Fri May 31 11:50:46 2002: DEBUG: Handling with Radius::AuthSQL Fri May 31 11:50:46 2002: DEBUG: Handling accounting with Radius::AuthSQL Fri May 31 11:50:46 2002: DEBUG: do query is: insert into ACCOUNTING (USERNAME, TIME_STAMP, ACCTSTATUSTYPE, ACCTDELAYTIME, ACCTSESSIONID, NASIDENTIFIER, FRAMEDIPADDRESS, ASCEND_CALLED_STATION_ID, ASCEND_CALLING_STATION_ID, FORMATTED_DATE) values ('[EMAIL PROTECTED]', 1022838646, 'Start', 0, '00001400', '172.xxxxxxxx', '172.xxxxxxx', '0000', '987654321', '2002-05-31.11.50.46') DBD::mysql::db do failed: MySQL server has gone away at /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218. Fri May 31 11:50:46 2002: ERR: do failed for 'insert into ACCOUNTING (USERNAME, TIME_STAMP, ACCTSTATUSTYPE, ACCTDELAYTIME, ACCTSESSIONID, NASIDENTIFIER, FRAMEDIPADDRESS, ASCEND_CALLED_STATION_ID, ASCEND_CALLING_STATION_ID, FORMATTED_DATE) values ('[EMAIL PROTECTED]', 1022838646, 'Start', 0, '00001400', '172.xxxxxx', '172.xxxxxxxx', '0000', '987654321', '2002-05-31.11.50.46')': MySQL server has gone away DBD::mysql::db do failed: MySQL server has gone away at /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218. DBD::mysql::db do failed: MySQL server has gone away at /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218. DBD::mysql::db do failed: MySQL server has gone away at /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218. DBD::mysql::db do failed: MySQL server has gone away at /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218. DBD::mysql::db do failed: MySQL server has gone away at /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218. DBD::mysql::db do failed: MySQL server has gone away at /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218. DBD::mysql::db do failed: MySQL server has gone away at /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218. DBD::mysql::db do failed: MySQL server has gone away at /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218. DBD::mysql::db do failed: MySQL server has gone away at /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218. DBD::mysql::db do failed: MySQL server has gone away at /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218. DBD::mysql::db do failed: MySQL server has gone away at /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218. DBD::mysql::db do failed: MySQL server has gone away at /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218. DBD::mysql::db do failed: MySQL server has gone away at /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218. DBD::mysql::db do failed: MySQL server has gone away at /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218. DBD::mysql::db do failed: MySQL server has gone away at /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218. DBD::mysql::db do failed: MySQL server has gone away at /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218. DBD::mysql::db do failed: MySQL server has gone away at /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218. DBD::mysql::db do failed: MySQL server has gone away at /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218. DBD::mysql::db do failed: MySQL server has gone away at /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218. DBD::mysql::db do failed: MySQL server has gone away at /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218. DBD::mysql::db do failed: MySQL server has gone away at /usr/lib/perl5/site_perl/Radius/SqlDb.pm line 218. Out of memory! Attempt to free unreferenced scalar during global destruction. =========================================================================== radius.cfg of the test server Foreground LogStdout LogDir /usr/local/etc/radius DbDir /usr/local/etc/radius PidFile /usr/local/etc/radius/radius.pid BindAddress 172.xxxxxxxxxxx AuthPort 1812 AcctPort 1813 <ClientListSQL> DBSource dbi:mysql:xxxxxxxxxxxxxx DBUsername xxxxxxxxxxxxx DBAuth xxxxxxxx FailureBackoffTime 20 </ClientListSQL> <Client DEFAULT> Secret xxxxxxxxxxxxxxx </Client> #<AddressAllocator SQL> # Identifier SQLAllocator # # DBSource dbi:mysql:xxxxxxxxxxxxxx # DBUsername xxxxxxxxxxxxx # DBAuth xxxxxxxx # FailureBackoffTime 5 # # #DefaultLeasePeriod 86400 # #LeaseReclaimInterval 86400 # FindQuery select TIME_STAMP, YIADDR, SUBNETMASK, DNSSERVER from RADPOOL where POOL='%0' and STATE=0 limit 1 # # AllocateQuery update RADPOOL set STATE=1, TIME_STAMP=%0, EXPIRY=%1, USERNAME='%2' where YIADDR='%3' # # DeallocateQuery update RADPOOL set STATE=0, TIME_STAMP=%t where YIADDR='%0' # #</AddressAllocator> <AuthBy GROUP> Identifier AUTH_USER # AuthByPolicy ContinueWhileAccept <AuthBy SQL> Identifier AUTH_USER DBSource dbi:mysql:xxxxxxxxxxxxxx DBUsername xxxxxxxxxxxxx DBAuth xxxxxxxx FailureBackoffTime 20 AuthSelect select PASSWORD, CHECKATTR, REPLYATTR from SUBSCRIBERS where USERNAME='%n' limit 1 AuthColumnDef 0, User-Password, check AuthColumnDef 1, GENERIC, check AuthColumnDef 2, GENERIC, reply </AuthBy SQL> # <AuthBy DYNADDRESS> # Allocator SQLAllocator # #MapAttribute yiaddr, Framed-IP-Address # #MapAttribute subnetmask, Framed-IP-Netmask # StripFromReply PoolHint # </AuthBy> </AuthBy> <AuthBy GROUP> Identifier AUTH_USER_NAS # AuthByPolicy ContinueWhileAccept <AuthBy SQL> DBSource dbi:mysql:xxxxxxxxxxxxxx DBUsername xxxxxxxxxxxxx DBAuth xxxxxxxx FailureBackoffTime 20 #AuthSelect select PASSWORD, CHECKATTR, REPLYATTR from SUBSCRIBERS where USERNAME='%n' and NASIDENTIFIER='%N' AuthSelect select S.PASSWORD, S.CHECKATTR, S.REPLYATTR \ from SUBSCRIBERS as S, REL_PROFCOM as P \ where S.USERNAME='%n' and S.NASIDENTIFIER='%N' \ and S.PROFCOM=P.ID \ and P.NUM='%{Called-Station-Id}' AuthColumnDef 0, User-Password, check AuthColumnDef 1, GENERIC, check AuthColumnDef 2, GENERIC, reply </AuthBy SQL> # <AuthBy DYNADDRESS> # Allocator SQLAllocator # #MapAttribute yiaddr, Ascend-Assign-IP-Pool # MapAttribute yiaddr, Framed-IP-Address # MapAttribute subnetmask, Framed-IP-Netmask # StripFromReply PoolHint # </AuthBy> </AuthBy> <AuthBy GROUP> Identifier AUTH_USER_NAS_CSID NoDefault AuthByPolicy ContinueWhileAccept <AuthBy SQL> DBSource dbi:mysql:xxxxxxxxxxxxxx DBUsername xxxxxxxxxxxxx DBAuth xxxxxxxx FailureBackoffTime 20 AuthSelect select S.PASSWORD, S.CHECKATTR, S.REPLYATTR \ from SUBSCRIBERS as S, REL_PROFCOM as P \ where S.USERNAME='%n' and S.NASIDENTIFIER='%N' \ and S.PROFCOM=P.ID \ and P.NUM='%{Called-Station-Id}' AuthColumnDef 0, User-Password, check AuthColumnDef 1, GENERIC, check AuthColumnDef 2, GENERIC, reply </AuthBy> </AuthBy> <AuthBy SQL> Identifier ACCT DBSource dbi:mysql:xxxxxxxxxxxxxx DBUsername xxxxxxxxxxxxx DBAuth xxxxxxxx AccountingTable ACCOUNTING AcctColumnDef USERNAME,User-Name AcctColumnDef REALM,User-Realm AcctColumnDef TIME_STAMP,Timestamp,integer AcctColumnDef ACCTSTATUSTYPE,Acct-Status-Type AcctColumnDef ACCTDELAYTIME,Acct-Delay-Time,integer AcctColumnDef ACCTINPUTOCTETS,Acct-Input-Octets,integer AcctColumnDef ACCTOUTPUTOCTETS,Acct-Output-Octets,integer AcctColumnDef ACCTSESSIONID,Acct-Session-Id AcctColumnDef ACCTSESSIONTIME,Acct-Session-Time,integer AcctColumnDef ASCEND_DISCONNECT_CAUSE,Ascend-Disconnect-Cause,integer AcctColumnDef ACCTTERMINATECAUSE,Acct-Terminate-Cause AcctColumnDef NASIDENTIFIER,%N,formatted AcctColumnDef FRAMEDIPADDRESS,Framed-IP-Address AcctColumnDef ASCEND_CONNECT_PROGRESS,Ascend-Connect-Progress,integer AcctColumnDef ASCEND_DATA_RATE,Ascend-Data-Rate,integer AcctColumnDef ASCEND_PRE_INPUT_OCTETS,Ascend-Pre-Input-Octets,integer AcctColumnDef ASCEND_PRE_OUTPUT_OCTETS,Ascend-Pre-Output-Octets,integer AcctColumnDef ASCEND_PRESESSION_TIME,Ascend-PreSession-Time,integer AcctColumnDef ASCEND_XMIT_RATE,Ascend-Xmit-Rate,integer AcctColumnDef ASCEND_CALLED_STATION_ID,Called-Station-Id AcctColumnDef ASCEND_CALLING_STATION_ID,Calling-Station-Id AcctColumnDef FRAMED_PROTOCOL,Framed-Protocol,integer AcctColumnDef FORMATTED_DATE,%Y-%m-%d.%H.%M.%S,formatted AcctFailedLogFileName /usr/local/etc/radius/missedaccounting </AuthBy> <AuthLog SQL> Identifier AUTHLOG DBSource dbi:mysql:xxxxxxxxxxxxx DBUsername xxxxxxxxx DBAuth xxxxxxxxxxxxxxxxx FailureBackoffTime 20 LogSuccess 1 LogFailure 1 Table RADAUTHLOG_1 SuccessQuery INSERT into RADAUTHLOG_1 values("%t","%n" , "%N" , "Radius2: OK. %1" ) FailureQuery INSERT into RADAUTHLOG_1 values("%t","%n" , "%N" , "Radius2: NOK. %1(C-S-Id:%{Called-Station-Id})" ) </AuthLog> # Scripts de Fail-Over <Handler Request-Type=Access-Request,Realm=test.fr> AuthBy AUTH_USER </Handler> # TEST <Handler Request-Type=Access-Request,Realm=test.cegedim> #AuthBy AUTH_USER_NAS AuthBy AUTH_USER_NAS_CSID AuthLog AUTHLOG </Handler> ##################################################### # OTHER.USERS #################################################### <Handler Request-Type=Accounting-Request> AuthBy ACCT </Handler> <Handler Request-Type=Access-Request,Realm=teams.bak> RejectHasReason AuthBy AUTH_USER AuthLog AUTHLOG </Handler> <Handler Request-Type=Access-Request> RejectHasReason AuthBy AUTH_USER_NAS_CSID AuthLog AUTHLOG </Handler> ###################################################### <Log SQL> DBSource dbi:mysql:xxxxxxxxxxxxxx DBUsername xxxxxxxxxxxxx DBAuth xxxxxxxx FailureBackoffTime 20 Trace 3 </Log> === 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.