Mercurial > dovecot > core-2.2
comparison src/master/dict-process.c @ 9002:9d0037a997f4 HEAD
Initial commit for config rewrite.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 27 Jan 2009 18:21:53 -0500 |
parents | 0e9b885bd29e |
children | 21d4363a3cf7 |
comparison
equal
deleted
inserted
replaced
8692:77c67307d316 | 9002:9d0037a997f4 |
---|---|
92 i_fatal("dup2(3) failed: %m"); | 92 i_fatal("dup2(3) failed: %m"); |
93 | 93 |
94 for (i = 0; i <= 3; i++) | 94 for (i = 0; i <= 3; i++) |
95 fd_close_on_exec(i, FALSE); | 95 fd_close_on_exec(i, FALSE); |
96 | 96 |
97 child_process_init_env(); | 97 child_process_init_env(master_set->defaults); |
98 env_put(t_strconcat("DICT_LISTEN_FROM_FD=", | 98 env_put(t_strconcat("DICT_LISTEN_FROM_FD=", |
99 process->listener->path, NULL)); | 99 process->listener->path, NULL)); |
100 | 100 |
101 if (settings_root->defaults->dict_db_config != NULL) { | 101 if (master_set->defaults->dict_db_config != NULL) { |
102 env_put(t_strconcat("DB_CONFIG=", | 102 env_put(t_strconcat("DB_CONFIG=", |
103 settings_root->defaults->dict_db_config, | 103 master_set->defaults->dict_db_config, |
104 NULL)); | 104 NULL)); |
105 } | 105 } |
106 | 106 |
107 dicts = array_get(&settings_root->dicts, &count); | 107 dicts = array_get(&master_set->defaults->dicts, &count); |
108 i_assert((count % 2) == 0); | 108 i_assert((count % 2) == 0); |
109 for (i = 0; i < count; i += 2) | 109 for (i = 0; i < count; i += 2) |
110 env_put(t_strdup_printf("DICT_%s=%s", dicts[i], dicts[i+1])); | 110 env_put(t_strdup_printf("DICT_%s=%s", dicts[i], dicts[i+1])); |
111 | 111 |
112 /* make sure we don't leak syslog fd, but do it last so that | 112 /* make sure we don't leak syslog fd, but do it last so that |
144 dict_listener_unref(listener); | 144 dict_listener_unref(listener); |
145 } | 145 } |
146 | 146 |
147 static void dict_listener_input(struct dict_listener *listener) | 147 static void dict_listener_input(struct dict_listener *listener) |
148 { | 148 { |
149 unsigned int i; | 149 unsigned int i = 0; |
150 int fd; | 150 int fd; |
151 | 151 |
152 i_assert(listener->processes == NULL); | 152 i_assert(listener->processes == NULL); |
153 | 153 |
154 for (i = 0; i < settings_root->defaults->dict_process_count; i++) { | 154 if (array_is_created(&master_set->defaults->dicts)) { |
155 if (dict_process_create(listener) < 0) | 155 for (i = 0; i < master_set->defaults->dict_process_count; i++) { |
156 break; | 156 if (dict_process_create(listener) < 0) |
157 break; | |
158 } | |
157 } | 159 } |
158 if (i > 0) | 160 if (i > 0) |
159 io_remove(&listener->io); | 161 io_remove(&listener->io); |
160 else { | 162 else { |
161 /* failed to create dict process, so just reject this | 163 /* failed to create dict process, so just reject this |
218 | 220 |
219 void dict_processes_init(void) | 221 void dict_processes_init(void) |
220 { | 222 { |
221 const char *path; | 223 const char *path; |
222 | 224 |
223 path = t_strconcat(settings_root->defaults->base_dir, | 225 path = t_strconcat(master_set->defaults->base_dir, |
224 "/"DICT_SERVER_SOCKET_NAME, NULL); | 226 "/"DICT_SERVER_SOCKET_NAME, NULL); |
225 dict_listener = dict_listener_init(path); | 227 dict_listener = dict_listener_init(path); |
226 | 228 |
227 child_process_set_destroy_callback(PROCESS_TYPE_DICT, | 229 child_process_set_destroy_callback(PROCESS_TYPE_DICT, |
228 dict_process_destroyed); | 230 dict_process_destroyed); |