dovecot-2.0: dict proxy: Use base_dir as the default dict-server...

dovecot at dovecot.org dovecot at dovecot.org
Sun Jun 28 05:09:08 EEST 2009


details:   http://hg.dovecot.org/dovecot-2.0/rev/ee99bb70b05f
changeset: 9545:ee99bb70b05f
user:      Timo Sirainen <tss at iki.fi>
date:      Sat Jun 27 22:08:48 2009 -0400
description:
dict proxy: Use base_dir as the default dict-server location.

diffstat:

17 files changed, 31 insertions(+), 19 deletions(-)
src/dict/Makefile.am               |    3 ++-
src/dict/dict-connection.c         |    3 ++-
src/dict/dict-settings.c           |    2 ++
src/dict/dict-settings.h           |    1 +
src/lib-dict/Makefile.am           |    1 -
src/lib-dict/dict-client.c         |    6 ++++--
src/lib-dict/dict-client.h         |    2 +-
src/lib-dict/dict-db.c             |    7 ++++---
src/lib-dict/dict-file.c           |    3 ++-
src/lib-dict/dict-private.h        |    2 +-
src/lib-dict/dict-sql.c            |    2 +-
src/lib-dict/dict.c                |    4 ++--
src/lib-dict/dict.h                |    2 +-
src/plugins/acl/acl-lookup-dict.c  |    3 ++-
src/plugins/expire/expire-plugin.c |    3 ++-
src/plugins/expire/expire-tool.c   |    3 ++-
src/plugins/quota/quota-dict.c     |    3 ++-

diffs (241 lines):

diff -r 3f4ae64b27ac -r ee99bb70b05f src/dict/Makefile.am
--- a/src/dict/Makefile.am	Sat Jun 27 22:07:35 2009 -0400
+++ b/src/dict/Makefile.am	Sat Jun 27 22:08:48 2009 -0400
@@ -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
 
diff -r 3f4ae64b27ac -r ee99bb70b05f src/dict/dict-connection.c
--- a/src/dict/dict-connection.c	Sat Jun 27 22:07:35 2009 -0400
+++ b/src/dict/dict-connection.c	Sat Jun 27 22:08:48 2009 -0400
@@ -82,7 +82,8 @@ static int dict_connection_dict_init(str
 	}
 	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);
diff -r 3f4ae64b27ac -r ee99bb70b05f src/dict/dict-settings.c
--- a/src/dict/dict-settings.c	Sat Jun 27 22:07:35 2009 -0400
+++ b/src/dict/dict-settings.c	Sat Jun 27 22:08:48 2009 -0400
@@ -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_settin
 };
 
 struct dict_settings dict_default_settings = {
+	MEMBER(base_dir) PKG_RUNDIR,
 	MEMBER(dict_db_config) "",
 	MEMBER(dicts) ARRAY_INIT
 };
diff -r 3f4ae64b27ac -r ee99bb70b05f src/dict/dict-settings.h
--- a/src/dict/dict-settings.h	Sat Jun 27 22:07:35 2009 -0400
+++ b/src/dict/dict-settings.h	Sat Jun 27 22:08:48 2009 -0400
@@ -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 *);
 };
