From 38587d7d286faeec83bdbb89ff34eeee5eabb23e Mon Sep 17 00:00:00 2001
From: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: Tue, 4 Mar 2014 15:30:52 +0200
Subject: [PATCH] Error out on send failure in walsender loop.

I changed the loop in 9.3 to use "goto send_failure" instead of "break" on
errors, but I missed this one case. It was a relatively harmless bug: if
the flush fails once it will most likely fail again as soon as we try to
flush the output again. But it's a bug nevertheless.

Report and fix by Andres Freund.
---
 src/backend/replication/walsender.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c
index cdd9c6a5334..a0338da0d46 100644
--- a/src/backend/replication/walsender.c
+++ b/src/backend/replication/walsender.c
@@ -1100,7 +1100,7 @@ WalSndLoop(void)
 					ping_sent = true;
 					/* Try to flush pending output to the client */
 					if (pq_flush_if_writable() != 0)
-						break;
+						goto send_failure;
 				}
 			}