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);