pgpool2.git / summary / log / commit / refs
commit e8f509252a1bacc2bc8993299ad393e9bbab4724
Author: Tatsuo Ishii <ishii@postgresql.org>
Date: Wed Aug 16 05:54:44 2017 +0000
Fix infinite loop while resetting connection.
If there was an error, bogus sent_message is registered and it causes
an infinite loop because removing the bogus list does not work in the
current implementation. Solution is, not to register bogus sent
message in the error case.
src/protocol/pool_proto_modules.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/protocol/pool_proto_modules.c b/src/protocol/pool_proto_modules.c
index d02955646..764acceef 100644
--- a/src/protocol/pool_proto_modules.c
+++ b/src/protocol/pool_proto_modules.c
@@ -1908,7 +1908,8 @@ POOL_STATUS ReadyForQuery(POOL_CONNECTION *frontend,
if ((pool_is_doing_extended_query_message() &&
session_context->query_context->query_state[MASTER_NODE_ID] != POOL_UNPARSED &&
session_context->uncompleted_message) ||
- (!pool_is_doing_extended_query_message() && session_context->uncompleted_message))
+ (!pool_is_doing_extended_query_message() && session_context->uncompleted_message &&
+ session_context->uncompleted_message->kind != 0))
{
pool_add_sent_message(session_context->uncompleted_message);
pool_remove_sent_message(session_context->uncompleted_message->kind,
[parent: 9f1acea4e6b1]