From 4feb696be732ea07027f964974547b3976f25ed5 Mon Sep 17 00:00:00 2001
From: "Marc G. Fournier" <scrappy@hub.org>
Date: Fri, 4 Oct 1996 20:32:07 +0000
Subject: [PATCH] Here the fix for the first assertion failure I had which
 killed my postmaster 1.07. It's really simple, the loop dealing with all
 sockets can't handle more than one ready socket :-) A simple logic error
 dealing with lists. OR IS THERE ANY REASON FOR SETTING curr TO 0?

Submitted by:  Carsten Heyl <Heyl@nads.de>
---
 src/backend/postmaster/postmaster.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 55c7fe8109..976eb242a1 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.9 1996/10/04 20:16:18 scrappy Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.10 1996/10/04 20:32:07 scrappy Exp $
  *
  * NOTES
  *
@@ -404,7 +404,7 @@ ServerLoop(void)
     int		serverFd = ServerSock;
     fd_set	rmask, basemask;
     int		nSockets, nSelected, status, newFd;
-    Dlelem   *prev, *curr;
+    Dlelem   *next, *curr;
 /*    int orgsigmask = sigblock(0); */
     sigset_t oldsigmask, newsigmask;
     
@@ -541,10 +541,11 @@ ServerLoop(void)
 		}
 		FD_CLR(port->sock, &basemask);
 		StreamClose(port->sock);
-		prev = DLGetPred(curr);
+		next = DLGetPred(curr);
 		DLRemove(curr);
 		DLFreeElem(curr);
-		curr = 0;
+		curr = next;
+                continue;
 	    }
 	    curr = DLGetSucc(curr);
 	}