diff options
author | Dmitry Kozlov <xeb@mail.ru> | 2014-09-20 12:18:49 +0400 |
---|---|---|
committer | Dmitry Kozlov <xeb@mail.ru> | 2014-09-20 12:18:49 +0400 |
commit | 62e89248160d3592c2d754fcaa15e37586a5b091 (patch) | |
tree | a6513cfd1e8ef6c6079ea2436e8573b122cc1ec6 /accel-pppd/pwdb.c | |
parent | 0a58c20b44136c1fba996becea18696b3f67a1f9 (diff) | |
download | accel-ppp-62e89248160d3592c2d754fcaa15e37586a5b091.tar.gz accel-ppp-62e89248160d3592c2d754fcaa15e37586a5b091.zip |
rewrite of authentication/accounting procedures
This patch gets rid of synchronuos style of authentication/accounting.
Synchronous style of authentication/accounting produced sleeping threads
which becomes a problem when lots of sessions started/stopped and all they want authorization/accounting.
Diffstat (limited to 'accel-pppd/pwdb.c')
-rw-r--r-- | accel-pppd/pwdb.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/accel-pppd/pwdb.c b/accel-pppd/pwdb.c index 5626c2c9..f42a3a88 100644 --- a/accel-pppd/pwdb.c +++ b/accel-pppd/pwdb.c @@ -8,7 +8,7 @@ static LIST_HEAD(pwdb_handlers); -int __export pwdb_check(struct ap_session *ses, const char *username, int type, ...) +int __export pwdb_check(struct ap_session *ses, pwdb_callback cb, void *cb_arg, const char *username, int type, ...) { struct pwdb_t *pwdb; int r, res = PWDB_NO_IMPL; @@ -19,11 +19,11 @@ int __export pwdb_check(struct ap_session *ses, const char *username, int type, list_for_each_entry(pwdb, &pwdb_handlers, entry) { if (!pwdb->check) continue; - r = pwdb->check(pwdb, ses, username, type, args); + r = pwdb->check(pwdb, ses, cb, cb_arg, username, type, args); if (r == PWDB_NO_IMPL) continue; res = r; - if (r == PWDB_SUCCESS) + if (r == PWDB_SUCCESS || r == PWDB_WAIT) break; } |