Disable alarm before returning read_startup_packet().
authorYoshiyuki Asaba <y-asaba at pgfoundry.org>
Fri, 12 Oct 2007 04:13:46 +0000 (04:13 +0000)
committerYoshiyuki Asaba <y-asaba at pgfoundry.org>
Fri, 12 Oct 2007 04:13:46 +0000 (04:13 +0000)
child.c

diff --git a/child.c b/child.c
index ea71a31c9cba57d7591ea6a60dd9387e2f8e2ad6..3e75f0a891e534088d191e916224adbd45c8a2a4 100644 (file)
--- a/child.c
+++ b/child.c
@@ -762,6 +762,7 @@ static StartupPacket *read_startup_packet(POOL_CONNECTION *cp)
        /* read startup packet length */
        if (pool_read(cp, &len, sizeof(len)))
        {
+               alarm(0);
                pool_signal(SIGALRM, SIG_IGN);
                return NULL;
        }
@@ -776,6 +777,7 @@ static StartupPacket *read_startup_packet(POOL_CONNECTION *cp)
        {
                pool_error("read_startup_packet: invalid startup packet");
                pool_free_startup_packet(sp);
+               alarm(0);
                pool_signal(SIGALRM, SIG_IGN);
                return NULL;
        }
@@ -785,6 +787,7 @@ static StartupPacket *read_startup_packet(POOL_CONNECTION *cp)
        {
                pool_error("read_startup_packet: out of memory");
                pool_free_startup_packet(sp);
+               alarm(0);
                pool_signal(SIGALRM, SIG_IGN);
                return NULL;
        }
@@ -793,6 +796,7 @@ static StartupPacket *read_startup_packet(POOL_CONNECTION *cp)
        if (pool_read(cp, sp->startup_packet, len))
        {
                pool_free_startup_packet(sp);
+               alarm(0);
                pool_signal(SIGALRM, SIG_IGN);
                return NULL;
        }
@@ -813,6 +817,7 @@ static StartupPacket *read_startup_packet(POOL_CONNECTION *cp)
                        {
                                pool_error("read_startup_packet: out of memory");
                                pool_free_startup_packet(sp);
+                               alarm(0);
                                pool_signal(SIGALRM, SIG_IGN);
                                return NULL;
                        }
@@ -823,6 +828,7 @@ static StartupPacket *read_startup_packet(POOL_CONNECTION *cp)
                        {
                                pool_error("read_startup_packet: out of memory");
                                pool_free_startup_packet(sp);
+                               alarm(0);
                                pool_signal(SIGALRM, SIG_IGN);
                                return NULL;
                        }
@@ -843,6 +849,7 @@ static StartupPacket *read_startup_packet(POOL_CONNECTION *cp)
                                        {
                                                pool_error("read_startup_packet: out of memory");
                                                pool_free_startup_packet(sp);
+                                               alarm(0);
                                                pool_signal(SIGALRM, SIG_IGN);
                                                return NULL;
                                        }
@@ -855,6 +862,7 @@ static StartupPacket *read_startup_packet(POOL_CONNECTION *cp)
                                        {
                                                pool_error("read_startup_packet: out of memory");
                                                pool_free_startup_packet(sp);
+                                               alarm(0);
                                                pool_signal(SIGALRM, SIG_IGN);
                                                return NULL;
                                        }
@@ -870,6 +878,7 @@ static StartupPacket *read_startup_packet(POOL_CONNECTION *cp)
                        {
                                pool_error("read_startup_packet: out of memory");
                                pool_free_startup_packet(sp);
+                               alarm(0);
                                pool_signal(SIGALRM, SIG_IGN);
                                return NULL;
                        }
@@ -878,6 +887,7 @@ static StartupPacket *read_startup_packet(POOL_CONNECTION *cp)
                        {
                                pool_error("read_startup_packet: out of memory");
                                pool_free_startup_packet(sp);
+                               alarm(0);
                                pool_signal(SIGALRM, SIG_IGN);
                                return NULL;
                        }
@@ -886,11 +896,14 @@ static StartupPacket *read_startup_packet(POOL_CONNECTION *cp)
                default:
                        pool_error("read_startup_packet: invalid major no: %d", sp->major);
                        pool_free_startup_packet(sp);
+                       alarm(0);
+                       pool_signal(SIGALRM, SIG_IGN);
                        return NULL;
        }
 
        pool_debug("Protocol Major: %d Minor: %d database: %s user: %s", 
                           sp->major, sp->minor, sp->database, sp->user);
+       alarm(0);
        pool_signal(SIGALRM, SIG_IGN);
        return sp;
 }