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:
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);