diff --git a/READMEs/release-checklist b/READMEs/release-checklist
index 5db79e9e14181b2fc3abf1665e260e45e0d5608c..3c4f3176eb098cc9dc9553de8412ab383df97c14 100644
--- a/READMEs/release-checklist
+++ b/READMEs/release-checklist
@@ -81,3 +81,13 @@ Release Checklist
 9) website
 
  a) update latest tag for release branch
+
+10) post-relase version bump
+
+Bump the PATCH part of the version to 99
+
+-set(CPACK_PACKAGE_VERSION_PATCH "0")
++set(CPACK_PACKAGE_VERSION_PATCH "99")
+
+to reflect it's newer than any stable release but not a new version yet.
+
diff --git a/lib/core/libwebsockets.c b/lib/core/libwebsockets.c
index 4cd86c9ad25da5cbfebd8f935d9c19a412bea81c..1d9c4bdcbef00fc323d6f25b41ad0f3d16ef56c6 100644
--- a/lib/core/libwebsockets.c
+++ b/lib/core/libwebsockets.c
@@ -436,7 +436,7 @@ __lws_set_timeout(struct lws *wsi, enum pending_timeout reason, int secs)
 
 	time(&now);
 
-	lwsl_debug("%s: %p: %d secs\n", __func__, wsi, secs);
+	lwsl_debug("%s: %p: %d secs (reason %d)\n", __func__, wsi, secs, reason);
 	wsi->pending_timeout_limit = secs;
 	wsi->pending_timeout_set = now;
 	wsi->pending_timeout = reason;
