The CTRL-C / SIGTERM will be required by the application, so after this advice, I'm going to use a list with mutex and join (or cancel) the active threads before shutting down the server.
Supposing this new design, what is the best point to call the "resume" function? For example:
static void *thread_cb(void *cls) {
/* this is inside new thread */
struct req *r = cls;
// MHD_resume_connection(r->con); // position 1
r->cb(); // possible long time processing data
MHD_resume_connection(r->con); // position 2
return NULL;
}
int ahc(...) {
...
MHD_suspend_connection(r->con);
ret = pthread_create(&thread, NULL, thread_cb, r);
return ret;
}