Re: Patch: Implement failover on libpq connect level.
От | Mithun Cy |
---|---|
Тема | Re: Patch: Implement failover on libpq connect level. |
Дата | |
Msg-id | CAD__Ouh3cK2_ZAAUXt4PC4gNPYSuZJPx9nDxUNVNeaFWABbLsQ@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Patch: Implement failover on libpq connect level. (Robert Haas <robertmhaas@gmail.com>) |
Ответы |
Re: Patch: Implement failover on libpq connect level.
|
Список | pgsql-hackers |
On Tue, Nov 1, 2016 at 7:44 PM, Robert Haas <robertmhaas@gmail.com> wrote:
>> Starting program: /home/mithun/libpqbin/bin/./ psql
>> postgres://%2home%2mithun: 5555/postgres -U mithun1
>Can you provide a concrete test scenario or some test code that fails?
>connhost is supposed to be getting set in connectOptions2(), which is
>run (AIUI) when the PGconn is first created. So I think that it will
>be set in all scenarios of the type you mention, but I might be
>missing something.
Sorry if my sentence is confusing
If I give a proper hexadecimal encoding % followed by 2 hexadigit (i.e. for e.g %2f, %2a) every thing is fine. When I pass a invalid hexadigit encoding eg: %2h, %2m among the host string e.g "postgres://%2home%2mithun: 5555/postgres". then "PQconnectdbParams()" fails before calling connectOptions2(). In that case failed PQconnectdbParams() also return a PGconn where connhost is not set. If we call PQpass(), PQReset() on such a PGconn we get a crash.
A simple test case which crash is:
./psql 'postgres://%2hxxx: 5555/postgres'
Call stack:
--------------
#0 0x00007ffff7bb8d4f in PQpass (conn=0x68aa10) at fe-connect.c:5582
#1 0x00007ffff7bb907a in PQconnectionNeedsPassword (conn=0x68aa10) at fe-connect.c:5727
#2 0x00000000004130aa in main (argc=2, argv=0x7fffffffdff8) at startup.c:250
В списке pgsql-hackers по дате отправления: