aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2024-02-09 11:16:13 +0000
committerRon Yorston <rmy@pobox.com>2024-02-09 11:16:13 +0000
commit5604ec323049c89b09ec7b5f4c816ab659e25dfc (patch)
treeb35e2a5769ec9f0b7c3ca30acd9cda9fba4673b6
parentc44f23f4acbbd854eccd962110e41343d8f03296 (diff)
downloadbusybox-w32-5604ec323049c89b09ec7b5f4c816ab659e25dfc.tar.gz
busybox-w32-5604ec323049c89b09ec7b5f4c816ab659e25dfc.tar.bz2
busybox-w32-5604ec323049c89b09ec7b5f4c816ab659e25dfc.zip
httpd: avoid unnecessary process creation
The httpd server made unnecessary calls to detach from the console. Avoiding this saves one process creation when a file is being served and two for a CGI script. Then again, commit ad4bd5bbd (win32: avoid console windows from CGI scripts) results in a console host always being created for a CGI script even if it turns out to be unnecessary. So the net saving is only one process for CGI scripts.
-rw-r--r--networking/httpd.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/networking/httpd.c b/networking/httpd.c
index d049e3842..0853eaad1 100644
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -1755,7 +1755,7 @@ static void send_cgi_and_exit(
1755 argv = xzalloc((server_argc + 9) * sizeof(char *)); 1755 argv = xzalloc((server_argc + 9) * sizeof(char *));
1756 argv[0] = (char *)bb_busybox_exec_path; 1756 argv[0] = (char *)bb_busybox_exec_path;
1757 argv[1] = (char *)"--busybox"; 1757 argv[1] = (char *)"--busybox";
1758 argv[2] = (char *)"-httpd" + 1; // skip '-' 1758 argv[2] = (char *)"-httpd"; // don't daemonise in main()
1759 argv[3] = (char *)"-I"; 1759 argv[3] = (char *)"-I";
1760 argv[4] = (char *)"0"; 1760 argv[4] = (char *)"0";
1761 for (i = 0; i < server_argc; ++i) 1761 for (i = 0; i < server_argc; ++i)
@@ -2893,7 +2893,7 @@ static void mini_httpd_win32(int sock, int argc, char **argv)
2893 2893
2894 argv_copy[0] = (char *)bb_busybox_exec_path; 2894 argv_copy[0] = (char *)bb_busybox_exec_path;
2895 argv_copy[1] = (char *)"--busybox"; 2895 argv_copy[1] = (char *)"--busybox";
2896 argv_copy[2] = (char *)"-httpd" + 1; // skip '-' 2896 argv_copy[2] = (char *)"-httpd"; // don't daemonise in main()
2897 argv_copy[3] = (char *)"-I"; 2897 argv_copy[3] = (char *)"-I";
2898 memcpy(&argv_copy[5], &argv[1], argc * sizeof(argv[0])); 2898 memcpy(&argv_copy[5], &argv[1], argc * sizeof(argv[0]));
2899 2899
@@ -2945,7 +2945,8 @@ static void mingw_daemonize(char **argv)
2945 new_argv = grow_argv(argv + 1, 3); 2945 new_argv = grow_argv(argv + 1, 3);
2946 new_argv[0] = (char *)bb_busybox_exec_path; 2946 new_argv[0] = (char *)bb_busybox_exec_path;
2947 new_argv[1] = (char *)"--busybox"; 2947 new_argv[1] = (char *)"--busybox";
2948 new_argv[2] = (char *)"-httpd"; // '-' marks the daemonised process 2948 // don't daemonise in main(), we explicitly detach below
2949 new_argv[2] = (char *)"-httpd";
2949 2950
2950 fd = xopen(bb_dev_null, O_RDWR); 2951 fd = xopen(bb_dev_null, O_RDWR);
2951 xdup2(fd, 0); 2952 xdup2(fd, 0);