fix bug in health_check(). It made wrong reports if secondary goes
authorTatsuo Ishii <ishii at sraoss.co.jp>
Fri, 2 Sep 2005 14:28:20 +0000 (14:28 +0000)
committerTatsuo Ishii <ishii at sraoss.co.jp>
Fri, 2 Sep 2005 14:28:20 +0000 (14:28 +0000)
down. Per Bunji Nagahashi.

child.c

diff --git a/child.c b/child.c
index 165aa59d6e949faab2ec9e416a4618b0cabdde63..d2f5ffa1734f47f79c737366214a701cc1b61d6c 100644 (file)
--- a/child.c
+++ b/child.c
@@ -954,6 +954,7 @@ int health_check(void)
                pool_error("health check failed during write. master %s at port %d is down",
                                   pool_config.current_backend_host_name,
                                   pool_config.current_backend_port);
+               close(fd);
                return -1;
        }
 
@@ -964,6 +965,7 @@ int health_check(void)
                pool_error("health check failed during write. master %s at port %d is down",
                                   pool_config.current_backend_host_name,
                                   pool_config.current_backend_port);
+               close(fd);
                return -1;
        }
 
@@ -987,20 +989,22 @@ int health_check(void)
 
        if (write(fd, &mysp, sizeof(mysp)) < 0)
        {
-               pool_error("health check failed during write. master %s at port %d is down",
-                                  pool_config.current_backend_host_name,
-                                  pool_config.current_backend_port);
-               return -1;
+               pool_error("health check failed during write. secondary %s at port %d is down",
+                                  pool_config.secondary_backend_host_name,
+                                  pool_config.secondary_backend_port);
+               close(fd);
+               return -2;
        }
 
        read(fd, &kind, 1);
 
        if (write(fd, "X", 1) < 0)
        {
-               pool_error("health check failed during write. master %s at port %d is down",
-                                  pool_config.current_backend_host_name,
-                                  pool_config.current_backend_port);
-               return -1;
+               pool_error("health check failed during write. secondary %s at port %d is down",
+                                  pool_config.secondary_backend_host_name,
+                                  pool_config.secondary_backend_port);
+               close(fd);
+               return -2;
        }
 
        close(fd);