379
if (!pool_read_buffer_is_empty(MASTER(backend)) || pool_is_query_in_progress())
380
* ProcessFrontendResponse() may start query
381
* processing. We need to recheck
382
* pool_is_query_in_progress() here.
384
if (pool_is_query_in_progress())
381
386
status = ProcessBackendResponse(frontend, backend, &state, &num_fields);
382
387
if (status != POOL_CONTINUE)
392
/* Ok, query is not in progress. To make sure that we
393
* have any pending data in backends. */
395
/* If we have pending data in master, we need to process it */
396
if (!pool_ssl_pending(MASTER(backend)) &&
397
!pool_read_buffer_is_empty(MASTER(backend)))
399
status = ProcessBackendResponse(frontend, backend, &state, &num_fields);
400
if (status != POOL_CONTINUE)
405
for (i=0;i<NUM_BACKENDS;i++)
407
if (!VALID_BACKEND(i))
410
if (pool_ssl_pending(CONNECTION(backend, i)) ||
411
pool_read_buffer_is_empty(CONNECTION(backend, i)))
413
/* If we have pending data in master, we need to process it */
414
if (IS_MASTER_NODE_ID(i))
416
status = ProcessBackendResponse(frontend, backend, &state, &num_fields);
417
if (status != POOL_CONTINUE)
427
/* If master does not have pending
428
* data, we discard one packet from
430
status = pool_read(CONNECTION(backend, i), &kind, sizeof(kind));
433
pool_error("pool_process_query: error while reading message kind from backend %d", i);
436
pool_log("pool_process_query: discard %c packet from backend %d", kind, i);
438
if (MAJOR(backend) == PROTO_MAJOR_V3)
440
if (pool_read(CONNECTION(backend, i), &len, sizeof(len)) < 0)
442
pool_error("pool_process_query: error while reading message length from backend %d", i);
445
len = ntohl(len) - 4;
446
string = pool_read2(CONNECTION(backend, i), len);
449
pool_error("pool_process_query: error while reading rest of message from backend %d", i);
455
string = pool_read_string(CONNECTION(backend, i), &len, 0);
458
pool_error("pool_process_query: error while reading rest of message from backend %d", i);
387
469
/* reload config file */