Don't dump core if pq_comm_reset() is called before pq_init().

This can happen if an error occurs in a standalone backend.  This bug
was introduced by commit 2bd9e412f92bc6a68f3e8bcb18e04955cc35001d.

Reported by Álvaro Herrera.
This commit is contained in:
Robert Haas 2014-12-04 19:47:06 -05:00
parent 5ede3a3117
commit 9a94629833

View File

@ -105,9 +105,6 @@ char *Unix_socket_group;
/* Where the Unix socket files are (list of palloc'd strings) */
static List *sock_paths = NIL;
PQcommMethods *PqCommMethods;
/*
* Buffers for low-level I/O.
*
@ -154,8 +151,6 @@ static int Lock_AF_UNIX(char *unixSocketDir, char *unixSocketPath);
static int Setup_AF_UNIX(char *sock_path);
#endif /* HAVE_UNIX_SOCKETS */
PQcommMethods PQcommSocketMethods;
static PQcommMethods PqCommSocketMethods = {
socket_comm_reset,
socket_flush,
@ -167,6 +162,9 @@ static PQcommMethods PqCommSocketMethods = {
socket_endcopyout
};
PQcommMethods *PqCommMethods = &PqCommSocketMethods;
/* --------------------------------
* pq_init - initialize libpq at backend startup
@ -175,7 +173,6 @@ static PQcommMethods PqCommSocketMethods = {
void
pq_init(void)
{
PqCommMethods = &PqCommSocketMethods;
PqSendBufferSize = PQ_SEND_BUFFER_SIZE;
PqSendBuffer = MemoryContextAlloc(TopMemoryContext, PqSendBufferSize);
PqSendPointer = PqSendStart = PqRecvPointer = PqRecvLength = 0;