Commit Diff


commit - 98c7fd82fde99a5be248c7268cd52d18bb9b9c4e
commit + 94a71055f46811ae239b1b26205482f35fbf85e9
blob - aa4b34908402c0e2ee80c655f889cd5ff9e55664
blob + 515a0296929c24485c2fb911b0240a3feb445be5
--- 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)