Mercurial > dovecot > core-2.2
annotate src/master/service-process.h @ 23017:c1d36f2575c7 default tip
lib-imap: Fix "Don't accept strings with NULs" cherry-pick
author | Timo Sirainen <timo.sirainen@open-xchange.com> |
---|---|
date | Thu, 29 Aug 2019 09:55:25 +0300 |
parents | d0d7b810646b |
children |
rev | line source |
---|---|
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
1 #ifndef SERVICE_PROCESS_H |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
2 #define SERVICE_PROCESS_H |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
3 |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
4 struct service_process { |
10099
fea8122e1deb
master: Keep service's processes in an easily accessible linked list.
Timo Sirainen <tss@iki.fi>
parents:
9923
diff
changeset
|
5 struct service_process *prev, *next; |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
6 struct service *service; |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
7 int refcount; |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
8 |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
9 pid_t pid; |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
10 /* uid is used to check for old/invalid status messages */ |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
11 unsigned int uid; |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
12 |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
13 /* number of new connections process is currently accepting */ |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
14 unsigned int available_count; |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
15 /* number of connections process has ever accepted */ |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
16 unsigned int total_count; |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
17 |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
18 /* time when process started idling, or 0 if we're not idling */ |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
19 time_t idle_start; |
9906
29ebf1c9ff26
master: Kill extra idling processes.
Timo Sirainen <tss@iki.fi>
parents:
9235
diff
changeset
|
20 /* kill process if it hits idle timeout */ |
29ebf1c9ff26
master: Kill extra idling processes.
Timo Sirainen <tss@iki.fi>
parents:
9235
diff
changeset
|
21 struct timeout *to_idle; |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
22 |
11517
3fa10300c70c
master: If an idling process seems stuck, log an error and disable it.
Timo Sirainen <tss@iki.fi>
parents:
10101
diff
changeset
|
23 /* time when we last received a status update */ |
3fa10300c70c
master: If an idling process seems stuck, log an error and disable it.
Timo Sirainen <tss@iki.fi>
parents:
10101
diff
changeset
|
24 time_t last_status_update; |
3fa10300c70c
master: If an idling process seems stuck, log an error and disable it.
Timo Sirainen <tss@iki.fi>
parents:
10101
diff
changeset
|
25 /* time when we last sent SIGINT to process */ |
3fa10300c70c
master: If an idling process seems stuck, log an error and disable it.
Timo Sirainen <tss@iki.fi>
parents:
10101
diff
changeset
|
26 time_t last_kill_sent; |
3fa10300c70c
master: If an idling process seems stuck, log an error and disable it.
Timo Sirainen <tss@iki.fi>
parents:
10101
diff
changeset
|
27 |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
28 /* kill the process if it doesn't send initial status notification */ |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
29 struct timeout *to_status; |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
30 |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
31 unsigned int destroyed:1; |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
32 }; |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
33 |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10099
diff
changeset
|
34 #define SERVICE_PROCESS_IS_INITIALIZED(process) \ |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10099
diff
changeset
|
35 ((process)->to_status == NULL) |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
36 |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
10099
diff
changeset
|
37 struct service_process *service_process_create(struct service *service); |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
38 void service_process_destroy(struct service_process *process); |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
39 |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
40 void service_process_ref(struct service_process *process); |
14682
d0d7b810646b
Make sure we check all the functions' return values. Minor API changes to simplify this.
Timo Sirainen <tss@iki.fi>
parents:
11517
diff
changeset
|
41 void service_process_unref(struct service_process *process); |
9159
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
42 |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
43 void service_process_log_status_error(struct service_process *process, |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
44 int status); |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
45 |
6324a79d3ee1
Initial commit for v2.0 master rewrite. Several features are still missing.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
46 #endif |