diff --git a/lib/core/output.c b/lib/core/output.c
index af9a53cfd20279ed0f3d1f67ca0000e25d5e7e00..a10d6a3b5c85faab41c7ad482b0b7a2ac08014d6 100644
--- a/lib/core/output.c
+++ b/lib/core/output.c
@@ -131,9 +131,11 @@ int lws_issue_raw(struct lws *wsi, unsigned char *buf, size_t len)
 	 * send in the buflist.
 	 */
 	if (lws_has_buffered_out(wsi)) {
-		lwsl_info("%p partial adv %d (vs %ld)\n", wsi, n,
-			  (long)real_len);
-		lws_buflist_use_segment(&wsi->buflist_out, n);
+		if (n) {
+			lwsl_info("%p partial adv %d (vs %ld)\n", wsi, n,
+					(long)real_len);
+			lws_buflist_use_segment(&wsi->buflist_out, n);
+		}
 
 		if (!lws_has_buffered_out(wsi)) {
 			lwsl_info("%s: wsi %p: buflist_out flushed\n",
diff --git a/lib/roles/h1/ops-h1.c b/lib/roles/h1/ops-h1.c
index 9dbb4b2e069b72cd770be4ac943c2d87df29b029..f47ae9c7fbb567acdca810b3a6bb63a7a7bb05b3 100644
--- a/lib/roles/h1/ops-h1.c
+++ b/lib/roles/h1/ops-h1.c
@@ -665,7 +665,7 @@ rops_write_role_protocol_h1(struct lws *wsi, unsigned char *buf, size_t len,
 			 * pipelining
 			 */
 			n = lws_snprintf(c, sizeof(c), "%X\x0d\x0a", (int)o);
-			lwsl_notice("%s: chunk %s\n", __func__, c);
+			// lwsl_notice("%s: chunk %s\n", __func__, c);
 			out -= n;
 			o += n;
 			memcpy(out, c, n);
diff --git a/lib/roles/http/header.c b/lib/roles/http/header.c
index 51e247574db87fcdbd7eb560d30f464e058e777d..fe41f9c3015cd1492f5680f0d85bd5239c787e64 100644
--- a/lib/roles/http/header.c
+++ b/lib/roles/http/header.c
@@ -271,6 +271,12 @@ lws_add_http_header_status(struct lws *wsi, unsigned int _code,
 				"includeSubDomains", 36, p, end))
 			return 1;
 
+	if (*p >= (end - 2)) {
+		lwsl_err("%s: reached end of buffer\n", __func__);
+
+		return 1;
+	}
+
 	return 0;
 }
 
diff --git a/lib/roles/http/server/server.c b/lib/roles/http/server/server.c
index 25751964baf3b96dd31c5c8e4f8259f79ae97c23..065f731c7444e2e12d58479269a174d503979ed2 100644
--- a/lib/roles/http/server/server.c
+++ b/lib/roles/http/server/server.c
@@ -459,7 +459,7 @@ lws_http_serve(struct lws *wsi, char *uri, const char *origin,
 #endif
 	int spin = 0;
 #endif
-	char path[256], sym[512];
+	char path[256], sym[2048];
 	unsigned char *p = (unsigned char *)sym + 32 + LWS_PRE, *start = p;
 	unsigned char *end = p + sizeof(sym) - 32 - LWS_PRE;
 #if !defined(WIN32) && !defined(LWS_WITH_ESP32)
@@ -577,8 +577,11 @@ lws_http_serve(struct lws *wsi, char *uri, const char *origin,
 
 			/* we don't need to send the payload */
 			if (lws_add_http_header_status(wsi,
-					HTTP_STATUS_NOT_MODIFIED, &p, end))
+					HTTP_STATUS_NOT_MODIFIED, &p, end)) {
+				lwsl_err("%s: failed adding not modified\n",
+						__func__);
 				return -1;
+			}
 
 			if (lws_add_http_header_by_token(wsi,
 					WSI_TOKEN_HTTP_ETAG,
diff --git a/plugins/protocol_post_demo.c b/plugins/protocol_post_demo.c
index c629a83c7bc7e7cefde5ad16083a72de1bc6e373..e8785028156e49c87cc4af6a337a4b48d66cd392 100644
--- a/plugins/protocol_post_demo.c
+++ b/plugins/protocol_post_demo.c
@@ -36,7 +36,7 @@
 
 struct per_session_data__post_demo {
 	struct lws_spa *spa;
-	char result[LWS_PRE + 512];
+	char result[LWS_PRE + 2048];
 	char filename[64];
 	long file_length;
 #if !defined(LWS_WITH_ESP32)
@@ -126,9 +126,13 @@ format_result(struct per_session_data__post_demo *pss)
 	start = p;
 	end = p + sizeof(pss->result) - LWS_PRE - 1;
 
-	p += sprintf((char *)p,
-		"<html><body><h1>Form results (after urldecoding)</h1>"
-		"<table><tr><td>Name</td><td>Length</td><td>Value</td></tr>");
+	p += lws_snprintf((char *)p, end -p,
+			"<!DOCTYPE html><html lang=\"en\"><head>"
+			"<meta charset=utf-8 http-equiv=\"Content-Language\" "
+			"content=\"en\"/>"
+	  "<title>LWS Server Status</title>"
+	  "</head><body><h1>Form results (after urldecoding)</h1>"
+	  "<table><tr><td>Name</td><td>Length</td><td>Value</td></tr>");
 
 	for (n = 0; n < (int)LWS_ARRAY_SIZE(param_names); n++) {
 		if (!lws_spa_get_string(pss->spa, n))
@@ -193,7 +197,6 @@ callback_post_demo(struct lws *wsi, enum lws_callback_reasons reason,
 		break;
 
 	case LWS_CALLBACK_HTTP_WRITEABLE:
-
 		if (!pss->completed)
 			break;
 
@@ -202,7 +205,6 @@ callback_post_demo(struct lws *wsi, enum lws_callback_reasons reason,
 		end = p + sizeof(pss->result) - LWS_PRE - 1;
 
 		if (!pss->sent_headers) {
-
 			n = format_result(pss);
 
 			if (lws_add_http_header_status(wsi, HTTP_STATUS_OK,
@@ -231,7 +233,6 @@ callback_post_demo(struct lws *wsi, enum lws_callback_reasons reason,
 		}
 
 		if (!pss->sent_body) {
-
 			n = format_result(pss);
 
 			n = lws_write(wsi, (unsigned char *)start, n,