diff options
Diffstat (limited to 'accel-pppd/radius/radius.c')
-rw-r--r-- | accel-pppd/radius/radius.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/accel-pppd/radius/radius.c b/accel-pppd/radius/radius.c index 04de1b7..f371598 100644 --- a/accel-pppd/radius/radius.c +++ b/accel-pppd/radius/radius.c @@ -146,6 +146,9 @@ static int check(struct pwdb_t *pwdb, struct ppp_t *ppp, const char *username, i va_end(args); + if (r == PWDB_SUCCESS) + rpd->authenticated = 1; + return r; } @@ -192,6 +195,9 @@ static void ppp_starting(struct ppp_t *ppp) static void ppp_acct_start(struct ppp_t *ppp) { struct radius_pd_t *rpd = find_pd(ppp); + + if (!rpd->authenticated) + return; if (rad_acct_start(rpd)) { ppp_terminate(rpd->ppp, TERM_NAS_ERROR, 0); @@ -207,6 +213,9 @@ static void ppp_finishing(struct ppp_t *ppp) { struct radius_pd_t *rpd = find_pd(ppp); + if (!rpd->authenticated) + return; + rad_acct_stop(rpd); } static void ppp_finished(struct ppp_t *ppp) |