[dovecot-cvs] dovecot/src/master mail-process.c,1.72,1.73
cras at dovecot.org
cras at dovecot.org
Tue Apr 12 11:37:29 EEST 2005
Update of /var/lib/cvs/dovecot/src/master
In directory talvi:/tmp/cvs-serv4748
Modified Files:
mail-process.c
Log Message:
Send all unrecognized parameters from userdb to imap/pop3 processes. Useful
for passing plugin parameters.
Index: mail-process.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/master/mail-process.c,v
retrieving revision 1.72
retrieving revision 1.73
diff -u -d -r1.72 -r1.73
--- mail-process.c 12 Feb 2005 14:05:41 -0000 1.72
+++ mail-process.c 12 Apr 2005 08:37:26 -0000 1.73
@@ -310,7 +310,9 @@
pid_t pid;
uid_t uid;
gid_t gid;
- int i, err, ret, log_fd, nice;
+ array_t ARRAY_DEFINE(extra_args, const char *);
+ unsigned int i, count;
+ int err, ret, log_fd, nice;
// FIXME: per-group
if (mail_process_count == set->max_mail_processes) {
@@ -318,6 +320,7 @@
return FALSE;
}
+ ARRAY_CREATE(&extra_args, pool_datastack_create(), const char *, 16);
mail = home_dir = chroot_dir = system_user = "";
uid = gid = 0; nice = 0;
for (; *args != NULL; args++) {
@@ -340,6 +343,10 @@
uid = (uid_t)strtoul(*args + 4, NULL, 10);
} else if (strncmp(*args, "gid=", 4) == 0)
gid = (gid_t)strtoul(*args + 4, NULL, 10);
+ else {
+ const char *arg = *args;
+ array_append(&extra_args, &arg, 1);
+ }
}
if (*chroot_dir == '\0' && (p = strstr(home_dir, "/./")) != NULL) {
@@ -459,6 +466,21 @@
mail_process_set_environment(set, mail, var_expand_table);
+ /* add extra args. uppercase key value. */
+ args = array_get(&extra_args, &count);
+ for (i = 0; i < count; i++) {
+ p = strchr(args[i], '=');
+ if (p == NULL) {
+ /* boolean */
+ env_put(t_strconcat(t_str_ucase(args[i]), "=1", NULL));
+
+ } else {
+ /* key=value */
+ env_put(t_strconcat(t_str_ucase(
+ t_strdup_until(args[i], p)), p, NULL));
+ }
+ }
+
env_put("LOGGED_IN=1");
env_put(t_strconcat("HOME=", home_dir, NULL));
env_put(t_strconcat("USER=", user, NULL));
More information about the dovecot-cvs
mailing list