annotate src/core/ngx_md5.h @ 9270:3d455e37abf8

Core: PID file writing synchronization. Now, ngx_daemon() does not call exit() in the parent process immediately, but instead waits for the child process to signal it actually started (and wrote the PID file if configured to). This ensures that the PID file already exists when the parent process exits. To make sure that signal handlers won't cause unexpected logging in the parent process if the child process dies (for example, due to errors when writing the PID file), ngx_init_signals() is moved to the child process. This resolves "PID file ... not readable (yet?) after start" and "Failed to parse PID from file..." errors as observed with systemd. Note that the errors observed are considered to be a bug in systemd, which isn't able to work properly with traditional Unix daemons. Still, the workaround is implemented to make sure there will be no OS vendor patches trying to address this.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 13 May 2024 06:13:22 +0300
parents 9eefb38f0005
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1572
a3c0b8dadc16 ngx_md5.h
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1
a3c0b8dadc16 ngx_md5.h
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2 /*
a3c0b8dadc16 ngx_md5.h
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
3 * Copyright (C) Igor Sysoev
4412
d620f497c50f Copyright updated.
Maxim Konovalov <maxim@nginx.com>
parents: 3927
diff changeset
4 * Copyright (C) Nginx, Inc.
1572
a3c0b8dadc16 ngx_md5.h
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
5 */
a3c0b8dadc16 ngx_md5.h
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
6
a3c0b8dadc16 ngx_md5.h
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
7
a3c0b8dadc16 ngx_md5.h
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8 #ifndef _NGX_MD5_H_INCLUDED_
a3c0b8dadc16 ngx_md5.h
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
9 #define _NGX_MD5_H_INCLUDED_
a3c0b8dadc16 ngx_md5.h
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
10
a3c0b8dadc16 ngx_md5.h
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11
a3c0b8dadc16 ngx_md5.h
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
12 #include <ngx_config.h>
a3c0b8dadc16 ngx_md5.h
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
13 #include <ngx_core.h>
a3c0b8dadc16 ngx_md5.h
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
14
a3c0b8dadc16 ngx_md5.h
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
15
3895
b659514a3948 an internal MD5 implemenation
Igor Sysoev <igor@sysoev.ru>
parents: 1598
diff changeset
16 typedef struct {
b659514a3948 an internal MD5 implemenation
Igor Sysoev <igor@sysoev.ru>
parents: 1598
diff changeset
17 uint64_t bytes;
b659514a3948 an internal MD5 implemenation
Igor Sysoev <igor@sysoev.ru>
parents: 1598
diff changeset
18 uint32_t a, b, c, d;
b659514a3948 an internal MD5 implemenation
Igor Sysoev <igor@sysoev.ru>
parents: 1598
diff changeset
19 u_char buffer[64];
b659514a3948 an internal MD5 implemenation
Igor Sysoev <igor@sysoev.ru>
parents: 1598
diff changeset
20 } ngx_md5_t;
b659514a3948 an internal MD5 implemenation
Igor Sysoev <igor@sysoev.ru>
parents: 1598
diff changeset
21
b659514a3948 an internal MD5 implemenation
Igor Sysoev <igor@sysoev.ru>
parents: 1598
diff changeset
22
b659514a3948 an internal MD5 implemenation
Igor Sysoev <igor@sysoev.ru>
parents: 1598
diff changeset
23 void ngx_md5_init(ngx_md5_t *ctx);
3927
38e6f45c5e3d make built-in ngx_md5_update() interface consistent with other implemenations
Igor Sysoev <igor@sysoev.ru>
parents: 3895
diff changeset
24 void ngx_md5_update(ngx_md5_t *ctx, const void *data, size_t size);
3895
b659514a3948 an internal MD5 implemenation
Igor Sysoev <igor@sysoev.ru>
parents: 1598
diff changeset
25 void ngx_md5_final(u_char result[16], ngx_md5_t *ctx);
b659514a3948 an internal MD5 implemenation
Igor Sysoev <igor@sysoev.ru>
parents: 1598
diff changeset
26
b659514a3948 an internal MD5 implemenation
Igor Sysoev <igor@sysoev.ru>
parents: 1598
diff changeset
27
1572
a3c0b8dadc16 ngx_md5.h
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
28 #endif /* _NGX_MD5_H_INCLUDED_ */