]>
Commit | Line | Data |
---|---|---|
b40388bb MT |
1 | diff -Naur cyrus-imapd-2.2.12.orig/imap/mupdate.c cyrus-imapd-2.2.12/imap/mupdate.c |
2 | --- cyrus-imapd-2.2.12.orig/imap/mupdate.c 2004-12-17 17:32:16.000000000 +0100 | |
3 | +++ cyrus-imapd-2.2.12/imap/mupdate.c 2005-11-04 14:24:04.000000000 +0100 | |
4 | @@ -460,9 +460,36 @@ | |
5 | return 0; | |
6 | } | |
7 | ||
8 | + | |
9 | +/* | |
10 | + * The auth_*.c backends called by mysasl_proxy_policy() | |
11 | + * use static variables which we need to protect with a mutex. | |
12 | + */ | |
13 | +static pthread_mutex_t proxy_policy_mutex = PTHREAD_MUTEX_INITIALIZER; | |
14 | + | |
15 | +static int mupdate_proxy_policy(sasl_conn_t *conn, | |
16 | + void *context, | |
17 | + const char *requested_user, unsigned rlen, | |
18 | + const char *auth_identity, unsigned alen, | |
19 | + const char *def_realm, | |
20 | + unsigned urlen, | |
21 | + struct propctx *propctx) | |
22 | +{ | |
23 | + int r; | |
24 | + | |
25 | + pthread_mutex_lock(&proxy_policy_mutex); /* LOCK */ | |
26 | + | |
27 | + r = mysasl_proxy_policy(conn, context, requested_user, rlen, | |
28 | + auth_identity, alen, def_realm, urlen, propctx); | |
29 | + | |
30 | + pthread_mutex_unlock(&proxy_policy_mutex); /* UNLOCK */ | |
31 | + | |
32 | + return r; | |
33 | +} | |
34 | + | |
35 | static struct sasl_callback mysasl_cb[] = { | |
36 | { SASL_CB_GETOPT, &mysasl_config, NULL }, | |
37 | - { SASL_CB_PROXY_POLICY, &mysasl_proxy_policy, NULL }, | |
38 | + { SASL_CB_PROXY_POLICY, &mupdate_proxy_policy, NULL }, | |
39 | { SASL_CB_LIST_END, NULL, NULL } | |
40 | }; | |
41 |