Commit Diff


commit - 3448a19afa20edfa1069b2d793abcda5a9006565
commit + f91b5c433d4c2fb2e80053859b6f15c9239b3231
blob - ff9cd1e8a402bfed028e0aa1db7d6cf94c159eb4
blob + 33fddb5601425a93824e79798b4bd2ee24a574a3
--- lib/serve.c
+++ lib/serve.c
@@ -928,9 +928,13 @@ serve_read(int infd, int outfd, int gotd_sock, const c
 				goto done;
 			}
 
-			err = forward_flushpkt(&ibuf);
-			if (err)
-				goto done;
+			if (curstate == STATE_EXPECT_WANT ||
+			    curstate == STATE_EXPECT_MORE_WANT ||
+			    curstate == STATE_EXPECT_HAVE) {
+				err = forward_flushpkt(&ibuf);
+				if (err)
+					goto done;
+			}
 			if (curstate == STATE_EXPECT_HAVE && !have_ack) {
 				err = send_nak(outfd, chattygot);
 				if (err)