Thank you Kuntal,

On Fri, Feb 19, 2021 at 4:36 AM Kuntal Ghosh <kuntalghosh.2...@gmail.com>
wrote:

> On Thu, Feb 18, 2021 at 9:32 PM Jan Wieck <j...@wi3ck.info> wrote:
>
>
> Few comments in the extension code (although experimental):
>
> 1. In telnet_srv.c,
> + static int        pe_port;
> ..
> +       DefineCustomIntVariable("telnet_srv.port",
> +                                                       "Telnet server
> port.",
> +                                                       NULL,
> +                                                       &pe_port,
> +                                                       pe_port,
> +                                                       1024,
> +                                                       65536,
> +                                                       PGC_POSTMASTER,
> +                                                       0,
> +                                                       NULL,
> +                                                       NULL,
> +                                                       NULL);
>
> 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
>


-- 
Jan Wieck

Reply via email to