IncompletePacketDecision handle_incomplete_packet()

in src/rewrite_query.c [172:190]


IncompletePacketDecision handle_incomplete_packet(PgSocket *client, PktHdr *pkt) {
	if (incomplete_pkt(pkt)) {
		slog_warning(client, "Unable to rewrite query - buffer does not contain full query packet");
		slog_warning(client, "Buffer len -> %d, Pkt len -> %d", mbuf_written(&pkt->data), pkt->len);
		/* is packet size bigger than the buffer size? */
		if ((int)pkt->len > (int)cf_sbuf_len) {
			/* Nope - we will never get the full packet */
			slog_error(client, "Packet length (%d) bigger than buffer size (%d)", pkt->len, cf_sbuf_len);
			slog_error(client, "Increase buffer size in config (pkt_buf) to contain the maximum sized query");
			slog_error(client, "rewrite_query_disconnect_on_failure = %s", cf_rewrite_query_disconnect_on_failure);
			return handle_failure(client);
		} else {
			/* there is room in the buffer - let's wait for rest of packet */
			slog_warning(client, "Wait for rest of packet to arrive");
			return kIncompletePacketDecisionDefer;
		}
	}
	return kIncompletePacketDecisionContinue;
}