PROCESS_TYPE_UNKNOWN,
PROCESS_TYPE_AUTH,
PROCESS_TYPE_LOGIN,
- PROCESS_TYPE_MAIL,
+ PROCESS_TYPE_IMAP,
+ PROCESS_TYPE_POP3,
PROCESS_TYPE_SSL_PARAM,
PROCESS_TYPE_MAX
const char *executable;
unsigned int process_size;
+ int process_type;
int *listen_fd, *ssl_listen_fd;
};
if (strcmp(login_set->name, "imap") == 0) {
group->executable = set->imap_executable;
group->process_size = set->imap_process_size;
+ group->process_type = PROCESS_TYPE_IMAP;
group->listen_fd = &mail_fd[FD_IMAP];
group->ssl_listen_fd = &mail_fd[FD_IMAPS];
} 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];
} else
create_mail_process(request->fd, &request->ip,
group->executable,
group->process_size,
- reply, (const char *) data);
+ group->process_type, reply,
+ (const char *) data);
}
/* reply to login */
int create_mail_process(int socket, struct ip_addr *ip,
const char *executable, unsigned int process_size,
- struct auth_master_reply *reply, const char *data)
+ int process_type, struct auth_master_reply *reply,
+ const char *data)
{
static const char *argv[] = { NULL, NULL, NULL };
const char *host, *mail;
if (pid != 0) {
/* master */
mail_process_count++;
- PID_ADD_PROCESS_TYPE(pid, PROCESS_TYPE_MAIL);
+ PID_ADD_PROCESS_TYPE(pid, process_type);
return TRUE;
}
int create_mail_process(int socket, struct ip_addr *ip,
const char *executable, unsigned int process_size,
- struct auth_master_reply *reply, const char *data);
+ int process_type, struct auth_master_reply *reply,
+ const char *data);
void mail_process_destroyed(pid_t pid);
"auth",
"login",
"imap",
+ "pop3",
"ssl-param"
};
process_type = PID_GET_PROCESS_TYPE(pid);
PID_REMOVE_PROCESS_TYPE(pid);
- if (process_type == PROCESS_TYPE_MAIL)
+ if (process_type == PROCESS_TYPE_IMAP ||
+ process_type == PROCESS_TYPE_POP3)
mail_process_destroyed(pid);
if (process_type == PROCESS_TYPE_SSL_PARAM)
ssl_parameter_process_destroyed(pid);