The variable pe_port should be initialized to a value which is > 1024 and < 65536. Otherwise, the following assert will fail, TRAP: FailedAssertion("newval >= conf->min", File: "guc.c", Line: 5541, PID: 12100)
Right, forgot to turn on Asserts.
2. The function pq_putbytes shouldn't be used by anyone other than old-style COPY out. + pq_putbytes(msg, strlen(msg)); Otherwise, the following assert will fail in the same function: /* Should only be called by old-style COPY OUT */ Assert(DoingCopyOut);
I would argue that the Assert needs to be changed. It is obvious that the Assert in place is meant to guard against direct usage of pg_putbytes() in an attempt to force all code to use pq_putmessage() instead. This is good when speaking libpq wire protocol since all messages there are prefixed with a one byte message type. It does not apply to other protocols.
I propose to create another global boolean IsNonLibpqFrontend which the protocol extension will set to true when accepting the connection and the above then will change to
Assert(DoingCopyOut || IsNonLibpqFrontend);
Regards, Jan
-- Thanks & Regards, Kuntal Ghosh Amazon Web Services