BYTE TsProxyCreateTunnelUnknownTrailerBytes[60] =
{
- 0x8A, 0xE3, 0x13, 0x71, 0x02, 0xF4, 0x36, 0x71, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00,
- 0x02, 0x40, 0x28, 0x00, 0xDD, 0x65, 0xE2, 0x44, 0xAF, 0x7D, 0xCD, 0x42, 0x85, 0x60, 0x3C, 0xDB,
- 0x6E, 0x7A, 0x27, 0x29, 0x01, 0x00, 0x03, 0x00, 0x04, 0x5D, 0x88, 0x8A, 0xEB, 0x1C, 0xC9, 0x11,
- 0x9F, 0xE8, 0x08, 0x00, 0x2B, 0x10, 0x48, 0x60, 0x02, 0x00, 0x00, 0x00
+ 0x8A, 0xE3, 0x13, 0x71, 0x02, 0xF4, 0x36, 0x71, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x02, 0x40, 0x28, 0x00, 0xDD, 0x65, 0xE2, 0x44, 0xAF, 0x7D, 0xCD, 0x42, 0x85, 0x60, 0x3C, 0xDB,
+ 0x6E, 0x7A, 0x27, 0x29, 0x01, 0x00, 0x03, 0x00, 0x04, 0x5D, 0x88, 0x8A, 0xEB, 0x1C, 0xC9, 0x11,
+ 0x9F, 0xE8, 0x08, 0x00, 0x2B, 0x10, 0x48, 0x60, 0x02, 0x00, 0x00, 0x00
};
DWORD TsProxySendToServer(handle_t IDL_handle, byte pRpcMessage[], UINT32 count, UINT32* lengths)
Pointer = *((UINT32*) &buffer[offset]); /* Ptr (4 bytes): 0x00020008 */
offset += 4;
}
-
+
versionCaps = (PTSG_PACKET_VERSIONCAPS) malloc(sizeof(TSG_PACKET_VERSIONCAPS));
ZeroMemory(versionCaps, sizeof(TSG_PACKET_VERSIONCAPS));
packetQuarEncResponse->versionCaps = versionCaps;
if (versionCaps->tsgHeader.ComponentId != TS_GATEWAY_TRANSPORT)
{
fprintf(stderr, "Unexpected ComponentId: 0x%04X, Expected TS_GATEWAY_TRANSPORT\n",
- versionCaps->tsgHeader.ComponentId);
+ versionCaps->tsgHeader.ComponentId);
free(versionCaps);
free(packetQuarEncResponse);
free(packet);
switch (SwitchValue)
{
- case TSG_ASYNC_MESSAGE_CONSENT_MESSAGE:
- packetStringMessage = (PTSG_PACKET_STRING_MESSAGE) malloc(sizeof(TSG_PACKET_STRING_MESSAGE));
- ZeroMemory(packetStringMessage, sizeof(TSG_PACKET_STRING_MESSAGE));
- packetMsgResponse->messagePacket.consentMessage = packetStringMessage;
-
- Pointer = *((UINT32*) &buffer[offset + 28]); /* ConsentMessagePtr */
- packetStringMessage->isDisplayMandatory = *((INT32*) &buffer[offset + 32]); /* IsDisplayMandatory */
- packetStringMessage->isConsentMandatory = *((INT32*) &buffer[offset + 36]); /* IsConsentMandatory */
- packetStringMessage->msgBytes = *((UINT32*) &buffer[offset + 40]); /* MsgBytes */
-
- Pointer = *((UINT32*) &buffer[offset + 44]); /* MsgPtr */
- MaxCount = *((UINT32*) &buffer[offset + 48]); /* MaxCount */
- /* Offset */
- ActualCount = *((UINT32*) &buffer[offset + 56]); /* ActualCount */
-
- ConvertFromUnicode(CP_UTF8, 0, (WCHAR*) &buffer[offset + 60], ActualCount, &messageText, 0, NULL, NULL);
- fprintf(stderr, "Consent Message: %s\n", messageText);
- free(messageText);
-
- break;
-
- case TSG_ASYNC_MESSAGE_SERVICE_MESSAGE:
- packetStringMessage = (PTSG_PACKET_STRING_MESSAGE) malloc(sizeof(TSG_PACKET_STRING_MESSAGE));
- ZeroMemory(packetStringMessage, sizeof(TSG_PACKET_STRING_MESSAGE));
- packetMsgResponse->messagePacket.serviceMessage = packetStringMessage;
-
- Pointer = *((UINT32*) &buffer[offset + 28]); /* ServiceMessagePtr */
- packetStringMessage->isDisplayMandatory = *((INT32*) &buffer[offset + 32]); /* IsDisplayMandatory */
- packetStringMessage->isConsentMandatory = *((INT32*) &buffer[offset + 36]); /* IsConsentMandatory */
- packetStringMessage->msgBytes = *((UINT32*) &buffer[offset + 40]); /* MsgBytes */
-
- Pointer = *((UINT32*) &buffer[offset + 44]); /* MsgPtr */
- MaxCount = *((UINT32*) &buffer[offset + 48]); /* MaxCount */
- /* Offset */
- ActualCount = *((UINT32*) &buffer[offset + 56]); /* ActualCount */
-
- ConvertFromUnicode(CP_UTF8, 0, (WCHAR*) &buffer[offset + 60], ActualCount, &messageText, 0, NULL, NULL);
- fprintf(stderr, "Service Message: %s\n", messageText);
- free(messageText);
-
- break;
-
- case TSG_ASYNC_MESSAGE_REAUTH:
- packetReauthMessage = (PTSG_PACKET_REAUTH_MESSAGE) malloc(sizeof(TSG_PACKET_REAUTH_MESSAGE));
- ZeroMemory(packetReauthMessage, sizeof(TSG_PACKET_REAUTH_MESSAGE));
- packetMsgResponse->messagePacket.reauthMessage = packetReauthMessage;
-
- Pointer = *((UINT32*) &buffer[offset + 28]); /* ReauthMessagePtr */
- break;
-
- default:
- fprintf(stderr, "TsProxyMakeTunnelCallReadResponse: unexpected message type: %d\n",
- SwitchValue);
- rc = FALSE;
- break;
+ case TSG_ASYNC_MESSAGE_CONSENT_MESSAGE:
+ packetStringMessage = (PTSG_PACKET_STRING_MESSAGE) malloc(sizeof(TSG_PACKET_STRING_MESSAGE));
+ ZeroMemory(packetStringMessage, sizeof(TSG_PACKET_STRING_MESSAGE));
+ packetMsgResponse->messagePacket.consentMessage = packetStringMessage;
+
+ Pointer = *((UINT32*) &buffer[offset + 28]); /* ConsentMessagePtr */
+ packetStringMessage->isDisplayMandatory = *((INT32*) &buffer[offset + 32]); /* IsDisplayMandatory */
+ packetStringMessage->isConsentMandatory = *((INT32*) &buffer[offset + 36]); /* IsConsentMandatory */
+ packetStringMessage->msgBytes = *((UINT32*) &buffer[offset + 40]); /* MsgBytes */
+
+ Pointer = *((UINT32*) &buffer[offset + 44]); /* MsgPtr */
+ MaxCount = *((UINT32*) &buffer[offset + 48]); /* MaxCount */
+ /* Offset */
+ ActualCount = *((UINT32*) &buffer[offset + 56]); /* ActualCount */
+
+ ConvertFromUnicode(CP_UTF8, 0, (WCHAR*) &buffer[offset + 60], ActualCount, &messageText, 0, NULL, NULL);
+ fprintf(stderr, "Consent Message: %s\n", messageText);
+ free(messageText);
+
+ break;
+
+ case TSG_ASYNC_MESSAGE_SERVICE_MESSAGE:
+ packetStringMessage = (PTSG_PACKET_STRING_MESSAGE) malloc(sizeof(TSG_PACKET_STRING_MESSAGE));
+ ZeroMemory(packetStringMessage, sizeof(TSG_PACKET_STRING_MESSAGE));
+ packetMsgResponse->messagePacket.serviceMessage = packetStringMessage;
+
+ Pointer = *((UINT32*) &buffer[offset + 28]); /* ServiceMessagePtr */
+ packetStringMessage->isDisplayMandatory = *((INT32*) &buffer[offset + 32]); /* IsDisplayMandatory */
+ packetStringMessage->isConsentMandatory = *((INT32*) &buffer[offset + 36]); /* IsConsentMandatory */
+ packetStringMessage->msgBytes = *((UINT32*) &buffer[offset + 40]); /* MsgBytes */
+
+ Pointer = *((UINT32*) &buffer[offset + 44]); /* MsgPtr */
+ MaxCount = *((UINT32*) &buffer[offset + 48]); /* MaxCount */
+ /* Offset */
+ ActualCount = *((UINT32*) &buffer[offset + 56]); /* ActualCount */
+
+ ConvertFromUnicode(CP_UTF8, 0, (WCHAR*) &buffer[offset + 60], ActualCount, &messageText, 0, NULL, NULL);
+ fprintf(stderr, "Service Message: %s\n", messageText);
+ free(messageText);
+
+ break;
+
+ case TSG_ASYNC_MESSAGE_REAUTH:
+ packetReauthMessage = (PTSG_PACKET_REAUTH_MESSAGE) malloc(sizeof(TSG_PACKET_REAUTH_MESSAGE));
+ ZeroMemory(packetReauthMessage, sizeof(TSG_PACKET_REAUTH_MESSAGE));
+ packetMsgResponse->messagePacket.reauthMessage = packetReauthMessage;
+
+ Pointer = *((UINT32*) &buffer[offset + 28]); /* ReauthMessagePtr */
+ break;
+
+ default:
+ fprintf(stderr, "TsProxyMakeTunnelCallReadResponse: unexpected message type: %d\n",
+ SwitchValue);
+ rc = FALSE;
+ break;
}
if (packet)
*/
- if (tsg == NULL)
- return FALSE;
+ if (tsg == NULL)
+ return FALSE;
tsg->rpc->client->SynchronousReceive = TRUE;
- /* if we are already in state pending (i.e. if a server initiated disconnect was issued)
+ /* if we are already in state pending (i.e. if a server initiated disconnect was issued)
we have to skip TsProxyCloseChannel - see Figure 13 in section 3.2.3
- */
- if (tsg->state != TSG_STATE_TUNNEL_CLOSE_PENDING)
- {
- if (!TsProxyCloseChannel(tsg, NULL))
- return FALSE;
- }
+ */
+ if (tsg->state != TSG_STATE_TUNNEL_CLOSE_PENDING)
+ {
+ if (!TsProxyCloseChannel(tsg, NULL))
+ return FALSE;
+ }
if (!TsProxyMakeTunnelCall(tsg, &tsg->TunnelContext, TSG_TUNNEL_CANCEL_ASYNC_MSG_REQUEST, NULL, NULL))
return FALSE;
int tsg_read(rdpTsg* tsg, BYTE* data, UINT32 length)
{
int CopyLength;
- rdpRpc* rpc;
+ rdpRpc* rpc;
- if (tsg == NULL)
- return -1;
+ if (tsg == NULL)
+ return -1;
- rpc = tsg->rpc;
+ rpc = tsg->rpc;
if (tsg->PendingPdu)
{