diff --git a/lib/roles/cgi/cgi-server.c b/lib/roles/cgi/cgi-server.c index ff4d918b1..bdb4e0a8f 100644 --- a/lib/roles/cgi/cgi-server.c +++ b/lib/roles/cgi/cgi-server.c @@ -90,6 +90,14 @@ lws_cgi_reap_cb(void *opaque, lws_usec_t *accounting, siginfo_t *si, int we_killed_him) { struct lws *wsi = (struct lws *)opaque; + struct lws_cgi_args args; + + if (wsi->http.cgi && + user_callback_handle_rxflow(wsi->a.protocol->callback, wsi, + LWS_CALLBACK_CGI_TERMINATED, + wsi->user_space, (void *)&args, + (unsigned int)wsi->http.cgi->pi)) + lwsl_notice("\n"); /* * The cgi has come to an end, by itself or with a signal... @@ -418,6 +426,8 @@ lws_cgi(struct lws *wsi, const char * const *exec_array, goto bail; } + wsi->http.cgi->pi = wsi->http.cgi->lsp->child_pid; + /* we are the parent process */ wsi->a.context->count_cgi_spawned++; diff --git a/lib/roles/cgi/private-lib-roles-cgi.h b/lib/roles/cgi/private-lib-roles-cgi.h index 8eff589c0..76fd91527 100644 --- a/lib/roles/cgi/private-lib-roles-cgi.h +++ b/lib/roles/cgi/private-lib-roles-cgi.h @@ -75,6 +75,8 @@ struct lws_cgi { lws_filepos_t content_length; lws_filepos_t content_length_seen; + pid_t pi; + int match[SIGNIFICANT_HDR_COUNT]; char l[12]; int response_code;