[dovecot-cvs]
dovecot/src/master Makefile.am,1.9,1.10 login-process.c,1.42,1.43
mail-process.c,1.17,1.18 mail-process.h,1.2,1.3
master-settings.c,1.17,1.18 master-settings.h,1.11,1.12
cras at procontrol.fi
cras at procontrol.fi
Wed May 14 22:23:07 EEST 2003
Update of /home/cvs/dovecot/src/master
In directory danu:/tmp/cvs-serv27511/src/master
Modified Files:
Makefile.am login-process.c mail-process.c mail-process.h
master-settings.c master-settings.h
Log Message:
Added support for dynamically loadable imap/pop3 modules.
Index: Makefile.am
===================================================================
RCS file: /home/cvs/dovecot/src/master/Makefile.am,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- Makefile.am 30 Jan 2003 19:01:40 -0000 1.9
+++ Makefile.am 14 May 2003 18:23:05 -0000 1.10
@@ -8,6 +8,7 @@
-DSYSCONFDIR=\""$(sysconfdir)"\" \
-DPKG_RUNDIR=\""$(localstatedir)/run/$(PACKAGE)"\" \
-DPKG_LIBEXECDIR=\""$(pkglibexecdir)"\" \
+ -DPKG_LIBDIR=\""$(libdir)/$(PACKAGE)"\" \
-DSSLDIR=\""$(ssldir)\""
dovecot_LDADD = \
Index: login-process.c
===================================================================
RCS file: /home/cvs/dovecot/src/master/login-process.c,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -d -r1.42 -r1.43
--- login-process.c 8 May 2003 04:01:51 -0000 1.42
+++ login-process.c 14 May 2003 18:23:05 -0000 1.43
@@ -30,6 +30,7 @@
struct login_process *newest_nonlisten_process;
const char *executable;
+ const char *module_dir;
unsigned int process_size;
int process_type;
int *listen_fd, *ssl_listen_fd;
@@ -88,12 +89,16 @@
group->process_type = PROCESS_TYPE_IMAP;
group->listen_fd = &mail_fd[FD_IMAP];
group->ssl_listen_fd = &mail_fd[FD_IMAPS];
+ group->module_dir = set->imap_use_modules ? NULL :
+ set->imap_modules;
} else if (strcmp(login_set->name, "pop3") == 0) {
group->executable = set->pop3_executable;
group->process_size = set->pop3_process_size;
group->process_type = PROCESS_TYPE_POP3;
group->listen_fd = &mail_fd[FD_POP3];
group->ssl_listen_fd = &mail_fd[FD_POP3S];
+ group->module_dir = set->pop3_use_modules ? NULL :
+ set->pop3_modules;
} else
i_panic("Unknown login group name '%s'", login_set->name);
@@ -120,9 +125,10 @@
master_reply.success =
create_mail_process(request->fd, &request->ip,
group->executable,
+ group->module_dir,
group->process_size,
- group->process_type, reply,
- (const char *) data);
+ group->process_type,
+ reply, (const char *) data);
}
/* reply to login */
Index: mail-process.c
===================================================================
RCS file: /home/cvs/dovecot/src/master/mail-process.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- mail-process.c 8 May 2003 04:35:56 -0000 1.17
+++ mail-process.c 14 May 2003 18:23:05 -0000 1.18
@@ -100,9 +100,9 @@
}
int create_mail_process(int socket, struct ip_addr *ip,
- const char *executable, unsigned int process_size,
- int process_type, struct auth_master_reply *reply,
- const char *data)
+ const char *executable, const char *module_dir,
+ unsigned int process_size, int process_type,
+ struct auth_master_reply *reply, const char *data)
{
static const char *argv[] = { NULL, NULL, NULL };
const char *host, *mail, *chroot_dir, *home_dir, *full_home_dir;
@@ -199,6 +199,8 @@
set->mbox_dotlock_change_timeout));
if (set->mbox_read_dotlock)
env_put("MBOX_READ_DOTLOCK=1");
+
+ env_put(t_strconcat("MODULE_DIR=", module_dir, NULL));
/* user given environment - may be malicious. virtual_user comes from
auth process, but don't trust that too much either. Some auth
Index: mail-process.h
===================================================================
RCS file: /home/cvs/dovecot/src/master/mail-process.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- mail-process.h 15 Apr 2003 16:58:48 -0000 1.2
+++ mail-process.h 14 May 2003 18:23:05 -0000 1.3
@@ -4,9 +4,9 @@
struct auth_master_reply;
int create_mail_process(int socket, struct ip_addr *ip,
- const char *executable, unsigned int process_size,
- int process_type, struct auth_master_reply *reply,
- const char *data);
+ const char *executable, const char *module_dir,
+ unsigned int process_size, int process_type,
+ struct auth_master_reply *reply, const char *data);
void mail_process_destroyed(pid_t pid);
Index: master-settings.c
===================================================================
RCS file: /home/cvs/dovecot/src/master/master-settings.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- master-settings.c 8 May 2003 03:24:57 -0000 1.17
+++ master-settings.c 14 May 2003 18:23:05 -0000 1.18
@@ -73,10 +73,14 @@
/* imap */
DEF(SET_STR, imap_executable),
DEF(SET_INT, imap_process_size),
+ DEF(SET_BOOL, imap_use_modules),
+ DEF(SET_STR, imap_modules),
/* pop3 */
DEF(SET_STR, pop3_executable),
DEF(SET_INT, pop3_process_size),
+ DEF(SET_BOOL, pop3_use_modules),
+ DEF(SET_STR, pop3_modules),
{ 0, NULL, 0 }
};
@@ -182,10 +186,14 @@
/* imap */
MEMBER(imap_executable) PKG_LIBEXECDIR"/imap",
MEMBER(imap_process_size) 256,
+ MEMBER(imap_use_modules) FALSE,
+ MEMBER(imap_modules) PKG_LIBDIR"/imap",
/* pop3 */
MEMBER(pop3_executable) PKG_LIBEXECDIR"/pop3",
MEMBER(pop3_process_size) 256,
+ MEMBER(pop3_use_modules) FALSE,
+ MEMBER(pop3_modules) PKG_LIBDIR"/imap",
MEMBER(login_gid) 0,
MEMBER(auths) NULL,
Index: master-settings.h
===================================================================
RCS file: /home/cvs/dovecot/src/master/master-settings.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- master-settings.h 8 May 2003 03:24:57 -0000 1.11
+++ master-settings.h 14 May 2003 18:23:05 -0000 1.12
@@ -57,10 +57,14 @@
/* imap */
const char *imap_executable;
unsigned int imap_process_size;
+ int imap_use_modules;
+ const char *imap_modules;
/* pop3 */
const char *pop3_executable;
unsigned int pop3_process_size;
+ int pop3_use_modules;
+ const char *pop3_modules;
/* .. */
gid_t login_gid;
More information about the dovecot-cvs
mailing list