free(channel);
}
+static void dvcman_clear(drdynvcPlugin* drdynvc, IWTSVirtualChannelManager* pChannelMgr)
+{
+ DVCMAN* dvcman = (DVCMAN*)pChannelMgr;
+
+ WINPR_UNUSED(drdynvc);
+
+ ArrayList_Clear(dvcman->plugins);
+ ArrayList_Clear(dvcman->channels);
+ ArrayList_Clear(dvcman->plugin_names);
+ ArrayList_Clear(dvcman->listeners);
+}
+
static void dvcman_free(drdynvcPlugin* drdynvc, IWTSVirtualChannelManager* pChannelMgr)
{
DVCMAN* dvcman = (DVCMAN*)pChannelMgr;
+ WINPR_UNUSED(drdynvc);
+
ArrayList_Free(dvcman->plugins);
ArrayList_Free(dvcman->channels);
ArrayList_Free(dvcman->plugin_names);
BOOL bAccept;
DVCMAN_CHANNEL* channel;
DrdynvcClientContext* context;
- IWTSVirtualChannelCallback* pCallback;
DVCMAN* dvcman = (DVCMAN*)pChannelMgr;
UINT error;
if (strcmp(listener->channel_name, ChannelName) == 0)
{
+ IWTSVirtualChannelCallback* pCallback = NULL;
channel->iface.Write = dvcman_write_channel;
channel->iface.Close = dvcman_close_channel_iface;
bAccept = TRUE;
- pCallback = NULL;
if ((error = listener->listener_callback->OnNewChannelConnection(
listener->listener_callback, &channel->iface, NULL, &bAccept, &pCallback)) ==
WTSErrorToString(status), status);
}
+ dvcman_clear(drdynvc, drdynvc->channel_mgr);
+ MessageQueue_Clear(drdynvc->queue);
drdynvc->OpenHandle = 0;
if (drdynvc->data_in)