summaryrefslogtreecommitdiff
path: root/accel-pppd/pwdb.c
diff options
context:
space:
mode:
authorDmitry Kozlov <xeb@mail.ru>2014-09-20 12:18:49 +0400
committerDmitry Kozlov <xeb@mail.ru>2014-09-20 12:18:49 +0400
commit62e89248160d3592c2d754fcaa15e37586a5b091 (patch)
treea6513cfd1e8ef6c6079ea2436e8573b122cc1ec6 /accel-pppd/pwdb.c
parent0a58c20b44136c1fba996becea18696b3f67a1f9 (diff)
downloadaccel-ppp-xebd-62e89248160d3592c2d754fcaa15e37586a5b091.tar.gz
accel-ppp-xebd-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.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/accel-pppd/pwdb.c b/accel-pppd/pwdb.c
index 5626c2c..f42a3a8 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;
}