channels: cliprdr: add lastRequestedFormatId
authorkubistika <kmizrachi18@gmail.com>
Sun, 4 Aug 2019 14:32:12 +0000 (17:32 +0300)
committerakallabeth <akallabeth@users.noreply.github.com>
Mon, 19 Aug 2019 07:30:40 +0000 (09:30 +0200)
This one is for proxy use. The proxy must know what format is requested by the other side
of the connection, for determining if the message should be passed
or ignore (for example, if we want to allow only text, the proxy must
verify that the requested format received in Format Data Request PDU is
a text format.

channels/cliprdr/client/cliprdr_format.c
channels/cliprdr/server/cliprdr_main.c
include/freerdp/client/cliprdr.h
include/freerdp/server/cliprdr.h

index a97a584..8a4282d 100644 (file)
@@ -295,7 +295,7 @@ UINT cliprdr_process_format_data_request(cliprdrPlugin* cliprdr, wStream* s, UIN
 
        Stream_Read_UINT32(s, formatDataRequest.requestedFormatId); /* requestedFormatId (4 bytes) */
 
-
+       context->lastRequestedFormatId = formatDataRequest.requestedFormatId;
        IFCALLRET(context->ServerFormatDataRequest, error, context, &formatDataRequest);
        if (error)
                WLog_ERR(TAG, "ServerFormatDataRequest failed with error %"PRIu32"!", error);
index fa22065..39f5a77 100644 (file)
@@ -911,6 +911,7 @@ static UINT cliprdr_server_receive_format_data_request(CliprdrServerContext*
 
        Stream_Read_UINT32(s,
                           formatDataRequest.requestedFormatId); /* requestedFormatId (4 bytes) */
+       context->lastRequestedFormatId = formatDataRequest.requestedFormatId;
        IFCALLRET(context->ClientFormatDataRequest, error, context, &formatDataRequest);
 
        if (error)
index a326969..9f435e0 100644 (file)
@@ -81,6 +81,7 @@ struct _cliprdr_client_context
        pcCliprdrClientFileContentsResponse ClientFileContentsResponse;
        pcCliprdrServerFileContentsResponse ServerFileContentsResponse;
 
+       UINT32 lastRequestedFormatId;
        rdpContext* rdpcontext;
 };
 
index fe4bc27..440b8af 100644 (file)
@@ -103,6 +103,7 @@ struct _cliprdr_server_context
        psCliprdrServerFileContentsResponse ServerFileContentsResponse;
 
        rdpContext* rdpcontext;
+       UINT32 lastRequestedFormatId;
 };
 
 #ifdef __cplusplus