Re: libpq compression
От | Konstantin Knizhnik |
---|---|
Тема | Re: libpq compression |
Дата | |
Msg-id | 26003e29-5f01-ff42-0859-9d6f69a55148@postgrespro.ru обсуждение исходный текст |
Ответ на | libpq compression ("David G. Johnston" <david.g.johnston@gmail.com>) |
Список | pgsql-hackers |
On 28.10.2020 17:57, Даниил Захлыстов wrote: > Hi, thanks for the patch! > I’ve made a quick review and found one issue. > If the backend sends a CompressionAck message followed by some already > compressed message (for example, AuthenticationOk), then there is a > chance that pqReadData() will read both messages into the read buffer > at once. In this case, the CompressionAck message will be read > normally, but the client will fail to recognize the next message (for > example, AuthenticationOk) since it came in a compressed form but was > incorrectly read as a regular message. So the client would not be able > to recognize the second message and will crash. > Example of a successful launch (added some debug output): > usernamedt-osx: ~ usernamedt $ psql -d "host = x.x.x.x port = 6432 > dbname = testdb user = testuser compression = 1" > NUM_READ: 6 (pqReadData read CompressionAck (6 bytes) and nothing more) > pqReadData RC: 1 > NUM_READ: 346 > pqReadData RC: 1 > psql (14devel) > Type "help" for help. > testdb => // OK > Example of a failed launch: > usernamedt-osx: ~ usernamedt $ psql -d "host = x.x.x.x port = 6432 > dbname = testdb user = testuser compression = 1" > NUM_READ: 24 (pqReadData read CompressionAck (6 bytes) and compressed > AuthenticationOk (18 bytes) came after it) > pqReadData RC: 1 > psql: error: could not connect to server: expected authentication > request from server, but received x // FAIL Thank you for reporting the problem. Fix is attached. -- Konstantin Knizhnik Postgres Professional: http://www.postgrespro.com The Russian Postgres Company
Вложения
В списке pgsql-hackers по дате отправления: