libmicrohttpd2

HTTP server C library (MHD 2.x, alpha)
Log | Files | Refs | README | LICENSE

commit 8b8a4095f7b65f241efba238d323cf1d9ca4aaf7
parent c76655b2aed5db9f579921fc1d11e0da1428197d
Author: Evgeny Grin (Karlson2k) <k2k@drgrin.dev>
Date:   Mon, 20 Jul 2026 15:20:22 +0200

libtest_convenience_server_reply: fixed error on partial write

Diffstat:
Msrc/tests/client_server/libtest_convenience_server_reply.c | 21+++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/src/tests/client_server/libtest_convenience_server_reply.c b/src/tests/client_server/libtest_convenience_server_reply.c @@ -93,6 +93,7 @@ MHDT_server_reply_file ( uint_fast64_t upload_size) { const char *text = cls; + size_t written = 0u; size_t tlen = strlen (text); int fd; @@ -107,10 +108,26 @@ MHDT_server_reply_file ( "Failed to create a temporary file\n"); return MHD_action_abort_request (request); } - if (((ssize_t)tlen) != write (fd, text, tlen)) + + while (written < tlen) + { + ssize_t wr_chunk = write (fd, + text + written, + tlen - written); + if (0 == wr_chunk) + break; + else if (0 > wr_chunk) + { + if (EINTR == errno) + continue; + break; + } + written += (size_t)wr_chunk; + } + if (written < tlen) { fprintf (stderr, - "Failed to write() temporary file in one go: %s\n", + "Failed to write() a temporary file: %s\n", strerror (errno)); (void)close (fd); return MHD_action_abort_request (request);