On Aug 6, 2020, at 6:55 AM, Ali Arslan via Freeradius-Users <freeradius-users@lists.freeradius.org> wrote:
Today i will post 2 problems together that i have already sent by 2 different emails but still i cannot resolve without taking side ways. I will give earlier email links but both of the problems will be stated completely here again not to make reader to consult other sources of the problem statement:
...
1- FreeTDS affected_rows_count Problem Since rlm_sql_freetds does not get the true affected rows count it continues to insert new records in radacct table for the same session in interim updates. I attached debug output (debug_freetds.txt). Some lines from debug that will summarize the problem are as follows:
The short summary is to file a bug upstream. i.e. with the people who wrote the FreeTDS client library. There's not a lot we can do to work around bugs in libraries that we use. And unless the library is OpenSSL, we generally *don't* work around bugs like this. Doing that would turn FreeRADIUS into a horrible collection of patches and work-arounds.
To check true affected rows count i added an unlang statement in accounting section, it does not do anything but just to check if sql server returns true count: update control { Tmp-Integer-0 = "%{WISPSQL:SELECT @@ROWCOUNT}" }
(3) EXPAND %{WISPSQL:SELECT @@ROWCOUNT} (3) --> 1 (3) Tmp-Integer-0 = 1 as seen it returns count as 1.
I also checked affected rows count by freetds utility tsql and saw that it returns true values with select @@ROWCOUNT statement.
I downloaded freeradius source code from gitHub to see if i can find anything about the way it gets affected rows count:
the 2 methods in rlm_sql_freetds.c file related are:
static int sql_num_rows(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t *config)
You can modify this function in your source free to run the "SELECT @@ROWCOUNT" query, and return that value. I'm inclined to *not* make that change in FreeRADIUS. Because it's a bug in someone else's library.
2- Virtual Servers - nas_table Server Column Problem I want to use vertiaul servers and add specific clients to specific servers. And to do that i set Server columns of nas_table records with virtual server name for wich i want to attach. I encountered 2 problems with this method: 1 - Multiple clients cannot be added to the same virtual server, if tried get error like: rlm_sql (sql): Processing generate_sql_clients rlm_sql (sql): Executing select query: SELECT Id, IPAddress, ShortName, 'other', Secret, ISNULL(Server, '') FROM nas WHERE IsActive = 1 rlm_sql (sql): Adding client 10.5.50.1 (home) to default clients list rlm_sql (10.5.50.1): Client "home" (sql) added rlm_sql (sql): Adding client 192.168.1.210 (citylight) to default clients list Failed to associate clients with virtual server default Failed to add client, possible duplicate?
Although there is no other client with same Name (IPAddress) it cannot add second client.
Hmm... that should work. I'll see if I can do some tests.
2- If it gets an Access-Request it errors with "from unknown client" even if the client is added and same client works if it is made global, some lines from debug: rlm_sql (WISPSQL): Adding client 192.168.1.200 (orbitalanya) to WISPServer clients list rlm_sql (192.168.1.200): Client "orbitalanya" (WISPSQL) added
Error with Access-Request: Ignoring request to auth address * port 2812 bound to server WISPServer from unknown client 192.168.1.200 port 49390 proto udp
That should work, too.
I attached debug output as file debug_VirtualServers.txt
I got an answer from Mr. Alan DeKok on Wed, Jul 29 at 2:59 PM for my previous email for the same problem. >> I've pushed a fix. You can download the latest version of v3.0.x from gthub. Alan DeKok I have downloaded source https://github.com/FreeRADIUS/freeradius-server/archive/v3.0.x.zip and installed 3.0.22 but still get same error. Is it wrong version or do i do something wrong with configuration?
I'll see if I can reproduce it here. Alan DeKok.