]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blame - src/patches/cyrus-imapd-2.2.12-mupdate-thread-safe.patch
Wir kehren zurueck zu Kudzu, da hwinfo noch mehr Aerger macht.
[people/teissler/ipfire-2.x.git] / src / patches / cyrus-imapd-2.2.12-mupdate-thread-safe.patch
CommitLineData
b40388bb
MT
1diff -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