Browse Source

minor cosmetics (merged [329], [330], [331])

* SIGINT for CTRL-C, exit nicely, 
* -p for print, -t for test. new option to help testing your config.
* srv->config_patches is no longer used. was abandoned [295]


git-svn-id: svn://svn.lighttpd.net/lighttpd/branches/lighttpd-merge-1.4.x@527 152afb58-edef-0310-8abb-c4023f1b3aa9
svn/tags/lighttpd-1.4.2
Jan Kneschke 17 years ago
parent
commit
bcbafe63db
  1. 2
      src/base.h
  2. 45
      src/server.c

2
src/base.h

@ -542,8 +542,6 @@ typedef struct {
stat_cache *stat_cache;
buffer_array *config_patches;
fdevent_handler_t event_handler;
} server;

45
src/server.c

@ -50,9 +50,6 @@
#include <sys/resource.h>
#endif
const char *patches[] = { "SERVERsocket", "HTTPurl", "HTTPhost", "HTTPreferer", "HTTPuseragent", "HTTPcookie", NULL };
#ifndef __sgi
/* IRIX doesn't like the alarm based time() optimization */
/* #define USE_ALARM */
@ -68,6 +65,7 @@ static void sigaction_handler(int sig, siginfo_t *si, void *context) {
UNUSED(context);
switch (sig) {
case SIGINT: srv_shutdown = 1; break;
case SIGTERM: srv_shutdown = 1; break;
case SIGALRM: handle_sig_alarm = 1; break;
case SIGHUP: handle_sig_hup = 1; break;
@ -77,6 +75,7 @@ static void sigaction_handler(int sig, siginfo_t *si, void *context) {
#elif defined(HAVE_SIGNAL) || defined(HAVE_SIGACTION)
static void signal_handler(int sig) {
switch (sig) {
case SIGINT: srv_shutdown = 1; break;
case SIGTERM: srv_shutdown = 1; break;
case SIGALRM: handle_sig_alarm = 1; break;
case SIGHUP: handle_sig_hup = 1; break;
@ -175,14 +174,6 @@ static server *server_init(void) {
srv->split_vals = array_init();
srv->config_patches = buffer_array_init();
for (i = 0; patches[i]; i++) {
buffer *b;
b = buffer_array_append_get_buffer(srv->config_patches);
buffer_copy_string(b, patches[i]);
}
return srv;
}
@ -193,8 +184,6 @@ static void server_free(server *srv) {
buffer_free(srv->mtime_cache[i].str);
}
buffer_array_free(srv->config_patches);
#define CLEAN(x) \
buffer_free(srv->x);
@ -298,6 +287,8 @@ static void show_help (void) {
" - a light and fast webserver\n" \
"usage:\n" \
" -f <name> filename of the config-file\n" \
" -p print the parsed config-file in internal form, and exit\n" \
" -t test the config-file, and exit\n" \
" -D don't go to background (default: go to background)\n" \
TEXT_IPV6 \
" -v show version\n" \
@ -311,6 +302,8 @@ TEXT_IPV6 \
int main (int argc, char **argv) {
server *srv = NULL;
int print_config = 0;
int test_config = 0;
int i_am_root;
int o;
int num_childs = 0;
@ -351,7 +344,7 @@ int main (int argc, char **argv) {
#endif
srv->srvconf.dont_daemonize = 0;
while(-1 != (o = getopt(argc, argv, "f:hvD"))) {
while(-1 != (o = getopt(argc, argv, "f:hvDpt"))) {
switch(o) {
case 'f':
if (config_read(srv, optarg)) {
@ -359,6 +352,8 @@ int main (int argc, char **argv) {
return -1;
}
break;
case 'p': print_config = 1; break;
case 't': test_config = 1; break;
case 'D': srv->srvconf.dont_daemonize = 1; break;
case 'v': show_version(); return 0;
case 'h': show_help(); return 0;
@ -377,6 +372,26 @@ int main (int argc, char **argv) {
return -1;
}
if (print_config) {
data_unset *dc = srv->config_context->data[0];
if (dc) {
dc->print(dc, 0);
fprintf(stderr, "\n");
} else {
/* shouldn't happend */
fprintf(stderr, "global config not found\n");
}
}
if (test_config) {
printf("Syntax OK\n");
}
if (test_config || print_config) {
server_free(srv);
return 0;
}
/* close stdin and stdout, as they are not needed */
/* move stdin to /dev/null */
if (-1 != (fd = open("/dev/null", O_RDONLY))) {
@ -690,6 +705,7 @@ int main (int argc, char **argv) {
sigemptyset(&act.sa_mask);
act.sa_flags = 0;
# endif
sigaction(SIGINT, &act, NULL);
sigaction(SIGTERM, &act, NULL);
sigaction(SIGHUP, &act, NULL);
sigaction(SIGALRM, &act, NULL);
@ -703,6 +719,7 @@ int main (int argc, char **argv) {
signal(SIGTERM, signal_handler);
signal(SIGHUP, signal_handler);
signal(SIGCHLD, signal_handler);
signal(SIGINT, signal_handler);
#endif
#ifdef USE_ALARM

Loading…
Cancel
Save