diff -r 3f4ae64b27ac -r ee99bb70b05f src/lib-dict/Makefile.am
--- a/src/lib-dict/Makefile.am	Sat Jun 27 22:07:35 2009 -0400
+++ b/src/lib-dict/Makefile.am	Sat Jun 27 22:08:48 2009 -0400
@@ -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 = \
diff -r 3f4ae64b27ac -r ee99bb70b05f src/lib-dict/dict-client.c
--- a/src/lib-dict/dict-client.c	Sat Jun 27 22:07:35 2009 -0400
+++ b/src/lib-dict/dict-client.c	Sat Jun 27 22:08:48 2009 -0400
@@ -297,7 +297,8 @@ static void client_dict_disconnect(struc
 
 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, co
 		/* 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;
diff -r 3f4ae64b27ac -r ee99bb70b05f src/lib-dict/dict-client.h
--- a/src/lib-dict/dict-client.h	Sat Jun 27 22:07:35 2009 -0400
+++ b/src/lib-dict/dict-client.h	Sat Jun 27 22:08:48 2009 -0400
@@ -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
diff -r 3f4ae64b27ac -r ee99bb70b05f src/lib-dict/dict-db.c
--- a/src/lib-dict/dict-db.c	Sat Jun 27 22:07:35 2009 -0400
+++ b/src/lib-dict/dict-db.c	Sat Jun 27 22:08:48 2009 -0400
@@ -137,9 +137,10 @@ static int db_dict_open(struct db_dict *
 	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;
diff -r 3f4ae64b27ac -r ee99bb70b05f src/lib-dict/dict-file.c
--- a/src/lib-dict/dict-file.c	Sat Jun 27 22:07:35 2009 -0400
+++ b/src/lib-dict/dict-file.c	Sat Jun 27 22:08:48 2009 -0400
@@ -66,7 +66,8 @@ static struct dotlock_settings file_dict
 
 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;
 	
diff -r 3f4ae64b27ac -r ee99bb70b05f src/lib-dict/dict-private.h
--- a/src/lib-dict/dict-private.h	Sat Jun 27 22:07:35 2009 -0400
+++ b/src/lib-dict/dict-private.h	Sat Jun 27 22:08:48 2009 -0400
@@ -6,7 +6,7 @@ struct dict_vfuncs {
 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,
diff -r 3f4ae64b27ac -r ee99bb70b05f src/lib-dict/dict-sql.c
--- a/src/lib-dict/dict-sql.c	Sat Jun 27 22:07:35 2009 -0400
+++ b/src/lib-dict/dict-sql.c	Sat Jun 27 22:08:48 2009 -0400
@@ -64,7 +64,7 @@ static struct dict *
 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;
diff -r 3f4ae64b27ac -r ee99bb70b05f src/lib-dict/dict.c
--- a/src/lib-dict/dict.c	Sat Jun 27 22:07:35 2009 -0400
+++ b/src/lib-dict/dict.c	Sat Jun 27 22:08:48 2009 -0400
@@ -64,7 +64,7 @@ void dict_drivers_unregister_builtin(voi
 }
 
 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, 
 	} 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)
diff -r 3f4ae64b27ac -r ee99bb70b05f src/lib-dict/dict.h
--- a/src/lib-dict/dict.h	Sat Jun 27 22:07:35 2009 -0400
+++ b/src/lib-dict/dict.h	Sat Jun 27 22:08:48 2009 -0400
@@ -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);
 
diff -r 3f4ae64b27ac -r ee99bb70b05f src/plugins/acl/acl-lookup-dict.c
--- a/src/plugins/acl/acl-lookup-dict.c	Sat Jun 27 22:07:35 2009 -0400
+++ b/src/plugins/acl/acl-lookup-dict.c	Sat Jun 27 22:08:48 2009 -0400
@@ -44,7 +44,8 @@ struct acl_lookup_dict *acl_lookup_dict_
 
 	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) {
diff -r 3f4ae64b27ac -r ee99bb70b05f src/plugins/expire/expire-plugin.c
--- a/src/plugins/expire/expire-plugin.c	Sat Jun 27 22:07:35 2009 -0400
+++ b/src/plugins/expire/expire-plugin.c	Sat Jun 27 22:08:48 2009 -0400
@@ -313,7 +313,8 @@ static void expire_mail_user_created(str
 		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
diff -r 3f4ae64b27ac -r ee99bb70b05f src/plugins/expire/expire-tool.c
--- a/src/plugins/expire/expire-tool.c	Sat Jun 27 22:07:35 2009 -0400
+++ b/src/plugins/expire/expire-tool.c	Sat Jun 27 22:08:48 2009 -0400
@@ -196,7 +196,8 @@ static void expire_run(struct master_ser
 
 	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");
 
diff -r 3f4ae64b27ac -r ee99bb70b05f src/plugins/quota/quota-dict.c
--- a/src/plugins/quota/quota-dict.c	Sat Jun 27 22:07:35 2009 -0400
+++ b/src/plugins/quota/quota-dict.c	Sat Jun 27 22:08:48 2009 -0400
@@ -72,7 +72,8 @@ static int dict_quota_init(struct quota_
 
 	/* 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;
 }
 


More information about the dovecot-cvs mailing list