commit 5d497ac69913da3efd489e9443b25ca76d57c2bb
parent 66066283bd3733b168db454dd9297ba4262e407d
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date: Tue, 25 Jul 2017 11:41:46 +0300
Updated chunked_example.c
Diffstat:
2 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -1,3 +1,7 @@
+Tue Jul 23 11:32:00 MSK 2017
+ Updated chunked_example.c to provide real illustration of usage of
+ chunked encoding. -EG
+
Thu Jul 13 21:41:00 MSK 2017
Restored SIGPIPE suppression in TLS mode.
Added new value MHD_FEATURE_AUTOSUPPRESS_SIGPIPE so application could
diff --git a/src/examples/chunked_example.c b/src/examples/chunked_example.c
@@ -30,9 +30,27 @@ static ssize_t
callback (void *cls,
uint64_t pos,
char *buf,
- size_t max)
+ size_t buf_size)
{
- return MHD_CONTENT_READER_END_OF_STREAM;
+ static const char response_data[] = "<html><head><title>Simple response</title></head>" \
+ "<body>Simple response text</body></html>";
+ static const uint64_t response_size = (sizeof(response_data)/sizeof(char)) - 1;
+ size_t size_to_copy;
+
+ /* Note: 'pos' will never exceed size of transmitted data. */
+ /* You can use 'pos == response_size' in next check. */
+ if (pos >= response_size)
+ { /* Whole response was sent. Signal end of response. */
+ return MHD_CONTENT_READER_END_OF_STREAM;
+ }
+
+ if (buf_size < (response_size - pos) )
+ size_to_copy = buf_size;
+ else
+ size_to_copy = response_size - pos;
+
+ memcpy (buf, response_data + pos, size_to_copy);
+ return size_to_copy;
}