]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
dict proxy: Use base_dir as the default dict-server location.
authorTimo Sirainen <tss@iki.fi>
Sun, 28 Jun 2009 02:08:48 +0000 (22:08 -0400)
committerTimo Sirainen <tss@iki.fi>
Sun, 28 Jun 2009 02:08:48 +0000 (22:08 -0400)
--HG--
branch : HEAD

17 files changed:
src/dict/Makefile.am
src/dict/dict-connection.c
src/dict/dict-settings.c
src/dict/dict-settings.h
src/lib-dict/Makefile.am
src/lib-dict/dict-client.c
src/lib-dict/dict-client.h
src/lib-dict/dict-db.c
src/lib-dict/dict-file.c
src/lib-dict/dict-private.h
src/lib-dict/dict-sql.c
src/lib-dict/dict.c
src/lib-dict/dict.h
src/plugins/acl/acl-lookup-dict.c
src/plugins/expire/expire-plugin.c
src/plugins/expire/expire-tool.c
src/plugins/quota/quota-dict.c

index b00eaab33deb176ff0b0139d2ecbcd49a571e71c..7b18b3e0aa417defccfe1016fb35673b910e3a16 100644 (file)
@@ -8,7 +8,8 @@ AM_CPPFLAGS = \
        -I$(top_srcdir)/src/lib-settings \
        -I$(top_srcdir)/src/lib-dict \
        -I$(top_srcdir)/src/lib-sql \
-       -DDICT_MODULE_DIR=\""$(moduledir)/dict"\"
+       -DDICT_MODULE_DIR=\""$(moduledir)/dict"\" \
+       -DPKG_RUNDIR=\""$(rundir)"\"
 
 dict_LDFLAGS = -export-dynamic
 
index a68775243633e00135071dd8a022e895ad0c7e03..f1b1f7f5da6a7d843080b23c44cfc6dd02e2a99c 100644 (file)
@@ -82,7 +82,8 @@ static int dict_connection_dict_init(struct dict_connection *conn)
        }
        uri = strlist[i+1];
 
