RADIUS client: Fix server connection recovery after initial failure
If the initial attempt at opening the socket connection to the RADIUS
server failed due to missing IP connectivity during startup, e.g., with
"connect[radius]: Network is unreachable", hostapd did not try to
reconnect when RADIUS messages were sent. Instead, it only reported "No
authentication server configured" even if the configuration did have a
server entry.
This was broken by commit 9ed4076673
('RADIUS client: Do not try to send message without socket') for the
initial case and the more recent fixes in RADIUS server failover cases
did not cover the initial failure case.
Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
bbee36e316
commit
94b39e5927
1 changed files with 6 additions and 0 deletions
|
@ -658,6 +658,9 @@ int radius_client_send(struct radius_client_data *radius,
|
|||
}
|
||||
|
||||
if (msg_type == RADIUS_ACCT || msg_type == RADIUS_ACCT_INTERIM) {
|
||||
if (conf->acct_server && radius->acct_sock < 0)
|
||||
radius_client_init_acct(radius);
|
||||
|
||||
if (conf->acct_server == NULL || radius->acct_sock < 0 ||
|
||||
conf->acct_server->shared_secret == NULL) {
|
||||
hostapd_logger(radius->ctx, NULL,
|
||||
|
@ -673,6 +676,9 @@ int radius_client_send(struct radius_client_data *radius,
|
|||
s = radius->acct_sock;
|
||||
conf->acct_server->requests++;
|
||||
} else {
|
||||
if (conf->auth_server && radius->auth_sock < 0)
|
||||
radius_client_init_auth(radius);
|
||||
|
||||
if (conf->auth_server == NULL || radius->auth_sock < 0 ||
|
||||
conf->auth_server->shared_secret == NULL) {
|
||||
hostapd_logger(radius->ctx, NULL,
|
||||
|
|
Loading…
Reference in a new issue