I use the following sequence of commands:

MHD_Response* resp = MHD_create_response_from_callback (
            MHD_SIZE_UNKNOWN, DEFAULT_BLOCK_SIZE,
            asyncReplyCallback, c, asyncReplyCleaner );
MHD_add_response_header (c->mConnection, "Content-Type", "application/json" );
MHD_queue_response ( c->mConnection,  MHD_HTTP_OK , resp );
MHD_destroy_response (resp);

The callback function does approx. the following:

<1 or more times: copy data to provided buffer and return data length >
return MHD_CONTENT_READER_END_OF_STREAM; /* when data is finished */

In general this code works, but with problems:
1. Despite the library adds the "Transfer-encoding: chunked", there is no
chunk formatting in data. All, what is returned from callback, is
transmitted "as is".
2. The response header is not set. (Content-Type)
3. The browser does not know, when data is finished. It shows that this
connection is loading forever. The javascript object XmlHttpRequest never
gets the state "ready". I have impression, that this connection (this
socket) will be never reused by browser for subsequent requests.

Is there any way to handle the reply from callback properly?
http <https://stackoverflow.com/questions/tagged/http>

Reply via email to