annotate src/master/dict-process.c @ 3975:9de8bce1077e HEAD

Added plugin {} section to dovecot.conf for passing extra environment variables to mail processes.
author Timo Sirainen <tss@iki.fi>
date Thu, 02 Feb 2006 23:29:15 +0200
parents aeb424e64f24
children 9928ebb54719
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3855
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1 /* Copyright (C) 2006 Timo Sirainen */
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3 #include "common.h"
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
4 #include "ioloop.h"
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
5 #include "network.h"
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
6 #include "fd-close-on-exec.h"
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
7 #include "env-util.h"
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
8 #include "log.h"
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
9 #include "dict-process.h"
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
10
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
11 #include <syslog.h>
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
12 #include <unistd.h>
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
13 #include <sys/stat.h>
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
14
3885
b624b687fe13 Create dict-server socket to base_dir.
Timo Sirainen <tss@iki.fi>
parents: 3879
diff changeset
15 #define DICT_SERVER_SOCKET_NAME "dict-server"
3855
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
16
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
17 struct dict_process {
3885
b624b687fe13 Create dict-server socket to base_dir.
Timo Sirainen <tss@iki.fi>
parents: 3879
diff changeset
18 char *path;
3855
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
19 int fd;
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
20 struct io *io;
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
21 };
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
22
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
23 static struct dict_process *process;
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
24
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
25 static void dict_process_unlisten(struct dict_process *process);
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
26
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
27 static int dict_process_start(struct dict_process *process)
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
28 {
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
29 struct log_io *log;
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
30 const char *executable;
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
31 int i, log_fd;
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
32 pid_t pid;
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
33
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
34 log_fd = log_create_pipe(&log, 0);
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
35 if (log_fd < 0)
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
36 pid = -1;
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
37 else {
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
38 pid = fork();
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
39 if (pid < 0)
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
40 i_error("fork() failed: %m");
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
41 }
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
42
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
43 if (pid < 0) {
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
44 (void)close(log_fd);
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
45 return -1;
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
46 }
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
47
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
48 if (pid != 0) {
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
49 /* master */
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
50 PID_ADD_PROCESS_TYPE(pid, PROCESS_TYPE_DICT);
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
51 log_set_prefix(log, "dict: ");
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
52 (void)close(log_fd);
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
53
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
54 dict_process_unlisten(process);
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
55 return 0;
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
56 }
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
57 log_set_prefix(log, "master-dict: ");
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
58
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
59 /* set stdin and stdout to /dev/null, so anything written into it
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
60 gets ignored. */
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
61 if (dup2(null_fd, 0) < 0)
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
62 i_fatal("dup2(stdin) failed: %m");
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
63 if (dup2(null_fd, 1) < 0)
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
64 i_fatal("dup2(stdout) failed: %m");
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
65
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
66 /* stderr = log, 3 = listener */
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
67 if (dup2(log_fd, 2) < 0)
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
68 i_fatal("dup2(stderr) failed: %m");
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
69 if (dup2(process->fd, 3) < 0)
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
70 i_fatal("dup2(3) failed: %m");
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
71
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
72 for (i = 0; i <= 3; i++)
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
73 fd_close_on_exec(i, FALSE);
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
74
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
75 child_process_init_env();
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
76 env_put(t_strconcat("DICT_LISTEN_FROM_FD=", process->path, NULL));
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
77
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
78 /* make sure we don't leak syslog fd, but do it last so that
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
79 any errors above will be logged */
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
80 closelog();
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
81
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
82 executable = PKG_LIBEXECDIR"/dict";
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
83 client_process_exec(executable, "");
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
84 i_fatal_status(FATAL_EXEC, "execv(%s) failed: %m", executable);
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
85 return -1;
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
86 }
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
87
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
88 static void dict_process_listen_input(void *context)
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
89 {
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
90 struct dict_process *process = context;
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
91
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
92 dict_process_start(process);
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
93 }
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
94
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
95 static int dict_process_listen(struct dict_process *process)
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
96 {
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
97 mode_t old_umask;
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
98 int fd, i = 0;
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
99
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
100 for (;;) {
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
101 old_umask = umask(0);
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
102 process->fd = net_listen_unix(process->path, 64);
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
103 umask(old_umask);
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
104
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
105 if (process->fd != -1)
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
106 break;
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
107
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
108 if (errno != EADDRINUSE || ++i == 2) {
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
109 i_error("net_listen_unix(%s) failed: %m",
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
110 process->path);
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
111 return -1;
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
112 }
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
113
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
114 /* see if it really exists */
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
115 fd = net_connect_unix(process->path);
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
116 if (fd != -1 || errno != ECONNREFUSED) {
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
117 if (fd != -1) (void)close(fd);
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
118 i_error("Socket already exists: %s", process->path);
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
119 return -1;
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
120 }
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
121
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
122 /* delete and try again */
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
123 if (unlink(process->path) < 0 && errno != ENOENT) {
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
124 i_error("unlink(%s) failed: %m", process->path);
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
125 return -1;
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
126 }
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
127 }
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
128
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
129 fd_close_on_exec(process->fd, TRUE);
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
130 process->io = io_add(process->fd, IO_READ,
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
131 dict_process_listen_input, process);
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
132
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
133 return process->fd != -1 ? 0 : -1;
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
134 }
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
135
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
136 static void dict_process_unlisten(struct dict_process *process)
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
137 {
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
138 if (process->fd == -1)
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
139 return;
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
140
3960
aeb424e64f24 Call io_remove() before closing the fd. It's required by kqueue.
Timo Sirainen <tss@iki.fi>
parents: 3892
diff changeset
141 io_remove(&process->io);
aeb424e64f24 Call io_remove() before closing the fd. It's required by kqueue.
Timo Sirainen <tss@iki.fi>
parents: 3892
diff changeset
142
3855
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
143 if (close(process->fd) < 0)
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
144 i_error("close(dict) failed: %m");
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
145 process->fd = -1;
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
146 }
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
147
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
148 void dict_process_init(void)
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
149 {
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
150 process = i_new(struct dict_process, 1);
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
151 process->fd = -1;
3885
b624b687fe13 Create dict-server socket to base_dir.
Timo Sirainen <tss@iki.fi>
parents: 3879
diff changeset
152 process->path = i_strconcat(settings_root->defaults->base_dir,
3975
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3960
diff changeset
153 "/"DICT_SERVER_SOCKET_NAME, NULL);
9de8bce1077e Added plugin {} section to dovecot.conf for passing extra environment
Timo Sirainen <tss@iki.fi>
parents: 3960
diff changeset
154 (void)dict_process_listen(process);
3855
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
155 }
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
156
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
157 void dict_process_deinit(void)
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
158 {
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
159 dict_process_unlisten(process);
3885
b624b687fe13 Create dict-server socket to base_dir.
Timo Sirainen <tss@iki.fi>
parents: 3879
diff changeset
160 i_free(process->path);
3855
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
161 i_free(process);
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
162 }
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
163
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
164 void dict_process_restart(void)
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
165 {
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
166 dict_process_deinit();
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
167 dict_process_init();
8ce85fb481aa Forgot to add in last commit.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
168 }