diff --git a/libfreerdp/core/transport.c b/libfreerdp/core/transport.c index e06e92893..c734e5f87 100644 --- a/libfreerdp/core/transport.c +++ b/libfreerdp/core/transport.c @@ -497,6 +497,11 @@ int transport_read(rdpTransport* transport, wStream* s) } #endif + if (streamPosition + status >= pduLength) + { + WLog_Packet(transport->log, WLOG_TRACE, Stream_Buffer(s), pduLength, 0); + } + return transport_status; } @@ -532,6 +537,11 @@ int transport_write(rdpTransport* transport, wStream* s) } #endif + if (length > 0) + { + WLog_Packet(transport->log, WLOG_TRACE, Stream_Buffer(s), length, 1); + } + while (length > 0) { if (transport->layer == TRANSPORT_LAYER_TLS) @@ -841,10 +851,13 @@ rdpTransport* transport_new(rdpSettings* settings) transport = (rdpTransport*) malloc(sizeof(rdpTransport)); - if (transport != NULL) + if (transport) { ZeroMemory(transport, sizeof(rdpTransport)); + WLog_Init(); + transport->log = WLog_Get("com.freerdp.core.transport"); + transport->TcpIn = tcp_new(settings); transport->settings = settings; @@ -873,9 +886,9 @@ rdpTransport* transport_new(rdpSettings* settings) void transport_free(rdpTransport* transport) { - if (transport != NULL) + if (transport) { - SetEvent(transport->stopEvent); + SetEvent(transport->stopEvent); if (transport->ReceiveBuffer) Stream_Release(transport->ReceiveBuffer); diff --git a/libfreerdp/core/transport.h b/libfreerdp/core/transport.h index bb573b6eb..945424baf 100644 --- a/libfreerdp/core/transport.h +++ b/libfreerdp/core/transport.h @@ -36,6 +36,7 @@ typedef struct rdp_transport rdpTransport; #include "gateway/tsg.h" #include +#include #include #include #include @@ -74,6 +75,7 @@ struct rdp_transport BOOL async; HANDLE ReadMutex; HANDLE WriteMutex; + wLog* log; }; wStream* transport_send_stream_init(rdpTransport* transport, int size); diff --git a/libfreerdp/core/update.c b/libfreerdp/core/update.c index 126439cac..14d6bb1f9 100644 --- a/libfreerdp/core/update.c +++ b/libfreerdp/core/update.c @@ -1557,10 +1557,7 @@ rdpUpdate* update_new(rdpRdp* rdp) ZeroMemory(update, sizeof(rdpUpdate)); WLog_Init(); - - update->log = WLog_Get("com.freerdp.update"); - WLog_OpenAppender(update->log); - //WLog_SetLogLevel(update->log, WLOG_DEBUG); + update->log = WLog_Get("com.freerdp.core.update"); update->bitmap_update.count = 64; update->bitmap_update.rectangles = (BITMAP_DATA*) malloc(sizeof(BITMAP_DATA) * update->bitmap_update.count); diff --git a/winpr/include/winpr/wlog.h b/winpr/include/winpr/wlog.h index 29a9e5a44..1fd8b21d4 100644 --- a/winpr/include/winpr/wlog.h +++ b/winpr/include/winpr/wlog.h @@ -84,6 +84,12 @@ struct _wLogMessage int ImageWidth; int ImageHeight; int ImageBpp; + + /* Packet Message */ + + void* PacketData; + int PacketLength; + DWORD PacketFlags; }; /** diff --git a/winpr/libwinpr/utils/wlog/ConsoleAppender.c b/winpr/libwinpr/utils/wlog/ConsoleAppender.c index ec7163cff..0b4375a3e 100644 --- a/winpr/libwinpr/utils/wlog/ConsoleAppender.c +++ b/winpr/libwinpr/utils/wlog/ConsoleAppender.c @@ -127,12 +127,13 @@ int WLog_ConsoleAppender_WritePacketMessage(wLog* log, wLogConsoleAppender* appe if (!appender->PacketMessageContext) { - FullFileName = WLog_Message_GetOutputFileName(PacketId, "pcap"); + FullFileName = WLog_Message_GetOutputFileName(-1, "pcap"); appender->PacketMessageContext = (void*) Pcap_Open(FullFileName, TRUE); free(FullFileName); } - WLog_PacketMessage_Write((wPcap*) appender->PacketMessageContext, message->Data, message->Length, 0); + WLog_PacketMessage_Write((wPcap*) appender->PacketMessageContext, + message->PacketData, message->PacketLength, message->PacketFlags); return PacketId; } diff --git a/winpr/libwinpr/utils/wlog/Message.c b/winpr/libwinpr/utils/wlog/Message.c index ac7605e7b..b5c4c111b 100644 --- a/winpr/libwinpr/utils/wlog/Message.c +++ b/winpr/libwinpr/utils/wlog/Message.c @@ -40,7 +40,11 @@ char* WLog_Message_GetOutputFileName(int id, const char* ext) FilePath = GetKnownSubPath(KNOWN_PATH_TEMP, "wlog"); FileName = (char*) malloc(256); - sprintf_s(FileName, 256, "%u-%d.%s", (unsigned int) ProcessId, id, ext); + + if (id >= 0) + sprintf_s(FileName, 256, "%u-%d.%s", (unsigned int) ProcessId, id, ext); + else + sprintf_s(FileName, 256, "%u.%s", (unsigned int) ProcessId, ext); FullFileName = GetCombinedPath(FilePath, FileName); diff --git a/winpr/libwinpr/utils/wlog/wlog.c b/winpr/libwinpr/utils/wlog/wlog.c index aa98d8800..c40ca2b23 100644 --- a/winpr/libwinpr/utils/wlog/wlog.c +++ b/winpr/libwinpr/utils/wlog/wlog.c @@ -174,6 +174,13 @@ int WLog_PrintMessageVA(wLog* log, wLogMessage* message, va_list args) status = WLog_Write(log, message); } } + else if (message->Type == WLOG_MESSAGE_DATA) + { + message->Data = va_arg(args, void*); + message->Length = va_arg(args, int); + + status = WLog_WriteData(log, message); + } else if (message->Type == WLOG_MESSAGE_IMAGE) { message->ImageData = va_arg(args, void*); @@ -183,12 +190,13 @@ int WLog_PrintMessageVA(wLog* log, wLogMessage* message, va_list args) status = WLog_WriteImage(log, message); } - else if (message->Type == WLOG_MESSAGE_DATA) + else if (message->Type == WLOG_MESSAGE_PACKET) { - message->Data = va_arg(args, void*); - message->Length = va_arg(args, int); + message->PacketData = va_arg(args, void*); + message->PacketLength = va_arg(args, int); + message->PacketFlags = va_arg(args, int); - status = WLog_WriteData(log, message); + status = WLog_WritePacket(log, message); } return status;