commit ed97324
default
·
2024-05-21 17:08:33 +0000 UTC
parent cdfaf6d
Another approach to disabling SHM.
1 files changed,
+23,
-23
M
httpd.c
M
httpd.c
+23,
-23
1@@ -653,29 +653,6 @@ void term_handler(int s)
2 }
3
4
5-#ifdef WITHOUT_SHM
6-
7-/* dummy versions */
8-
9-int shm_open(const char *name, int flags, mode_t mode)
10-{
11- (void)name;
12- (void)flags;
13- (void)mode;
14-
15- errno = ENOTSUP;
16- return -1;
17-}
18-
19-int shm_unlink(const char *name)
20-{
21- (void)name;
22- return -1;
23-}
24-
25-
26-#endif
27-
28 srv_state *srv_state_op(xs_str **fname, int op)
29 /* opens or deletes the shared memory object */
30 {
31@@ -687,6 +664,13 @@ srv_state *srv_state_op(xs_str **fname, int op)
32
33 switch (op) {
34 case 0: /* open for writing */
35+
36+#ifdef WITHOUT_SHM
37+
38+ errno = ENOTSUP;
39+
40+#else
41+
42 if ((fd = shm_open(*fname, O_CREAT | O_RDWR, 0666)) != -1) {
43 ftruncate(fd, sizeof(*ss));
44
45@@ -697,6 +681,8 @@ srv_state *srv_state_op(xs_str **fname, int op)
46 close(fd);
47 }
48
49+#endif
50+
51 if (ss == NULL) {
52 /* shared memory error: just create a plain structure */
53 srv_log(xs_fmt("warning: shm object error (%s)", strerror(errno)));
54@@ -710,6 +696,13 @@ srv_state *srv_state_op(xs_str **fname, int op)
55 break;
56
57 case 1: /* open for reading */
58+
59+#ifdef WITHOUT_SHM
60+
61+ errno = ENOTSUP;
62+
63+#else
64+
65 if ((fd = shm_open(*fname, O_RDONLY, 0666)) != -1) {
66 if ((ss = mmap(0, sizeof(*ss), PROT_READ, MAP_SHARED, fd, 0)) == MAP_FAILED)
67 ss = NULL;
68@@ -717,6 +710,8 @@ srv_state *srv_state_op(xs_str **fname, int op)
69 close(fd);
70 }
71
72+#endif
73+
74 if (ss == NULL) {
75 /* shared memory error */
76 srv_log(xs_fmt("error: shm object error (%s) server not running?", strerror(errno)));
77@@ -734,9 +729,14 @@ srv_state *srv_state_op(xs_str **fname, int op)
78 break;
79
80 case 2: /* unlink */
81+
82+#ifndef WITHOUT_SHM
83+
84 if (*fname)
85 shm_unlink(*fname);
86
87+#endif
88+
89 break;
90 }
91