diff options
author | Ron Yorston <rmy@pobox.com> | 2024-02-09 11:16:13 +0000 |
---|---|---|
committer | Ron Yorston <rmy@pobox.com> | 2024-02-09 11:16:13 +0000 |
commit | 5604ec323049c89b09ec7b5f4c816ab659e25dfc (patch) | |
tree | b35e2a5769ec9f0b7c3ca30acd9cda9fba4673b6 | |
parent | c44f23f4acbbd854eccd962110e41343d8f03296 (diff) | |
download | busybox-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.c | 7 |
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); |