Mercurial > dovecot > original-hg > dovecot-1.2
annotate src/auth/userdb-prefetch.c @ 9008:fc4f65a4ca60 HEAD
virtual: Don't show mailboxes as \Noselect.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 01 May 2009 14:56:52 -0400 |
parents | b9faf4db2a9f |
children | 00cd9aacd03c |
rev | line source |
---|---|
8590
b9faf4db2a9f
Updated copyright notices to include year 2009.
Timo Sirainen <tss@iki.fi>
parents:
8512
diff
changeset
|
1 /* Copyright (c) 2004-2009 Dovecot authors, see the included COPYING file */ |
3667 | 2 |
3 #include "common.h" | |
8217
c47b78e843aa
Separate "unknown passdb/userdb X" and "support for X not compiled in" error messages.
Timo Sirainen <tss@iki.fi>
parents:
8058
diff
changeset
|
4 #include "userdb.h" |
3667 | 5 |
6 #ifdef USERDB_PREFETCH | |
7 | |
8 #include "str.h" | |
9 #include "var-expand.h" | |
10 | |
11 #include <stdlib.h> | |
12 | |
13 static void prefetch_lookup(struct auth_request *auth_request, | |
14 userdb_callback_t *callback) | |
15 { | |
5872
93bd157917ca
Changed userdb callback API. Don't require uid/gid to be returned by userdb.
Timo Sirainen <tss@iki.fi>
parents:
5259
diff
changeset
|
16 /* auth_request_set_field() should have already placed the userdb_* |
93bd157917ca
Changed userdb callback API. Don't require uid/gid to be returned by userdb.
Timo Sirainen <tss@iki.fi>
parents:
5259
diff
changeset
|
17 values to userdb_reply. */ |
93bd157917ca
Changed userdb callback API. Don't require uid/gid to be returned by userdb.
Timo Sirainen <tss@iki.fi>
parents:
5259
diff
changeset
|
18 if (auth_request->userdb_reply == NULL) { |
4146
bdf68bc43354
Allow prefetch userdb to exist nicely with other userdbs.
Timo Sirainen <tss@iki.fi>
parents:
3863
diff
changeset
|
19 if (auth_request->auth->userdbs->next == NULL) { |
bdf68bc43354
Allow prefetch userdb to exist nicely with other userdbs.
Timo Sirainen <tss@iki.fi>
parents:
3863
diff
changeset
|
20 /* no other userdbs */ |
8512
2034087a9663
If only userdb prefetch is defined and userdb lookup is tried, give a better error message.
Timo Sirainen <tss@iki.fi>
parents:
8217
diff
changeset
|
21 if (auth_request->userdb_lookup) { |
2034087a9663
If only userdb prefetch is defined and userdb lookup is tried, give a better error message.
Timo Sirainen <tss@iki.fi>
parents:
8217
diff
changeset
|
22 auth_request_log_error(auth_request, "prefetch", |
2034087a9663
If only userdb prefetch is defined and userdb lookup is tried, give a better error message.
Timo Sirainen <tss@iki.fi>
parents:
8217
diff
changeset
|
23 "userdb lookup not possible with only userdb prefetch"); |
2034087a9663
If only userdb prefetch is defined and userdb lookup is tried, give a better error message.
Timo Sirainen <tss@iki.fi>
parents:
8217
diff
changeset
|
24 } else { |
2034087a9663
If only userdb prefetch is defined and userdb lookup is tried, give a better error message.
Timo Sirainen <tss@iki.fi>
parents:
8217
diff
changeset
|
25 auth_request_log_error(auth_request, "prefetch", |
2034087a9663
If only userdb prefetch is defined and userdb lookup is tried, give a better error message.
Timo Sirainen <tss@iki.fi>
parents:
8217
diff
changeset
|
26 "passdb didn't return userdb entries"); |
2034087a9663
If only userdb prefetch is defined and userdb lookup is tried, give a better error message.
Timo Sirainen <tss@iki.fi>
parents:
8217
diff
changeset
|
27 } |
8058
17d8b197641b
userdb prefetch: Userdb lookups shouldn't log the "passdb didn't return
Timo Sirainen <tss@iki.fi>
parents:
7854
diff
changeset
|
28 } else if (!auth_request->userdb_lookup || |
17d8b197641b
userdb prefetch: Userdb lookups shouldn't log the "passdb didn't return
Timo Sirainen <tss@iki.fi>
parents:
7854
diff
changeset
|
29 auth_request->auth->verbose_debug) { |
4146
bdf68bc43354
Allow prefetch userdb to exist nicely with other userdbs.
Timo Sirainen <tss@iki.fi>
parents:
3863
diff
changeset
|
30 /* more userdbs, they may know the user */ |
bdf68bc43354
Allow prefetch userdb to exist nicely with other userdbs.
Timo Sirainen <tss@iki.fi>
parents:
3863
diff
changeset
|
31 auth_request_log_info(auth_request, "prefetch", |
7854 | 32 "passdb didn't return userdb entries, " |
33 "trying the next userdb"); | |
4146
bdf68bc43354
Allow prefetch userdb to exist nicely with other userdbs.
Timo Sirainen <tss@iki.fi>
parents:
3863
diff
changeset
|
34 } |
5872
93bd157917ca
Changed userdb callback API. Don't require uid/gid to be returned by userdb.
Timo Sirainen <tss@iki.fi>
parents:
5259
diff
changeset
|
35 callback(USERDB_RESULT_USER_UNKNOWN, auth_request); |
3667 | 36 return; |
37 } | |
38 | |
5872
93bd157917ca
Changed userdb callback API. Don't require uid/gid to be returned by userdb.
Timo Sirainen <tss@iki.fi>
parents:
5259
diff
changeset
|
39 auth_request_log_debug(auth_request, "prefetch", "success"); |
93bd157917ca
Changed userdb callback API. Don't require uid/gid to be returned by userdb.
Timo Sirainen <tss@iki.fi>
parents:
5259
diff
changeset
|
40 callback(USERDB_RESULT_OK, auth_request); |
3667 | 41 } |
42 | |
43 struct userdb_module_interface userdb_prefetch = { | |
44 "prefetch", | |
45 | |
46 NULL, | |
47 NULL, | |
48 NULL, | |
49 | |
50 prefetch_lookup | |
51 }; | |
8217
c47b78e843aa
Separate "unknown passdb/userdb X" and "support for X not compiled in" error messages.
Timo Sirainen <tss@iki.fi>
parents:
8058
diff
changeset
|
52 #else |
c47b78e843aa
Separate "unknown passdb/userdb X" and "support for X not compiled in" error messages.
Timo Sirainen <tss@iki.fi>
parents:
8058
diff
changeset
|
53 struct userdb_module_interface userdb_prefetch = { |
c47b78e843aa
Separate "unknown passdb/userdb X" and "support for X not compiled in" error messages.
Timo Sirainen <tss@iki.fi>
parents:
8058
diff
changeset
|
54 MEMBER(name) "prefetch" |
c47b78e843aa
Separate "unknown passdb/userdb X" and "support for X not compiled in" error messages.
Timo Sirainen <tss@iki.fi>
parents:
8058
diff
changeset
|
55 }; |
3667 | 56 #endif |