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,