From 22665bbaab799b1f20a23039a5c759cd35d36939 Mon Sep 17 00:00:00 2001 From: Johannes Sixt Date: Mon, 25 Feb 2008 14:25:20 +0100 Subject: daemon: send more error messages to the syslog There were a number of die() calls before the syslog was opened; hence, these error messages would have been sent to /dev/null in detached mode. Now we install the daemon-specific die routine before any error message is generated so that these messages go to the syslog. Signed-off-by: Johannes Sixt Signed-off-by: Junio C Hamano --- daemon.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/daemon.c b/daemon.c index 41a60af624..dd0177f48d 100644 --- a/daemon.c +++ b/daemon.c @@ -1149,6 +1149,11 @@ int main(int argc, char **argv) usage(daemon_usage); } + if (log_syslog) { + openlog("git-daemon", 0, LOG_DAEMON); + set_die_routine(daemon_die); + } + if (inetd_mode && (group_name || user_name)) die("--user and --group are incompatible with --inetd"); @@ -1176,11 +1181,6 @@ int main(int argc, char **argv) } } - if (log_syslog) { - openlog("git-daemon", 0, LOG_DAEMON); - set_die_routine(daemon_die); - } - if (strict_paths && (!ok_paths || !*ok_paths)) die("option --strict-paths requires a whitelist"); -- cgit v1.2.3 From 20632071560ad4915f4e620d3c053e5ee3af80f3 Mon Sep 17 00:00:00 2001 From: Johannes Sixt Date: Tue, 26 Feb 2008 13:00:55 +0100 Subject: daemon: ensure that base-path is an existing directory Any request to the daemon would fail if base-path (if specified) is not a directory. We now check for this condition early. Signed-off-by: Johannes Sixt Signed-off-by: Junio C Hamano --- daemon.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/daemon.c b/daemon.c index dd0177f48d..2b4a6f145c 100644 --- a/daemon.c +++ b/daemon.c @@ -1184,6 +1184,14 @@ int main(int argc, char **argv) if (strict_paths && (!ok_paths || !*ok_paths)) die("option --strict-paths requires a whitelist"); + if (base_path) { + struct stat st; + + if (stat(base_path, &st) || !S_ISDIR(st.st_mode)) + die("base-path '%s' does not exist or " + "is not a directory", base_path); + } + if (inetd_mode) { struct sockaddr_storage ss; struct sockaddr *peer = (struct sockaddr *)&ss; -- cgit v1.2.3