--- include/freeradius-client.h 2010-06-15 02:22:51.000000000 -0700 +++ include/freeradius-client.h.new 2010-06-15 10:54:31.946269200 -0700 @@ -123,11 +123,6 @@ #define PW_ACCESS_REJECT 3 #define PW_ACCOUNTING_REQUEST 4 #define PW_ACCOUNTING_RESPONSE 5 -#define PW_ACCOUNTING_STATUS 6 -#define PW_PASSWORD_REQUEST 7 -#define PW_PASSWORD_ACK 8 -#define PW_PASSWORD_REJECT 9 -#define PW_ACCOUNTING_MESSAGE 10 #define PW_ACCESS_CHALLENGE 11 #define PW_STATUS_SERVER 12 #define PW_STATUS_CLIENT 13 @@ -372,6 +367,7 @@ #define OK_RC 0 #define TIMEOUT_RC 1 #define REJECT_RC 2 +#define CHALLENGE_RC 3 typedef struct send_data /* Used to pass information to sendserver() function */ { --- lib/buildreq.c 2010-02-04 02:27:09.000000000 -0800 +++ lib/buildreq.c.new 2010-06-15 10:49:33.764494400 -0700 @@ -114,7 +114,7 @@ skip_count = 0; result = ERROR_RC; - for (i=0; (i < aaaserver->max) && (result != OK_RC) && (result != BADRESP_RC) + for (i=0; (i < aaaserver->max) && (result != OK_RC) && (result != BADRESP_RC) && (result != CHALLENGE_RC) ; i++, now = rc_getctime()) { if (aaaserver->deadtime_ends[i] != -1 && @@ -138,7 +138,8 @@ if (result == TIMEOUT_RC && radius_deadtime > 0) aaaserver->deadtime_ends[i] = start_time + (double)radius_deadtime; } - if (result == OK_RC || result == BADRESP_RC || skip_count == 0) + if (result == OK_RC || result == BADRESP_RC || + result == CHALLENGE_RC|| skip_count == 0) goto exit; result = ERROR_RC; --- lib/sendserver.c 2010-06-15 02:22:52.000000000 -0700 +++ lib/sendserver.c.new 2010-06-15 10:52:46.385796000 -0700 @@ -396,16 +396,18 @@ } if ((recv_auth->code == PW_ACCESS_ACCEPT) || - (recv_auth->code == PW_PASSWORD_ACK) || (recv_auth->code == PW_ACCOUNTING_RESPONSE)) { result = OK_RC; } - else if ((recv_auth->code == PW_ACCESS_REJECT) || - (recv_auth->code == PW_PASSWORD_REJECT)) + else if (recv_auth->code == PW_ACCESS_REJECT) { result = REJECT_RC; } + else if (recv_auth->code == PW_ACCESS_CHALLENGE) + { + result = CHALLENGE_RC; + } else { result = BADRESP_RC;