Hi, I am trying this model with MHD_USE_SELECT_INTERNALLY (instead of a external select as explained in the earlier e-mail). However have not been able to successful in doing so.
1. Process P1, start the MHD daemon and defines answer_to_connection() function. 2. answer_to_connection, then verifies for basic authentication, if successful, *suspends the connections* 3. It then retrieves the required request header and url argument and frames another request to process P2 and exits answer_to_connection() function. 4. P2 process the request and responds with an answer 5. Function send_final_response() in process P1, *resumes the connection* and sends the response received from process P2 using MHD_create_response_from_buffer(). 6. MHD_create_response_from_buffer return error and the response is not sent out. Observations: 1. If the response is sent from answer_to_connection function, there are no error. The response is sent out successfully. 2. Implemented MHD_RequestCompletedCallback() function and noticed that the callback is being called immediately after exiting the answer_to_connection() function. Ie, at step3. with toe vaule (*MHD_RequestTerminationCode )* as 1 (MHD_REQUEST_TERMINATED_WITH_ERROR) How can i debug this case further? 1. Is there a way to find out if MHD_resume_connection returned an error? (i am using MHD version 0.9.50 and resume and suspend returns void) 2. MHD_USE_SELECT_INTERNALLY can handle multiple simultaneous connections, right? How can i differentiate the connection pointers with respect be multiple connection? Any pointer on how to debug this further will be of great help. Thanks, Geetha On Mon, Aug 1, 2016 at 6:51 PM, Geetha Shanmugam <[email protected] > wrote: > Thanks very much for the response, Andreas Wehrmann. It helps. > > ~Geetha > > > On Fri, Jul 29, 2016 at 10:58 PM, Geetha Shanmugam < > [email protected]> wrote: > >> Hi, >> >> We are trying to use libmircohttpd in the following scenario. >> >> >> >> Process P1 start MHD daemon in the external select mode. >> >> It has to communicate to another process say P2 to send out the response. >> >> The communication between P1 and P2 are via sockets (already tested and >> working model) >> >> P1 should be able to receive and process multiple request without >> blocking. >> >> The response should be sent asynchronously, not from the access handler >> callback function. >> >> >> >> Is there an example that I can refer to understand how this can be done? >> >> >> >> From reading thru the archive and manual, i understand that we can use >> the following APIs >> >> 1. MHD_suspend connection() can be called from access handler callback >> function, so the daemon can process the other incoming request, when the >> first one is being processed. >> >> 2. MHD_resume_connection() to send out the response once it is ready. >> >> 3. MHD_create_response_from_callback() - with a content reader callback >> and content reader free callback. >> >> But unable to get the complete flow as how this can be done. >> >> >> >> Thanks, >> >> Geetha >> >> >
