SOURCES: lighttpd-modinit-before-fork.patch (NEW) - saved from http://home....
glen
glen at pld-linux.org
Tue Jun 17 18:19:57 CEST 2008
Author: glen Date: Tue Jun 17 16:19:57 2008 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- saved from http://home.hoffie.info/lighttpd-1.4.x-modinit-before-fork.patch
---- Files affected:
SOURCES:
lighttpd-modinit-before-fork.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/lighttpd-modinit-before-fork.patch
diff -u /dev/null SOURCES/lighttpd-modinit-before-fork.patch:1.1
--- /dev/null Tue Jun 17 18:19:58 2008
+++ SOURCES/lighttpd-modinit-before-fork.patch Tue Jun 17 18:19:52 2008
@@ -0,0 +1,191 @@
+Index: src/server.c
+===================================================================
+--- src/server.c (revision 2188)
++++ src/server.c (working copy)
+@@ -865,34 +865,9 @@
+ return -1;
+ }
+
+-#ifdef HAVE_FORK
+- /* network is up, let's deamonize ourself */
+- if (srv->srvconf.dont_daemonize == 0) daemonize();
+-#endif
+-
+ srv->gid = getgid();
+ srv->uid = getuid();
+
+- /* write pid file */
+- if (pid_fd != -1) {
+- buffer_copy_long(srv->tmp_buf, getpid());
+- buffer_append_string(srv->tmp_buf, "\n");
+- write(pid_fd, srv->tmp_buf->ptr, srv->tmp_buf->used - 1);
+- close(pid_fd);
+- pid_fd = -1;
+- }
+-
+- /* Close stderr ASAP in the child process to make sure that nothing
+- * is being written to that fd which may not be valid anymore. */
+- if (-1 == log_error_open(srv)) {
+- log_error_write(srv, __FILE__, __LINE__, "s", "Opening errorlog failed. Going down.");
+-
+- plugins_free(srv);
+- network_close(srv);
+- server_free(srv);
+- return -1;
+- }
+-
+ if (HANDLER_GO_ON != plugins_call_set_defaults(srv)) {
+ log_error_write(srv, __FILE__, __LINE__, "s", "Configuration of plugins failed. Going down.");
+
+@@ -943,9 +918,88 @@
+ return -1;
+ }
+
++ if (NULL == (srv->ev = fdevent_init(srv->max_fds + 1, srv->event_handler))) {
++ log_error_write(srv, __FILE__, __LINE__,
++ "s", "fdevent_init failed");
++ return -1;
++ }
++ /*
++ * kqueue() is called here, select resets its internals,
++ * all server sockets get their handlers
++ *
++ * */
++ if (0 != network_register_fdevents(srv)) {
++ plugins_free(srv);
++ network_close(srv);
++ server_free(srv);
+
++ return -1;
++ }
+
++ /* might fail if user is using fam (not gamin) and famd isn't running */
++ if (NULL == (srv->stat_cache = stat_cache_init())) {
++ log_error_write(srv, __FILE__, __LINE__, "s",
++ "stat-cache could not be setup, dieing.");
++ return -1;
++ }
+
++#ifdef HAVE_FAM_H
++ /* setup FAM */
++ if (srv->srvconf.stat_cache_engine == STAT_CACHE_ENGINE_FAM) {
++ if (0 != FAMOpen2(srv->stat_cache->fam, "lighttpd")) {
++ log_error_write(srv, __FILE__, __LINE__, "s",
++ "could not open a fam connection, dieing.");
++ return -1;
++ }
++#ifdef HAVE_FAMNOEXISTS
++ FAMNoExists(srv->stat_cache->fam);
++#endif
++
++ srv->stat_cache->fam_fcce_ndx = -1;
++ fdevent_register(srv->ev, FAMCONNECTION_GETFD(srv->stat_cache->fam), stat_cache_handle_fdevent, NULL);
++ fdevent_event_add(srv->ev, &(srv->stat_cache->fam_fcce_ndx), FAMCONNECTION_GETFD(srv->stat_cache->fam), FDEVENT_IN);
++ }
++#endif
++
++
++ /* get the current number of FDs */
++ srv->cur_fds = open("/dev/null", O_RDONLY);
++ close(srv->cur_fds);
++
++ for (i = 0; i < srv->srv_sockets.used; i++) {
++ server_socket *srv_socket = srv->srv_sockets.ptr[i];
++ if (-1 == fdevent_fcntl_set(srv->ev, srv_socket->fd)) {
++ log_error_write(srv, __FILE__, __LINE__, "ss", "fcntl failed:", strerror(errno));
++ return -1;
++ }
++ }
++
++ /* Close stderr ASAP to make sure that nothing is being written to
++ * that fd which may not be valid anymore after forking. */
++ if (-1 == log_error_open(srv)) {
++ log_error_write(srv, __FILE__, __LINE__, "s", "Opening errorlog failed. Going down.");
++
++ plugins_free(srv);
++ network_close(srv);
++ server_free(srv);
++ return -1;
++ }
++
++#ifdef HAVE_FORK
++ /* network is up, let's deamonize ourself */
++ if (srv->srvconf.dont_daemonize == 0) daemonize();
++#endif
++
++ /* write pid file */
++ if (pid_fd != -1) {
++ buffer_copy_long(srv->tmp_buf, getpid());
++ buffer_append_string(srv->tmp_buf, "\n");
++ write(pid_fd, srv->tmp_buf->ptr, srv->tmp_buf->used - 1);
++ close(pid_fd);
++ pid_fd = -1;
++ }
++
++
+ #ifdef HAVE_SIGACTION
+ memset(&act, 0, sizeof(act));
+ act.sa_handler = SIG_IGN;
+@@ -1067,62 +1121,6 @@
+ }
+ #endif
+
+- if (NULL == (srv->ev = fdevent_init(srv->max_fds + 1, srv->event_handler))) {
+- log_error_write(srv, __FILE__, __LINE__,
+- "s", "fdevent_init failed");
+- return -1;
+- }
+- /*
+- * kqueue() is called here, select resets its internals,
+- * all server sockets get their handlers
+- *
+- * */
+- if (0 != network_register_fdevents(srv)) {
+- plugins_free(srv);
+- network_close(srv);
+- server_free(srv);
+-
+- return -1;
+- }
+-
+- /* might fail if user is using fam (not gamin) and famd isn't running */
+- if (NULL == (srv->stat_cache = stat_cache_init())) {
+- log_error_write(srv, __FILE__, __LINE__, "s",
+- "stat-cache could not be setup, dieing.");
+- return -1;
+- }
+-
+-#ifdef HAVE_FAM_H
+- /* setup FAM */
+- if (srv->srvconf.stat_cache_engine == STAT_CACHE_ENGINE_FAM) {
+- if (0 != FAMOpen2(srv->stat_cache->fam, "lighttpd")) {
+- log_error_write(srv, __FILE__, __LINE__, "s",
+- "could not open a fam connection, dieing.");
+- return -1;
+- }
+-#ifdef HAVE_FAMNOEXISTS
+- FAMNoExists(srv->stat_cache->fam);
+-#endif
+-
+- srv->stat_cache->fam_fcce_ndx = -1;
+- fdevent_register(srv->ev, FAMCONNECTION_GETFD(srv->stat_cache->fam), stat_cache_handle_fdevent, NULL);
+- fdevent_event_add(srv->ev, &(srv->stat_cache->fam_fcce_ndx), FAMCONNECTION_GETFD(srv->stat_cache->fam), FDEVENT_IN);
+- }
+-#endif
+-
+-
+- /* get the current number of FDs */
+- srv->cur_fds = open("/dev/null", O_RDONLY);
+- close(srv->cur_fds);
+-
+- for (i = 0; i < srv->srv_sockets.used; i++) {
+- server_socket *srv_socket = srv->srv_sockets.ptr[i];
+- if (-1 == fdevent_fcntl_set(srv->ev, srv_socket->fd)) {
+- log_error_write(srv, __FILE__, __LINE__, "ss", "fcntl failed:", strerror(errno));
+- return -1;
+- }
+- }
+-
+ /* main-loop */
+ while (!srv_shutdown) {
+ int n;
================================================================
More information about the pld-cvs-commit
mailing list