diff --git a/changelog b/changelog
index db66e9d4a62ee3d7ac386ce8f28fd3ad5e169cfc..006cc20b071d0e89d3468947d1445e6dd8c85beb 100644
--- a/changelog
+++ b/changelog
@@ -17,6 +17,17 @@ known to affect anything until after it was fixed
 requests callback on writeable for the socket it will busywait until the
 socket closes
 
+5) MAJOR Although the test server has done it for a few versions already, it
+is now required for the user code to explicitly call
+
+	if (lws_http_transaction_completed(wsi))
+		return -1;
+
+when it finishes replying to a transaction in http.  Previously the library
+did it for you, but that disallowed large, long transfers with multiple
+trips around the event loop (and cgi...).
+
+
 Changes
 -------
 
diff --git a/lib/handshake.c b/lib/handshake.c
index 9bae6e45700a9ef75626787399b73467487373cf..e48af8432266c603b0248ed8394e3b612ecbae5d 100644
--- a/lib/handshake.c
+++ b/lib/handshake.c
@@ -130,7 +130,7 @@ lws_read(struct lws *wsi, unsigned char *buf, size_t len)
 		switch (wsi->state) {
 			case LWSS_HTTP:
 			case LWSS_HTTP_HEADERS:
-				goto http_complete;
+				goto read_ok;
 			case LWSS_HTTP_ISSUING_FILE:
 				goto read_ok;
 			case LWSS_HTTP_BODY: