+void HTTPD::request_completed_thunk(void *cls, struct MHD_Connection *connection, void **con_cls, enum MHD_RequestTerminationCode toe)
+{
+ HTTPD *httpd = (HTTPD *)cls;
+ return httpd->request_completed(connection, con_cls, toe);
+}
+
+void HTTPD::request_completed(struct MHD_Connection *connection, void **con_cls, enum MHD_RequestTerminationCode toe)
+{
+ if (con_cls == nullptr) {
+ // Request was never set up.
+ return;
+ }
+ HTTPD::Stream *stream = (HTTPD::Stream *)*con_cls;
+ {
+ unique_lock<mutex> lock(streams_mutex);
+ delete stream;
+ streams.erase(stream);
+ }
+}
+