Handle EINTR while dup2() in handlecgi(). - geomyidae - A small C-based gopherd.
(HTM) git clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) Tags
(DIR) README
(DIR) LICENSE
---
(DIR) commit 6dc65c6ce9c4a41c034aa1f21d9ff2a1573efde4
(DIR) parent 73b1a17ecfe53540e39ca60059235ce91c70c932
(HTM) Author: Christoph Lohmann <20h@r-36.net>
Date: Sat, 22 Jul 2023 17:17:35 +0200
Handle EINTR while dup2() in handlecgi().
Diffstat:
M handlr.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
---
(DIR) diff --git a/handlr.c b/handlr.c
@@ -167,9 +167,9 @@ handlecgi(int sock, char *file, char *port, char *base, char *args,
if (args == NULL)
args = "";
- dup2(sock, 0);
- dup2(sock, 1);
- dup2(sock, 2);
+ while (dup2(sock, 0) < 0 && errno == EINTR);
+ while (dup2(sock, 1) < 0 && errno == EINTR);
+ while (dup2(sock, 2) < 0 && errno == EINTR);
switch (fork()) {
case 0:
if (path != NULL) {