From dbfbbb41b138730ca0dccfa928f47db0e348738e Mon Sep 17 00:00:00 2001
From: Andy Green <andy.green@linaro.org>
Date: Wed, 24 Feb 2016 20:58:19 +0800
Subject: [PATCH] user code must explicitly complete http transaction

Signed-off-by: Andy Green <andy.green@linaro.org>
---
 changelog       | 11 +++++++++++
 lib/handshake.c |  2 +-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/changelog b/changelog
index db66e9d4..006cc20b 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 9bae6e45..e48af843 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:
-- 
GitLab