UINT status;
if (!encomsp)
+ {
+ Stream_Free(s, TRUE);
return ERROR_INVALID_HANDLE;
+ }
#if 0
WLog_INFO(TAG, "EncomspWrite (%"PRIuz")", Stream_Length(s));
Stream_Buffer(s), (UINT32) Stream_Length(s), s);
if (status != CHANNEL_RC_OK)
+ {
+ Stream_Free(s, TRUE);
WLog_ERR(TAG, "VirtualChannelWriteEx failed with %s [%08"PRIX32"]",
- WTSErrorToString(status), status);
-
+ WTSErrorToString(status), status);
+ }
return status;
}
UINT status;
if (!rail)
+ {
+ Stream_Free(s, TRUE);
return CHANNEL_RC_BAD_INIT_HANDLE;
+ }
status = rail->channelEntryPoints.pVirtualChannelWriteEx(rail->InitHandle, rail->OpenHandle,
Stream_Buffer(s), (UINT32) Stream_GetPosition(s), s);
if (!buffer)
{
fprintf(stderr, "rdp2tcp copyThread: malloc failed\n");
- return -1;
+ goto fail;
}
//if (!ReadFile(plugin->hStdOutputRead, plugin->buffer, sizeof plugin->buffer, &dwRead, NULL))
if (!ReadFile(plugin->hStdOutputRead, buffer, bufsize, &dwRead, NULL))
- return -1;
+ {
+ free(buffer);
+ goto fail;
+ }
if (debug > 1)
{
if (plugin->channelEntryPoints.pVirtualChannelWriteEx(plugin->initHandle, plugin->openHandle,
buffer, dwRead, NULL) != CHANNEL_RC_OK)
{
+ free(buffer);
fprintf(stderr, "rdp2tcp copyThread failed %i\n", (int)dwRead);
- return -1;
+ goto fail;
}
WaitForSingleObject(plugin->writeComplete, INFINITE);
ResetEvent(plugin->writeComplete);
}
+fail:
+ ExitThread(0);
return 0;
}
rdpdrPlugin* plugin = (rdpdrPlugin*) rdpdr;
if (!rdpdr || !s)
+ {
+ Stream_Free(s, TRUE);
return CHANNEL_RC_NULL_DATA;
+ }
if (!plugin)
+ {
+ Stream_Free(s, TRUE);
status = CHANNEL_RC_BAD_INIT_HANDLE;
+ }
else
{
status = plugin->channelEntryPoints.pVirtualChannelWriteEx(plugin->InitHandle, plugin->OpenHandle,
if (!remdesk)
{
WLog_ERR(TAG, "remdesk was null!");
+ Stream_Free(s, TRUE);
return CHANNEL_RC_INVALID_INSTANCE;
}
Stream_Buffer(s), (UINT32) Stream_Length(s), s);
if (status != CHANNEL_RC_OK)
+ {
+ Stream_Free(s, TRUE);
WLog_ERR(TAG, "pVirtualChannelWriteEx failed with %s [%08"PRIX32"]",
WTSErrorToString(status), status);
-
+ }
return status;
}
if ((error = remdesk_virtual_channel_write(remdesk, s)))
WLog_ERR(TAG, "remdesk_virtual_channel_write failed with error %"PRIu32"!", error);
- if (error != CHANNEL_RC_OK)
- Stream_Free(s, TRUE);
-
return error;
}
free(raConnectionStringW);
free(expertBlobW);
- if (error != CHANNEL_RC_OK)
- Stream_Free(s, TRUE);
-
return error;
}
out:
free(raConnectionStringW);
- if (error != CHANNEL_RC_OK)
- Stream_Free(s, TRUE);
-
return error;
}
out:
free(expertBlobW);
- if (error != CHANNEL_RC_OK)
- Stream_Free(s, TRUE);
-
return error;
}