mirror of
https://github.com/FreeRDP/FreeRDP.git
synced 2025-06-03 00:00:20 +00:00
Fixed compilation warnings, added some asserts
This commit is contained in:
parent
63d0d3e4cf
commit
eda7cf785b
@ -16,6 +16,8 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
#include <winpr/assert.h>
|
||||||
|
|
||||||
#include <freerdp/channels/drdynvc.h>
|
#include <freerdp/channels/drdynvc.h>
|
||||||
#include <freerdp/server/proxy/proxy_log.h>
|
#include <freerdp/server/proxy/proxy_log.h>
|
||||||
|
|
||||||
@ -77,8 +79,8 @@ static DynvcReadResult dynvc_read_varInt(wStream* s, size_t len, UINT64* varInt,
|
|||||||
return DYNCVC_READ_OK;
|
return DYNCVC_READ_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static PfChannelResult DynvcTrackerPeekFn(ChannelStateTracker* tracker, BOOL firstPacket,
|
||||||
PfChannelResult DynvcTrackerPeekFn(ChannelStateTracker* tracker, BOOL firstPacket, BOOL lastPacket)
|
BOOL lastPacket)
|
||||||
{
|
{
|
||||||
BYTE cmd, byte0;
|
BYTE cmd, byte0;
|
||||||
wStream *s, sbuffer;
|
wStream *s, sbuffer;
|
||||||
@ -86,7 +88,7 @@ PfChannelResult DynvcTrackerPeekFn(ChannelStateTracker* tracker, BOOL firstPacke
|
|||||||
BOOL haveLength;
|
BOOL haveLength;
|
||||||
UINT64 dynChannelId = 0;
|
UINT64 dynChannelId = 0;
|
||||||
UINT64 Length = 0;
|
UINT64 Length = 0;
|
||||||
pServerChannelContext* dynChannel;
|
pServerChannelContext* dynChannel = NULL;
|
||||||
DynChannelContext* dynChannelContext = (DynChannelContext*)tracker->trackerData;
|
DynChannelContext* dynChannelContext = (DynChannelContext*)tracker->trackerData;
|
||||||
BOOL isBackData = (tracker == dynChannelContext->backTracker.tracker);
|
BOOL isBackData = (tracker == dynChannelContext->backTracker.tracker);
|
||||||
DynChannelTrackerState* trackerState = isBackData ? &dynChannelContext->backTracker : &dynChannelContext->frontTracker;
|
DynChannelTrackerState* trackerState = isBackData ? &dynChannelContext->backTracker : &dynChannelContext->frontTracker;
|
||||||
@ -95,8 +97,8 @@ PfChannelResult DynvcTrackerPeekFn(ChannelStateTracker* tracker, BOOL firstPacke
|
|||||||
const char* direction = isBackData ? "B->F" : "F->B";
|
const char* direction = isBackData ? "B->F" : "F->B";
|
||||||
|
|
||||||
s = Stream_StaticConstInit(&sbuffer, Stream_Buffer(tracker->currentPacket), Stream_GetPosition(tracker->currentPacket));
|
s = Stream_StaticConstInit(&sbuffer, Stream_Buffer(tracker->currentPacket), Stream_GetPosition(tracker->currentPacket));
|
||||||
if (Stream_Length(s) < 1)
|
if (Stream_GetRemainingLength(s) < 1)
|
||||||
return DYNCVC_READ_INCOMPLETE;
|
return PF_CHANNEL_RESULT_ERROR;
|
||||||
|
|
||||||
Stream_Read_UINT8(s, byte0);
|
Stream_Read_UINT8(s, byte0);
|
||||||
cmd = byte0 >> 4;
|
cmd = byte0 >> 4;
|
||||||
@ -234,9 +236,9 @@ PfChannelResult DynvcTrackerPeekFn(ChannelStateTracker* tracker, BOOL firstPacke
|
|||||||
if (Stream_GetRemainingLength(s) < 4)
|
if (Stream_GetRemainingLength(s) < 4)
|
||||||
return PF_CHANNEL_RESULT_ERROR;
|
return PF_CHANNEL_RESULT_ERROR;
|
||||||
|
|
||||||
Stream_Read_INT32(s, creationStatus);
|
Stream_Read_UINT32(s, creationStatus);
|
||||||
WLog_DBG(TAG, "DynvcTracker(%"PRIu16",%s): %s CREATE_RESPONSE openStatus=%"PRIu32, dynChannelId,
|
WLog_DBG(TAG, "DynvcTracker(%" PRIu64 ",%s): %s CREATE_RESPONSE openStatus=%" PRIu32,
|
||||||
dynChannel->channel_name, direction, creationStatus);
|
dynChannelId, dynChannel->channel_name, direction, creationStatus);
|
||||||
|
|
||||||
if (creationStatus != 0)
|
if (creationStatus != 0)
|
||||||
{
|
{
|
||||||
@ -354,6 +356,15 @@ PfChannelResult DynvcTrackerPeekFn(ChannelStateTracker* tracker, BOOL firstPacke
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void DynChannelContext_free(void* context)
|
||||||
|
{
|
||||||
|
DynChannelContext* c = context;
|
||||||
|
if (!c)
|
||||||
|
return;
|
||||||
|
channelTracker_free(c->backTracker.tracker);
|
||||||
|
channelTracker_free(c->frontTracker.tracker);
|
||||||
|
free(c);
|
||||||
|
}
|
||||||
|
|
||||||
static DynChannelContext* DynChannelContext_new(proxyData* pdata, pServerChannelContext* channel)
|
static DynChannelContext* DynChannelContext_new(proxyData* pdata, pServerChannelContext* channel)
|
||||||
{
|
{
|
||||||
@ -363,35 +374,28 @@ static DynChannelContext* DynChannelContext_new(proxyData* pdata, pServerChannel
|
|||||||
|
|
||||||
dyn->backTracker.tracker = channelTracker_new(channel, DynvcTrackerPeekFn, dyn);
|
dyn->backTracker.tracker = channelTracker_new(channel, DynvcTrackerPeekFn, dyn);
|
||||||
if (!dyn->backTracker.tracker)
|
if (!dyn->backTracker.tracker)
|
||||||
goto out_fromClientTracker;
|
goto fail;
|
||||||
dyn->backTracker.tracker->pdata = pdata;
|
dyn->backTracker.tracker->pdata = pdata;
|
||||||
|
|
||||||
dyn->frontTracker.tracker = channelTracker_new(channel, DynvcTrackerPeekFn, dyn);
|
dyn->frontTracker.tracker = channelTracker_new(channel, DynvcTrackerPeekFn, dyn);
|
||||||
if (!dyn->frontTracker.tracker)
|
if (!dyn->frontTracker.tracker)
|
||||||
goto out_fromServerTracker;
|
goto fail;
|
||||||
dyn->frontTracker.tracker->pdata = pdata;
|
dyn->frontTracker.tracker->pdata = pdata;
|
||||||
|
|
||||||
return dyn;
|
return dyn;
|
||||||
|
|
||||||
out_fromServerTracker:
|
fail:
|
||||||
channelTracker_free(dyn->backTracker.tracker);
|
DynChannelContext_free(dyn);
|
||||||
out_fromClientTracker:
|
|
||||||
free(dyn);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void DynChannelContext_free(DynChannelContext* c)
|
|
||||||
{
|
|
||||||
channelTracker_free(c->backTracker.tracker);
|
|
||||||
channelTracker_free(c->frontTracker.tracker);
|
|
||||||
free(c);
|
|
||||||
}
|
|
||||||
|
|
||||||
static PfChannelResult pf_dynvc_back_data(proxyData* pdata, const pServerChannelContext* channel,
|
static PfChannelResult pf_dynvc_back_data(proxyData* pdata, const pServerChannelContext* channel,
|
||||||
const BYTE* xdata, size_t xsize, UINT32 flags,
|
const BYTE* xdata, size_t xsize, UINT32 flags,
|
||||||
size_t totalSize)
|
size_t totalSize)
|
||||||
{
|
{
|
||||||
DynChannelContext* dyn = (DynChannelContext*)channel->context;
|
DynChannelContext* dyn = (DynChannelContext*)channel->context;
|
||||||
|
WINPR_UNUSED(pdata);
|
||||||
|
WINPR_ASSERT(dyn);
|
||||||
return channelTracker_update(dyn->backTracker.tracker, xdata, xsize, flags, totalSize);
|
return channelTracker_update(dyn->backTracker.tracker, xdata, xsize, flags, totalSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -400,6 +404,8 @@ static PfChannelResult pf_dynvc_front_data(proxyData* pdata, const pServerChanne
|
|||||||
size_t totalSize)
|
size_t totalSize)
|
||||||
{
|
{
|
||||||
DynChannelContext* dyn = (DynChannelContext*)channel->context;
|
DynChannelContext* dyn = (DynChannelContext*)channel->context;
|
||||||
|
WINPR_UNUSED(pdata);
|
||||||
|
WINPR_ASSERT(dyn);
|
||||||
return channelTracker_update(dyn->frontTracker.tracker, xdata, xsize, flags, totalSize);
|
return channelTracker_update(dyn->frontTracker.tracker, xdata, xsize, flags, totalSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -412,7 +418,7 @@ BOOL pf_channel_setup_drdynvc(proxyData* pdata, pServerChannelContext* channel)
|
|||||||
|
|
||||||
channel->onBackData = pf_dynvc_back_data;
|
channel->onBackData = pf_dynvc_back_data;
|
||||||
channel->onFrontData = pf_dynvc_front_data;
|
channel->onFrontData = pf_dynvc_front_data;
|
||||||
channel->contextDtor = (proxyChannelContextDtor)DynChannelContext_free;
|
channel->contextDtor = DynChannelContext_free;
|
||||||
channel->context = ret;
|
channel->context = ret;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user