*** src/backend/libpq/pqcomm.c.orig	Wed Jul  7 13:17:47 1999
--- src/backend/libpq/pqcomm.c	Wed Sep  8 19:00:51 1999
***************
*** 339,344 ****
--- 339,348 ----
   *		the Postmaster uses select() to tell when the server master
   *		socket is ready for accept().
   *
+  * NB: this can NOT call elog() because it is invoked in the postmaster,
+  * not in standard backend context.  If we get an error, the best we can do
+  * is log it to stderr.
+  *
   * RETURNS: STATUS_OK or STATUS_ERROR
   */
  int
***************
*** 352,358 ****
  							 (struct sockaddr *) & port->raddr,
  							 &addrlen)) < 0)
  	{
! 		elog(ERROR, "postmaster: StreamConnection: accept: %m");
  		return STATUS_ERROR;
  	}
  
--- 356,362 ----
  							 (struct sockaddr *) & port->raddr,
  							 &addrlen)) < 0)
  	{
! 		perror("postmaster: StreamConnection: accept");
  		return STATUS_ERROR;
  	}
  
***************
*** 361,367 ****
  	if (getsockname(port->sock, (struct sockaddr *) & port->laddr,
  					&addrlen) < 0)
  	{
! 		elog(ERROR, "postmaster: StreamConnection: getsockname: %m");
  		return STATUS_ERROR;
  	}
  
--- 365,371 ----
  	if (getsockname(port->sock, (struct sockaddr *) & port->laddr,
  					&addrlen) < 0)
  	{
! 		perror("postmaster: StreamConnection: getsockname");
  		return STATUS_ERROR;
  	}
  
***************
*** 374,386 ****
  		pe = getprotobyname("TCP");
  		if (pe == NULL)
  		{
! 			elog(ERROR, "postmaster: getprotobyname failed");
  			return STATUS_ERROR;
  		}
  		if (setsockopt(port->sock, pe->p_proto, TCP_NODELAY,
  					   &on, sizeof(on)) < 0)
  		{
! 			elog(ERROR, "postmaster: setsockopt failed: %m");
  			return STATUS_ERROR;
  		}
  	}
--- 378,390 ----
  		pe = getprotobyname("TCP");
  		if (pe == NULL)
  		{
! 			perror("postmaster: StreamConnection: getprotobyname");
  			return STATUS_ERROR;
  		}
  		if (setsockopt(port->sock, pe->p_proto, TCP_NODELAY,
  					   &on, sizeof(on)) < 0)
  		{
! 			perror("postmaster: StreamConnection: setsockopt");
  			return STATUS_ERROR;
  		}
  	}
