diff --git a/smradius/modules/accounting/mod_accounting_sql.pm b/smradius/modules/accounting/mod_accounting_sql.pm index e8b3e02f57135b37f4f9798280f4c24d48a729f9..007194d5f7b1d8244398ab5ee4f9930b94105a5b 100644 --- a/smradius/modules/accounting/mod_accounting_sql.pm +++ b/smradius/modules/accounting/mod_accounting_sql.pm @@ -108,7 +108,7 @@ sub init %{request.NAS-Port-Type}, %{request.Calling-Station-Id}, %{request.Called-Station-Id}, - %{request.NAS-Port-Id}, + %{request.NAS-Port-Id=}, %{request.Acct-Session-Id}, %{request.Framed-IP-Address}, %{request.Acct-Authentic}, @@ -137,6 +137,7 @@ sub init Username = %{request.User-Name} AND AcctSessionID = %{request.Acct-Session-Id} AND NASIPAddress = %{request.NAS-IP-Address} + AND NASPortID = %{request.NAS-Port-Id=} GROUP BY PeriodKey ORDER BY @@ -159,6 +160,7 @@ sub init Username = %{request.User-Name} AND AcctSessionID = %{request.Acct-Session-Id} AND NASIPAddress = %{request.NAS-IP-Address} + AND NASPortID = %{request.NAS-Port-Id=} AND PeriodKey = %{query.PeriodKey} '; @@ -177,6 +179,7 @@ sub init Username = %{request.User-Name} AND AcctSessionID = %{request.Acct-Session-Id} AND NASIPAddress = %{request.NAS-IP-Address} + AND NASPortID = %{request.NAS-Port-Id=} AND PeriodKey = %{query.PeriodKey} '; @@ -190,6 +193,7 @@ sub init Username = %{request.User-Name} AND AcctSessionID = %{request.Acct-Session-Id} AND NASIPAddress = %{request.NAS-IP-Address} + AND NASPortID = %{request.NAS-Port-Id=} '; $config->{'accounting_usage_query'} = ' @@ -215,6 +219,7 @@ sub init Username = %{request.User-Name} AND AcctSessionID = %{request.Acct-Session-Id} AND NASIPAddress = %{request.NAS-IP-Address} + AND NASPortID = %{request.NAS-Port-Id=} AND PeriodKey = %{query.PeriodKey} ORDER BY ID @@ -226,7 +231,6 @@ sub init @TP@accounting WHERE ID = %{query.DuplicateID} - AND PeriodKey = %{query.PeriodKey} '; # Setup SQL queries @@ -523,7 +527,7 @@ sub acct_log } # Check if we updated duplicates, if we did, fix them - if ($sth > 1) { + if ($sth ne "0E0" && $sth > 1) { fixDuplicates($server, $template); } @@ -541,7 +545,7 @@ sub acct_log } # Check if we updated duplicates, if we did, fix them - if ($sth > 1) { + if ($sth ne "0E0" && $sth > 1) { fixDuplicates($server, $template); } @@ -642,7 +646,7 @@ sub acct_log } # Check if we updated duplicates, if we did, fix them - if ($sth > 1) { + if ($sth ne "0E0" && $sth > 1) { fixDuplicates($server, $template); } } diff --git a/smradiusd.conf b/smradiusd.conf index 056bf0477157b667fc5124c5d4ee74549fbc8dbd..41754f85c7897462b3cd6e776d3231049a207135 100644 --- a/smradiusd.conf +++ b/smradiusd.conf @@ -250,7 +250,7 @@ accounting_start_query=<<EOT %{request.NAS-Port-Type}, %{request.Calling-Station-Id}, %{request.Called-Station-Id}, - %{request.NAS-Port-Id}, + %{request.NAS-Port-Id=}, %{request.Acct-Session-Id}, %{request.Framed-IP-Address}, %{request.Acct-Authentic}, @@ -279,6 +279,7 @@ accounting_update_get_records_query=<<EOT Username = %{request.User-Name} AND AcctSessionID = %{request.Acct-Session-Id} AND NASIPAddress = %{request.NAS-IP-Address} + AND NASPortID = %{request.NAS-Port-Id=} GROUP BY PeriodKey ORDER BY @@ -301,6 +302,7 @@ accounting_update_query=<<EOT Username = %{request.User-Name} AND AcctSessionID = %{request.Acct-Session-Id} AND NASIPAddress = %{request.NAS-IP-Address} + AND NASPortID = %{request.NAS-Port-Id=} AND PeriodKey = %{query.PeriodKey} EOT @@ -319,6 +321,7 @@ accounting_stop_query=<<EOT Username = %{request.User-Name} AND AcctSessionID = %{request.Acct-Session-Id} AND NASIPAddress = %{request.NAS-IP-Address} + AND NASPortID = %{request.NAS-Port-Id=} AND PeriodKey = %{query.PeriodKey} EOT @@ -332,6 +335,7 @@ accounting_stop_status_query=<<EOT Username = %{request.User-Name} AND AcctSessionID = %{request.Acct-Session-Id} AND NASIPAddress = %{request.NAS-IP-Address} + AND NASPortID = %{request.NAS-Port-Id=} EOT accounting_usage_query=<<EOT @@ -357,9 +361,10 @@ accounting_select_duplicates_query=<<EOT Username = %{request.User-Name} AND AcctSessionID = %{request.Acct-Session-Id} AND NASIPAddress = %{request.NAS-IP-Address} + AND NASPortID = %{request.NAS-Port-Id=} AND PeriodKey = %{query.PeriodKey} ORDER BY - ID + ID DESC LIMIT 99 OFFSET 1 EOT @@ -368,7 +373,6 @@ accounting_delete_duplicates_query=<<EOT @TP@accounting WHERE ID = %{query.DuplicateID} - AND PeriodKey = %{query.PeriodKey} EOT