Technically, whatever amount of memory is left in the memory pool
will be used for the buffer.  You can use the

MHD_OPTION_CONNECTION_MEMORY_LIMIT

to set the initial size of the memory pool (default: 32k).  Some
of that memory will go to storing the HTTP headers, the rest will be used as
the buffer for the response (if the response is generated using
the method you outlined).

Happy hacking!

Christian

On 08/25/2012 01:12 PM, Martin Velek wrote:
A supplementary question.

Where is decided which buffer will be used for data_generator
function? I have tried to set up block_size to 80 or 128 or 256 or
1024 and the data_generator function was always called with a buffer
from mem pool, size about 32KB.

M.V.
On Sat, Aug 25, 2012 at 10:37 AM, Martin Velek<[email protected]>  wrote:
Hello,

may I ask you, how to correctly implement SSI
(http://en.wikipedia.org/wiki/Server_Side_Includes) pages into
libmicrohttpd?

E.g. I have a page
#define PAGE "<html><head><title>libmicrohttpd demo</title>"\
              "</head><body>Temeprature:<!--#exec cgi="temperature"
--></body></html>"

The SSI parser knows that he should call const * char
temperature(void) when the string<!--#exec cgi="temperature" -->  is
found inside a html file. There is an issue, I cannot prepare the
whole reply in one buffer.

I have thought about using this function (taken from example)
  response = MHD_create_response_from_callback (MHD_SIZE_UNKNOWN, xxx,
&data_generator, NULL, NULL);

And the data_generator, which contains SSI parser, will read from
given filename until<!--#exec cgi="temperature" -->  is found and
replace it by the output of const * char temperature(void). If no data
left, it will return MHD_CONTENT_READER_END_OF_STREAM.

Is it a fancy solution? Or if there is a better way how to handle it,
I will appreciate your help.

Thank you
Martin Velek


Reply via email to