default_process_limit = 100
default_client_limit = 1000
+default_vsz_limit = 256
service config {
type = config
DEF(SET_ENUM, ssl),
DEF(SET_UINT, default_process_limit),
DEF(SET_UINT, default_client_limit),
+ DEF(SET_UINT, default_vsz_limit),
DEF(SET_BOOL, version_ignore),
DEF(SET_BOOL, mail_debug),
MEMBER(ssl) "yes:no:required",
MEMBER(default_process_limit) 100,
MEMBER(default_client_limit) 1000,
+ MEMBER(default_vsz_limit) 256,
MEMBER(version_ignore) FALSE,
MEMBER(mail_debug) FALSE,
const char *ssl;
unsigned int default_process_limit;
unsigned int default_client_limit;
+ unsigned int default_vsz_limit;
bool version_ignore;
bool mail_debug;
if (auth_args != NULL && service->set->master_set->mail_debug)
env_put("DEBUG=1");
- if (service->set->vsz_limit != 0)
- restrict_process_size(service->set->vsz_limit, -1U);
+ if (service->vsz_limit != 0)
+ restrict_process_size(service->vsz_limit, -1U);
restrict_access_init(&rset);
rset.uid = service->uid;
case FATAL_LOGERROR:
return "Internal logging error";
case FATAL_OUTOFMEM:
- if (service->set->vsz_limit == 0)
+ if (service->vsz_limit == 0)
return "Out of memory";
return t_strdup_printf("Out of memory (vsz_limit=%u MB, "
"you may need to increase it)",
- service->set->vsz_limit);
+ service->vsz_limit);
case FATAL_EXEC:
return "exec() failed";
service->client_limit < set->service_count)
service->client_limit = set->service_count;
+ service->vsz_limit = set->vsz_limit != 0 ? set->vsz_limit :
+ set->master_set->default_vsz_limit;
+
service->type = SERVICE_TYPE_UNKNOWN;
if (*set->type != '\0') {
if (strcmp(set->type, "log") == 0)
/* Maximum number of client connections a process can handle. */
unsigned int client_limit;
+ /* set->vsz_limit or set->master_set->default_client_limit */
+ unsigned int vsz_limit;
/* log process pipe file descriptors. */
int log_fd[2];