[PATCH] Write pid-file in httpd

Ralf Friedl Ralf.Friedl at online.de
Sat Jul 5 12:34:57 UTC 2008


This is a patch to create a pid-file when httpd is started.
A pid-file is useful to stop httpd or to send SIGHUP to reload the config.
The filename is passed as a parameter so that multiple instances can run 
at the same time, with different pid-files.

It would also be possible to make this configurable.

Regards
Ralf Friedl

--- networking/httpd.c
+++ networking/httpd.c
@@ -2270,6 +2270,7 @@
       USE_FEATURE_HTTPD_BASIC_AUTH(    r_opt_realm     ,)
       USE_FEATURE_HTTPD_AUTH_MD5(      m_opt_md5       ,)
       USE_FEATURE_HTTPD_SETUID(        u_opt_setuid    ,)
+       p_opt_pidfile   ,
       p_opt_port      ,
       p_opt_inetd     ,
       p_opt_foreground,
@@ -2281,6 +2282,7 @@
       OPT_REALM       = USE_FEATURE_HTTPD_BASIC_AUTH(    (1 << 
r_opt_realm     )) + 0,
       OPT_MD5         = USE_FEATURE_HTTPD_AUTH_MD5(      (1 << 
m_opt_md5       )) + 0,
       OPT_SETUID      = USE_FEATURE_HTTPD_SETUID(        (1 << 
u_opt_setuid    )) + 0,
+       OPT_PIDFILE     = 1 << p_opt_pidfile,
       OPT_PORT        = 1 << p_opt_port,
       OPT_INETD       = 1 << p_opt_inetd,
       OPT_FOREGROUND  = 1 << p_opt_foreground,
@@ -2294,6 +2296,7 @@
       int server_socket = server_socket; /* for gcc */
       unsigned opt;
       char *url_for_decode;
+       char *pidfilename;
       USE_FEATURE_HTTPD_ENCODE_URL_STR(const char *url_for_encode;)
       USE_FEATURE_HTTPD_SETUID(const char *s_ugid = NULL;)
       USE_FEATURE_HTTPD_SETUID(struct bb_uidgid_t ugid;)
@@ -2317,12 +2320,14 @@
                       USE_FEATURE_HTTPD_BASIC_AUTH("r:")
                       USE_FEATURE_HTTPD_AUTH_MD5("m:")
                       USE_FEATURE_HTTPD_SETUID("u:")
+                       "P:"
                       "p:ifv",
                       &configFile, &url_for_decode, &home_httpd
                       USE_FEATURE_HTTPD_ENCODE_URL_STR(, &url_for_encode)
                       USE_FEATURE_HTTPD_BASIC_AUTH(, &g_realm)
                       USE_FEATURE_HTTPD_AUTH_MD5(, &pass)
                       USE_FEATURE_HTTPD_SETUID(, &s_ugid)
+                       , &pidfilename
                       , &bind_addr_or_port
                       , &verbose
               );
@@ -2403,6 +2408,8 @@
#if BB_MMU
       if (!(opt & OPT_FOREGROUND))
               bb_daemonize(0); /* don't change current directory */
+       if (opt & OPT_PIDFILE)
+               write_pidfile(pidfilename);
       mini_httpd(server_socket); /* never returns */
#else
       mini_httpd_nommu(server_socket, argc, argv); /* never returns */





More information about the busybox mailing list