free(op);
}
+static void _process_pending_destroy(void)
+{
+ VINE_LOGD("Process pending destroy");
+ while (!lws_service_adjust_timeout(g_context, 1, 0))
+ lws_service_tsi(g_context, -1, 0);
+}
+
static void _process_websocket_op_request(void)
{
RET_IF(op_queue.empty(), "operation queue is NULL");
case WEBSOCKET_OP_WRITE:
_request_write(op->ws);
break;
+ case WEBSOCKET_OP_TERMINATE:
+ _process_pending_destroy();
+ break;
default:
break;
}
listen_vh_list.erase(ws->vh);
lws_vhost_destroy(ws->vh);
ws->vh = NULL;
+
+ _add_websocket_op_request(WEBSOCKET_OP_TERMINATE,
+ ws, 0, NULL, 0, NULL, 0, NULL);
+ _notify_websocket_op_request();
+
return VINE_DATA_PATH_ERROR_NONE;
}