Introduction
Introduction Statistics Contact Development Disclaimer Help
Change from system() to execl() for user agent script. - bitreich-httpd - Bitre…
git clone git://bitreich.org/bitreich-httpd git://enlrupgkhuxnvlhsf6lc3fziv5h2h…
Log
Files
Refs
Tags
README
LICENSE
---
commit d91240a05f9f9ccb93d93e7bea44fc7cbf79e779
parent 19ed00841160bf4661c1a2533ce9008eef47090e
Author: Christoph Lohmann <[email protected]>
Date: Sun, 3 Sep 2023 20:55:01 +0200
Change from system() to execl() for user agent script.
Diffstat:
M bitreich-httpd.c | 26 ++++++++++++++++++++------
1 file changed, 20 insertions(+), 6 deletions(-)
---
diff --git a/bitreich-httpd.c b/bitreich-httpd.c
@@ -13,6 +13,7 @@
#include <string.h>
#include <strings.h>
#include <sys/socket.h>
+#include <sys/wait.h>
#include <netdb.h>
#include <time.h>
@@ -138,12 +139,13 @@ main(int argc, char *argv[])
char *wwwbase, *wwwindex, *request, *ctype, *path, *le_file,
*le_base, clienth[NI_MAXHOST], clientp[NI_MAXSERV], *zuccbase,
*requested, *header, *headerval, *hosthdr;
- int rlen, i;
+ int rlen, i, user_agent_script_pid;
struct sockaddr_storage clt;
socklen_t cltlen = sizeof(clt);
time_t tim;
hosthdr = NULL;
+ user_agent_script_pid = -1;
wwwbase = "/bitreich/www";
wwwindex = "index.html";
@@ -194,11 +196,16 @@ main(int argc, char *argv[])
continue;
}
if (!strcasecmp(header, "user-agent")) {
- asprintf(&path,
- "/home/annna/bin/modules/http-user-agent/add-u…
- headerval);
- system(path);
- free(path);
+ user_agent_script_pid = fork();
+ switch (user_agent_script_pid) {
+ case -1:
+ perror("fork");
+ return 1;
+ case 0:
+ return execl("add-user-agent.sh",
+ "/home/annna/bin/modules/http-user-age…
+ headerval, 0);
+ }
}
if (!strcasecmp(header, "host")) {
rlen = strlen(headerval);
@@ -279,6 +286,13 @@ main(int argc, char *argv[])
rlen = servefile(path, ctype, 1);
free(path);
+ if (user_agent_script_pid != -1) {
+ if (waitpid(user_agent_script_pid, NULL, 0) < 0) {
+ perror("waitpid");
+ return 1;
+ }
+ }
+
return rlen;
}
You are viewing proxied material from bitreich.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.