SMOLNET PORTAL home about changes
iChange from system() to execl() for user agent script. - bitreich-httpd - Bitreich HTTPD service	Err	bitreich.org	70
hgit clone git://bitreich.org/bitreich-httpd git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/bitreich-httpd	URL:git://bitreich.org/bitreich-httpd git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/bitreich-httpd	bitreich.org	70
1Log	/scm/bitreich-httpd/log.gph	bitreich.org	70
1Files	/scm/bitreich-httpd/files.gph	bitreich.org	70
1Refs	/scm/bitreich-httpd/refs.gph	bitreich.org	70
1Tags	/scm/bitreich-httpd/tag	bitreich.org	70
1README	/scm/bitreich-httpd/file/README.md.gph	bitreich.org	70
1LICENSE	/scm/bitreich-httpd/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit d91240a05f9f9ccb93d93e7bea44fc7cbf79e779	/scm/bitreich-httpd/commit/d91240a05f9f9ccb93d93e7bea44fc7cbf79e779.gph	bitreich.org	70
1parent 19ed00841160bf4661c1a2533ce9008eef47090e	/scm/bitreich-httpd/commit/19ed00841160bf4661c1a2533ce9008eef47090e.gph	bitreich.org	70
hAuthor: Christoph Lohmann <20h@r-36.net>	URL:mailto:20h@r-36.net	bitreich.org	70
iDate:   Sun,  3 Sep 2023 20:55:01 +0200	Err	bitreich.org	70
i	Err	bitreich.org	70
iChange from system() to execl() for user agent script.	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M bitreich-httpd.c                    |      26 ++++++++++++++++++++------	Err	bitreich.org	70
i	Err	bitreich.org	70
i1 file changed, 20 insertions(+), 6 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/bitreich-httpd.c b/bitreich-httpd.c	/scm/bitreich-httpd/file/bitreich-httpd.c.gph	bitreich.org	70
i@@ -13,6 +13,7 @@	Err	bitreich.org	70
i #include <string.h>	Err	bitreich.org	70
i #include <strings.h>	Err	bitreich.org	70
i #include <sys/socket.h>	Err	bitreich.org	70
i+#include <sys/wait.h>	Err	bitreich.org	70
i #include <netdb.h>	Err	bitreich.org	70
i #include <time.h>	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -138,12 +139,13 @@ main(int argc, char *argv[])	Err	bitreich.org	70
i         char *wwwbase, *wwwindex, *request, *ctype, *path, *le_file,	Err	bitreich.org	70
i                 *le_base, clienth[NI_MAXHOST], clientp[NI_MAXSERV], *zuccbase,	Err	bitreich.org	70
i                 *requested, *header, *headerval, *hosthdr;	Err	bitreich.org	70
i-        int rlen, i;	Err	bitreich.org	70
i+        int rlen, i, user_agent_script_pid;	Err	bitreich.org	70
i         struct sockaddr_storage clt;	Err	bitreich.org	70
i         socklen_t cltlen = sizeof(clt);	Err	bitreich.org	70
i         time_t tim;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         hosthdr = NULL;	Err	bitreich.org	70
i+        user_agent_script_pid = -1;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         wwwbase = "/bitreich/www";	Err	bitreich.org	70
i         wwwindex = "index.html";	Err	bitreich.org	70
i@@ -194,11 +196,16 @@ main(int argc, char *argv[])	Err	bitreich.org	70
i                         continue;	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i                 if (!strcasecmp(header, "user-agent")) {	Err	bitreich.org	70
i-                        asprintf(&path,	Err	bitreich.org	70
i-                                "/home/annna/bin/modules/http-user-agent/add-user-agent.sh '%s'",	Err	bitreich.org	70
i-                                headerval);	Err	bitreich.org	70
i-                        system(path);	Err	bitreich.org	70
i-                        free(path);	Err	bitreich.org	70
i+                        user_agent_script_pid = fork();	Err	bitreich.org	70
i+                        switch (user_agent_script_pid) {	Err	bitreich.org	70
i+                        case -1:	Err	bitreich.org	70
i+                                perror("fork");	Err	bitreich.org	70
i+                                return 1;	Err	bitreich.org	70
i+                        case 0:	Err	bitreich.org	70
i+                                return execl("add-user-agent.sh",	Err	bitreich.org	70
i+                                        "/home/annna/bin/modules/http-user-agent/add-user-agent.sh",	Err	bitreich.org	70
i+                                        headerval, 0);	Err	bitreich.org	70
i+                        }	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i                 if (!strcasecmp(header, "host")) {	Err	bitreich.org	70
i                         rlen = strlen(headerval);	Err	bitreich.org	70
i@@ -279,6 +286,13 @@ main(int argc, char *argv[])	Err	bitreich.org	70
i         rlen = servefile(path, ctype, 1);	Err	bitreich.org	70
i         free(path);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+        if (user_agent_script_pid != -1) {	Err	bitreich.org	70
i+                if (waitpid(user_agent_script_pid, NULL, 0) < 0) {	Err	bitreich.org	70
i+                        perror("waitpid");	Err	bitreich.org	70
i+                        return 1;	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+	Err	bitreich.org	70
i         return rlen;	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/bitreich-httpd/commit/d91240a...
Content-Typetext/plain; charset=utf-8