From: | Heikki Linnakangas <hlinnakangas(at)vmware(dot)com> |
---|---|
To: | Craig Ringer <craig(at)2ndquadrant(dot)com>, "pgsql-odbc(at)postgresql(dot)org" <pgsql-odbc(at)postgresql(dot)org> |
Subject: | Re: Protocol de-synchronisation bug, bogus query sent |
Date: | 2014-06-19 10:32:45 |
Message-ID: | 53A2BC4D.2030503@vmware.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-odbc |
On 06/19/2014 06:44 AM, Craig Ringer wrote:
> The whole code block around connection.c:3082 appears to be attempting
> to send an empty query in order to elicit an 'I' (EmptyQueryResponse)
> message. It sends a malformed protocol message:
>
> SOCK_put_string(self->sock, "Q ");
> SOCK_flush_output(self->sock);
>
> so the server just waits for the rest of the message, never responding.
>
> When the connection is killed by program exit later, the server will log:
>
> LOG: unexpected EOF within message length word
> LOG: disconnection: session time: 0:00:08.910 user=Administrator
> database=XXXX host=127.0.0.1 port=53705
> LOG: could not receive data from client: No connection could be made
> because the target machine actively refused it.
>
>
> That's because the V3 protocol specifies that the message format for
> Query is:
>
> 'Q'
> [32 bit integer]
> [query string]
>
> http://www.postgresql.org/docs/current/static/protocol-message-formats.html
>
> ... but psqlODBC just sends:
>
> 'Q'
> '\x20'
> '\x00'
>
> If it is really necessary to go through this empty-query dance, then for
> the V3 protocol the correct message would be:
>
> /* Send an empty query to elicit an 'I' (EmptyQueryResponse)
> * from the server */
> SOCK_put_char(self->sock, 'Q');
> SOCK_put_int(self->sock, 5, 4);
> SOCK_put_char(self->sock, '\0');
Hmm. Just before that code, there's this:
> if (!beforeV2)
> break;
So we shouldn't even get there with protocol version 3. But if you
managed to hit that, apparently we do. Can you debug that further?
- Heikki
From | Date | Subject | |
---|---|---|---|
Next Message | Dave Cramer | 2014-06-19 11:49:41 | Re: Removing support for v1 and v2 protocols? |
Previous Message | Heikki Linnakangas | 2014-06-19 09:14:23 | Re: Removing support for v1 and v2 protocols? |