-       conn->dict = dict_init(uri, conn->value_type, conn->username);
+       conn->dict = dict_init(uri, conn->value_type, conn->username,
+                              dict_settings->base_dir);
        if (conn->dict == NULL) {
                /* dictionary initialization failed */
                i_error("Failed to initialize dictionary '%s'", conn->name);
index 570dac98ce4c5a33512e903292977b0d07e6f6bc..c962568faec18ba6b7c800ad9d245876356cedda 100644 (file)
@@ -9,6 +9,7 @@
        { type, #name, offsetof(struct dict_settings, name), NULL }
 
 static struct setting_define dict_setting_defines[] = {
+       DEF(SET_STR, base_dir),
        DEF(SET_STR, dict_db_config),
        { SET_STRLIST, "dict", offsetof(struct dict_settings, dicts), NULL },
 
@@ -16,6 +17,7 @@ static struct setting_define dict_setting_defines[] = {
 };
 
 struct dict_settings dict_default_settings = {
+       MEMBER(base_dir) PKG_RUNDIR,
        MEMBER(dict_db_config) "",
        MEMBER(dicts) ARRAY_INIT
 };
index e62f07435a3b16c86591321b486ea3f68ae73c94..cb906e8db31d0e8a0143c93c03d2f864457e2399 100644 (file)
@@ -2,6 +2,7 @@
 #define DICT_SETTINGS_H
 
 struct dict_settings {
+       const char *base_dir;
        const char *dict_db_config;
        ARRAY_DEFINE(dicts, const char *);
 };
index 344572113b9641375ac4864808eb7b3ad50ced3f..986c4e2ec3ab988691ae0cbccd492775d474ff68 100644 (file)
@@ -7,7 +7,6 @@ AM_CPPFLAGS = \
        -I$(top_srcdir)/src/lib \
        -I$(top_srcdir)/src/lib-sql \
        -I$(top_srcdir)/src/lib-settings \
-       -DPKG_RUNDIR=\""$(rundir)"\" \
        $(SQL_CFLAGS)
 
 base_sources = \
index 8fb8fb740caa204ce4b2df623916aa2485d8ba21..e1481eb7daab79ee3a73914de51ceb2b74b86abb 100644 (file)
@@ -297,7 +297,8 @@ static void client_dict_disconnect(struct client_dict *dict)
 
 static struct dict *
 client_dict_init(struct dict *driver, const char *uri,
-                enum dict_data_type value_type, const char *username)
+                enum dict_data_type value_type, const char *username,
+                const char *base_dir)
 {
        struct client_dict *dict;
        const char *dest_uri;
@@ -323,7 +324,8 @@ client_dict_init(struct dict *driver, const char *uri,
                /* path given */
                dict->path = p_strdup_until(pool, uri, dest_uri);
        } else {
-               dict->path = DEFAULT_DICT_SERVER_SOCKET_PATH;
+               dict->path = p_strconcat(pool, base_dir,
+                               "/"DEFAULT_DICT_SERVER_SOCKET_FNAME, NULL);
        }
        dict->uri = p_strdup(pool, dest_uri + 1);
        return &dict->dict;
index eb0e7c587119d7a66194ffc3b91efd32c33ddf19..88d40ad9bbb6cd0bba138c057dbbfc85df41c02c 100644 (file)
@@ -3,7 +3,7 @@
 
 #include "dict.h"
 
-#define DEFAULT_DICT_SERVER_SOCKET_PATH PKG_RUNDIR"/dict"
+#define DEFAULT_DICT_SERVER_SOCKET_FNAME "dict-server"
 
 #define DICT_CLIENT_PROTOCOL_MAJOR_VERSION 2
 #define DICT_CLIENT_PROTOCOL_MINOR_VERSION 0
index 40d53044e2b35f3814ccd1dd253e214d77091650..ae3147c098a705843995f45181d22ffefdad27f8 100644 (file)
@@ -137,9 +137,10 @@ static int db_dict_open(struct db_dict *dict, const char *uri,
        return 0;
 }
 
-static struct dict *db_dict_init(struct dict *driver, const char *uri,
-                                enum dict_data_type value_type,
-                                const char *username)
+static struct dict *
+db_dict_init(struct dict *driver, const char *uri,
+            enum dict_data_type value_type,
+            const char *username, const char *base_dir ATTR_UNUSED)
 {
        struct db_dict *dict;
        pool_t pool;
index 6ba82b75c12654df6dc2fb087eae93c46be19242..085d651a5839c017d9057869b720985a1cf29d8c 100644 (file)
@@ -66,7 +66,8 @@ static struct dotlock_settings file_dict_dotlock_settings = {
 
 static struct dict *file_dict_init(struct dict *driver, const char *uri,
                                   enum dict_data_type value_type ATTR_UNUSED,
-                                  const char *username ATTR_UNUSED)
+                                  const char *username ATTR_UNUSED,
+                                  const char *base_dir ATTR_UNUSED)
 {
        struct file_dict *dict;
        
index e4df211f68bc3df9dc243345d397323a813bffb9..7f423e3ede4d8cbda40fa6ea83a4e46d6bc29600 100644 (file)
@@ -6,7 +6,7 @@
 struct dict_vfuncs {
        struct dict *(*init)(struct dict *dict_driver, const char *uri,
                             enum dict_data_type value_type,
-                            const char *username);
+                            const char *username, const char *base_dir);
        void (*deinit)(struct dict *dict);
 
        int (*lookup)(struct dict *dict, pool_t pool,
index 10c740d5f3ecd9ca21b3bfeac92412f22d2c51ff..2cc332540c53d08198e741fef700e19aa3ef7423 100644 (file)
@@ -64,7 +64,7 @@ static void sql_dict_prev_inc_flush(struct sql_dict_transaction_context *ctx);
 static struct dict *
 sql_dict_init(struct dict *driver, const char *uri,
              enum dict_data_type value_type ATTR_UNUSED,
-             const char *username)
+             const char *username, const char *base_dir ATTR_UNUSED)
 {
        struct sql_dict *dict;
        pool_t pool;
index 13939ba8b94d9551db683a15d8087b6dc4a4aa96..38f05666d4cd92294360c372144f7f2c3cf5310e 100644 (file)
@@ -64,7 +64,7 @@ void dict_drivers_unregister_builtin(void)
 }
 
 struct dict *dict_init(const char *uri, enum dict_data_type value_type,
-                      const char *username)
+                      const char *username, const char *base_dir)
 {
        struct dict *dict;
        const char *p, *name;
@@ -85,7 +85,7 @@ struct dict *dict_init(const char *uri, enum dict_data_type value_type,
        } T_END;
 
        return dict == NULL ? NULL :
-               dict->v.init(dict, p+1, value_type, username);
+               dict->v.init(dict, p+1, value_type, username, base_dir);
 }
 
 void dict_deinit(struct dict **_dict)
index cb91e09828dd6ba74206e8700e4df5b00d328c98..d5dc8a615ac3fb6233c8bb164997aec72a755c76 100644 (file)
@@ -29,7 +29,7 @@ void dict_drivers_unregister_all(void);
 /* Open dictionary with given URI (type:data).
    If URI is invalid, returns NULL. */
 struct dict *dict_init(const char *uri, enum dict_data_type value_type,
-                      const char *username);
+                      const char *username, const char *base_dir);
 /* Close dictionary. */
 void dict_deinit(struct dict **dict);
 
index f0296d09fa93cc244998a0ec8b8bc28f45b9996b..b6a4b6895ab295be096cb60511c2b84df8328a8b 100644 (file)
@@ -44,7 +44,8 @@ struct acl_lookup_dict *acl_lookup_dict_init(struct mail_user *user)
 
        uri = mail_user_plugin_getenv(user, "acl_shared_dict");
        if (uri != NULL) {
-               dict->dict = dict_init(uri, DICT_DATA_TYPE_STRING, "");
+               dict->dict = dict_init(uri, DICT_DATA_TYPE_STRING, "",
+                                      user->set->base_dir);
                if (dict->dict == NULL)
                        i_error("acl: dict_init(%s) failed", uri);
        } else if (user->mail_debug) {
index c4ead8f266afd3372ddc360a12ecb5f9df2d5e7b..9d107a047d27b6f9bbf877c35d99314335e38c22 100644 (file)
@@ -313,7 +313,8 @@ static void expire_mail_user_created(struct mail_user *user)
                euser->env = expire_env_init(expunge_env, altmove_env);
                /* we're using only shared dictionary, the username
                   doesn't matter. */
-               euser->db = dict_init(dict_uri, DICT_DATA_TYPE_UINT32, "");
+               euser->db = dict_init(dict_uri, DICT_DATA_TYPE_UINT32, "",
+                                     user->set->base_dir);
                if (euser->db == NULL)
                        i_error("expire plugin: dict_init(%s) failed", dict_uri);
                else
index bfc632684db559e6d5cae3019706bb8351ae41d8..207d6d6bcf6a8c44ce7384caf648876f1ce80805 100644 (file)
@@ -196,7 +196,8 @@ static void expire_run(struct master_service *service, bool testrun)
 
        ctx.testrun = testrun;
        env = expire_env_init(expire, expire_altmove);
-       dict = dict_init(expire_dict, DICT_DATA_TYPE_UINT32, "");
+       dict = dict_init(expire_dict, DICT_DATA_TYPE_UINT32, "",
+                        user_set->base_dir);
        if (dict == NULL)
                i_fatal("dict_init() failed");
 
index ba71edbea9f4cc098f37280fb49930caeb2d03cf..94ba2f7c0df75f7ec0d278a6d03c355e35c96b4b 100644 (file)
@@ -72,7 +72,8 @@ static int dict_quota_init(struct quota_root *_root, const char *args)
 
        /* FIXME: we should use 64bit integer as datatype instead but before
           it can actually be used don't bother */
-       root->dict = dict_init(args, DICT_DATA_TYPE_STRING, username);
+       root->dict = dict_init(args, DICT_DATA_TYPE_STRING, username,
+                              _root->quota->user->set->base_dir);
        return root->dict != NULL ? 0 : -1;
 }