git-branch: display "was sha1" on branch deletion rather than just "sha1"
[gitweb.git] / daemon.c
index 64f60c431ba1f566a1b292111ae819d49ddc35f0..1cef3098d2bd2fb28e2b670ac26c41eebf37dc78 100644 (file)
--- a/daemon.c
+++ b/daemon.c
@@ -57,7 +57,6 @@ static char *hostname;
 static char *canon_hostname;
 static char *ip_address;
 static char *tcp_port;
-static char *directory;
 
 static void logreport(int priority, const char *err, va_list params)
 {
@@ -147,7 +146,7 @@ static int avoid_alias(char *p)
        }
 }
 
-static char *path_ok(void)
+static char *path_ok(char *directory)
 {
        static char rpath[PATH_MAX];
        static char interp_path[PATH_MAX];
@@ -296,12 +295,12 @@ static int git_daemon_config(const char *var, const char *value, void *cb)
        return 0;
 }
 
-static int run_service(struct daemon_service *service)
+static int run_service(char *dir, struct daemon_service *service)
 {
        const char *path;
        int enabled = service->enabled;
 
-       loginfo("Request %s for '%s'", service->name, directory);
+       loginfo("Request %s for '%s'", service->name, dir);
 
        if (!enabled && !service->overridable) {
                logerror("'%s': service not enabled.", service->name);
@@ -309,7 +308,7 @@ static int run_service(struct daemon_service *service)
                return -1;
        }
 
-       if (!(path = path_ok()))
+       if (!(path = path_ok(dir)))
                return -1;
 
        /*
@@ -414,6 +413,7 @@ static void parse_extra_args(char *extra_args, int buflen)
        char *val;
        int vallen;
        char *end = extra_args + buflen;
+       char *hp;
 
        while (extra_args < end && *extra_args) {
                saw_extended_args = 1;
@@ -438,11 +438,6 @@ static void parse_extra_args(char *extra_args, int buflen)
                        extra_args = val + vallen;
                }
        }
-}
-
-static void fill_in_extra_table_entries(void)
-{
-       char *hp;
 
        /*
         * Replace literal host with lowercase-ized hostname.
@@ -559,13 +554,10 @@ static int execute(struct sockaddr *addr)
        free(canon_hostname);
        free(ip_address);
        free(tcp_port);
-       free(directory);
-       hostname = canon_hostname = ip_address = tcp_port = directory = NULL;
+       hostname = canon_hostname = ip_address = tcp_port = NULL;
 
-       if (len != pktlen) {
+       if (len != pktlen)
                parse_extra_args(line + len + 1, pktlen - len - 1);
-               fill_in_extra_table_entries();
-       }
 
        for (i = 0; i < ARRAY_SIZE(daemon_service); i++) {
                struct daemon_service *s = &(daemon_service[i]);
@@ -577,9 +569,7 @@ static int execute(struct sockaddr *addr)
                         * Note: The directory here is probably context sensitive,
                         * and might depend on the actual service being performed.
                         */
-                       free(directory);
-                       directory = xstrdup(line + namelen + 5);
-                       return run_service(s);
+                       return run_service(line + namelen + 5, s);
                }
        }