RADIUS client: Do not try to send message without socket

It is possible for the RADIUS authentication/accounting socket to not be
open even if partial RADIUS server configuration has been done through
the control interface SET commands. Previously, this resulted in send()
attempt using fd=-1 which fails with bad file descriptor. Clean this up
by logging this as a missing configuration instead of trying to send the
message when that is known to fail.

Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
Jouni Malinen 2014-05-30 11:33:01 +03:00
parent cc0b7cb188
commit 9ed4076673

View File

@ -633,7 +633,7 @@ int radius_client_send(struct radius_client_data *radius,
} }
if (msg_type == RADIUS_ACCT || msg_type == RADIUS_ACCT_INTERIM) { if (msg_type == RADIUS_ACCT || msg_type == RADIUS_ACCT_INTERIM) {
if (conf->acct_server == NULL) { if (conf->acct_server == NULL || radius->acct_sock < 0) {
hostapd_logger(radius->ctx, NULL, hostapd_logger(radius->ctx, NULL,
HOSTAPD_MODULE_RADIUS, HOSTAPD_MODULE_RADIUS,
HOSTAPD_LEVEL_INFO, HOSTAPD_LEVEL_INFO,
@ -647,7 +647,7 @@ int radius_client_send(struct radius_client_data *radius,
s = radius->acct_sock; s = radius->acct_sock;
conf->acct_server->requests++; conf->acct_server->requests++;
} else { } else {
if (conf->auth_server == NULL) { if (conf->auth_server == NULL || radius->auth_sock < 0) {
hostapd_logger(radius->ctx, NULL, hostapd_logger(radius->ctx, NULL,
HOSTAPD_MODULE_RADIUS, HOSTAPD_MODULE_RADIUS,
HOSTAPD_LEVEL_INFO, HOSTAPD_LEVEL_INFO,