From 15365b86af89ba02a8f74063c793236bbd882a0a Mon Sep 17 00:00:00 2001 From: Vic Lee Date: Sat, 20 Aug 2011 21:41:40 +0800 Subject: [PATCH] server: send valid client license error pdu. --- libfreerdp-core/connection.c | 3 +++ libfreerdp-core/license.c | 23 +++++++++++++++++++++++ libfreerdp-core/license.h | 2 ++ 3 files changed, 28 insertions(+) diff --git a/libfreerdp-core/connection.c b/libfreerdp-core/connection.c index d433ec582..dea5c3187 100644 --- a/libfreerdp-core/connection.c +++ b/libfreerdp-core/connection.c @@ -250,6 +250,9 @@ boolean rdp_server_accept_client_info(rdpRdp* rdp, STREAM* s) if (!rdp_read_client_info(rdp, s)) return False; + if (!license_send_valid_client_error_packet(rdp->license)) + return False; + return True; } diff --git a/libfreerdp-core/license.c b/libfreerdp-core/license.c index cec75f4e9..51fb23785 100644 --- a/libfreerdp-core/license.c +++ b/libfreerdp-core/license.c @@ -827,6 +827,29 @@ void license_send_platform_challenge_response_packet(rdpLicense* license) license_send(license, s, PLATFORM_CHALLENGE_RESPONSE); } + +/** + * Send Server License Error - Valid Client Packet.\n + * @msdn{cc241922} + * @param license license module + */ + +boolean license_send_valid_client_error_packet(rdpLicense* license) +{ + STREAM* s; + + s = license_send_stream_init(license); + + stream_write_uint32(s, STATUS_VALID_CLIENT); /* dwErrorCode */ + stream_write_uint32(s, ST_NO_TRANSITION); /* dwStateTransition */ + + license_write_binary_blob(s, license->error_info); + + license_send(license, s, ERROR_ALERT); + + return True; +} + /** * Instantiate new license module. * @param rdp RDP module diff --git a/libfreerdp-core/license.h b/libfreerdp-core/license.h index bdea85c84..a1b3993d8 100644 --- a/libfreerdp-core/license.h +++ b/libfreerdp-core/license.h @@ -193,6 +193,8 @@ void license_send_new_license_request_packet(rdpLicense* license); void license_write_platform_challenge_response_packet(rdpLicense* license, STREAM* s, uint8* mac_data); void license_send_platform_challenge_response_packet(rdpLicense* license); +boolean license_send_valid_client_error_packet(rdpLicense* license); + rdpLicense* license_new(rdpRdp* rdp); void license_free(rdpLicense* license);