libfreerdp-core: improve RPC debug output
This commit is contained in:
parent
363460c8d1
commit
63aa45731b
@ -800,6 +800,18 @@ int rpc_out_read(rdpRpc* rpc, BYTE* data, int length)
|
||||
return header->frag_length;
|
||||
}
|
||||
|
||||
int rpc_recv_fault_pdu(RPC_PDU_HEADER* header)
|
||||
{
|
||||
rpcconn_fault_hdr_t* fault_pdu;
|
||||
|
||||
fault_pdu = (rpcconn_fault_hdr_t*) header;
|
||||
|
||||
printf("RPC Fault PDU:\n");
|
||||
printf("status: 0x%08X\n", fault_pdu->status);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int rpc_recv_pdu(rdpRpc* rpc)
|
||||
{
|
||||
int status;
|
||||
@ -851,6 +863,11 @@ int rpc_recv_pdu(rdpRpc* rpc)
|
||||
printf("rpc_recv_pdu error: Unexpected RTS PDU\n");
|
||||
return -1;
|
||||
}
|
||||
else if (header->ptype == PTYPE_FAULT)
|
||||
{
|
||||
rpc_recv_fault_pdu(header);
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* RTS PDUs are not subject to flow control */
|
||||
|
@ -312,6 +312,33 @@ typedef struct
|
||||
|
||||
} rpcconn_cancel_hdr_t;
|
||||
|
||||
/* fault codes */
|
||||
|
||||
#define nca_s_fault_object_not_found 0x1C000024
|
||||
#define nca_s_fault_cancel 0x1C00000D
|
||||
#define nca_s_fault_addr_error 0x1C000002
|
||||
#define nca_s_fault_context_mismatch 0x1C00001A
|
||||
#define nca_s_fault_fp_div_zero 0x1C000003
|
||||
#define nca_s_fault_fp_error 0x1C00000F
|
||||
#define nca_s_fault_fp_overflow 0x1C000005
|
||||
#define nca_s_fault_fp_underflow 0x1C000004
|
||||
#define nca_s_fault_ill_inst 0x1C00000E
|
||||
#define nca_s_fault_int_div_by_zero 0x1C000001
|
||||
#define nca_s_fault_int_overflow 0x1C000010
|
||||
#define nca_s_fault_invalid_bound 0x1C000007
|
||||
#define nca_s_fault_invalid_tag 0x1C000006
|
||||
#define nca_s_fault_pipe_closed 0x1C000015
|
||||
#define nca_s_fault_pipe_comm_error 0x1C000018
|
||||
#define nca_s_fault_pipe_discipline 0x1C000017
|
||||
#define nca_s_fault_pipe_empty 0x1C000014
|
||||
#define nca_s_fault_pipe_memory 0x1C000019
|
||||
#define nca_s_fault_pipe_order 0x1C000016
|
||||
#define nca_s_fault_remote_no_memory 0x1C00001B
|
||||
#define ncs_s_fault_user_defined 0x1C000021
|
||||
#define nca_s_fault_tx_open_failed 0x1C000022
|
||||
#define nca_s_fault_codeset_conv_error 0x1C000023
|
||||
#define nca_s_fault_no_client_stub 0x1C000025
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DEFINE_RPC_COMMON_FIELDS();
|
||||
|
@ -420,7 +420,7 @@ DWORD TsProxySendToServer(handle_t IDL_handle, byte pRpcMessage[], UINT32 count,
|
||||
|
||||
/* PCHANNEL_CONTEXT_HANDLE_NOSERIALIZE_NR (20 bytes) */
|
||||
stream_write_UINT32(s, 0); /* ContextType (4 bytes) */
|
||||
stream_write(s, tsg->ChannelContext, 16); /* ContextUuid (4 bytes) */
|
||||
stream_write(s, tsg->ChannelContext, 16); /* ContextUuid (16 bytes) */
|
||||
|
||||
stream_write_UINT32_be(s, totalDataBytes); /* totalDataBytes (4 bytes) */
|
||||
stream_write_UINT32_be(s, numBuffers); /* numBuffers (4 bytes) */
|
||||
@ -497,7 +497,7 @@ BOOL tsg_proxy_create_tunnel(rdpTsg* tsg)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CopyMemory(tsg->TunnelContext, rpc->buffer + (status - 24), 16);
|
||||
CopyMemory(tsg->TunnelContext, rpc->buffer + (status - 48), 16);
|
||||
|
||||
#ifdef WITH_DEBUG_TSG
|
||||
printf("TSG TunnelContext:\n");
|
||||
@ -531,7 +531,7 @@ BOOL tsg_proxy_authorize_tunnel(rdpTsg* tsg)
|
||||
length = sizeof(tsg_packet2);
|
||||
buffer = (BYTE*) malloc(length);
|
||||
CopyMemory(buffer, tsg_packet2, length);
|
||||
CopyMemory(buffer + 4, tsg->TunnelContext, 16);
|
||||
CopyMemory(&buffer[4], tsg->TunnelContext, 16);
|
||||
|
||||
status = rpc_tsg_write(rpc, buffer, length, TsProxyAuthorizeTunnelOpnum);
|
||||
|
||||
@ -577,7 +577,7 @@ BOOL tsg_proxy_make_tunnel_call(rdpTsg* tsg)
|
||||
length = sizeof(tsg_packet3);
|
||||
buffer = (BYTE*) malloc(length);
|
||||
CopyMemory(buffer, tsg_packet3, length);
|
||||
CopyMemory(buffer + 4, tsg->TunnelContext, 16);
|
||||
CopyMemory(&buffer[4], tsg->TunnelContext, 16);
|
||||
|
||||
status = rpc_tsg_write(rpc, buffer, length, TsProxyMakeTunnelCallOpnum);
|
||||
|
||||
@ -622,8 +622,8 @@ BOOL tsg_proxy_create_channel(rdpTsg* tsg)
|
||||
length = 48 + 12 + (count * 2);
|
||||
buffer = (BYTE*) malloc(length);
|
||||
CopyMemory(buffer, tsg_packet4, 48);
|
||||
CopyMemory(buffer + 4, tsg->TunnelContext, 16);
|
||||
CopyMemory(buffer + 38, &tsg->port, 2);
|
||||
CopyMemory(&buffer[4], tsg->TunnelContext, 16);
|
||||
CopyMemory(&buffer[38], &tsg->port, 2);
|
||||
|
||||
CopyMemory(&buffer[48], &count, 4); /* MaximumCount */
|
||||
CopyMemory(&buffer[52], &offset, 4); /* Offset */
|
||||
@ -648,7 +648,7 @@ BOOL tsg_proxy_create_channel(rdpTsg* tsg)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CopyMemory(tsg->ChannelContext, rpc->buffer + 4, 16);
|
||||
CopyMemory(tsg->ChannelContext, &rpc->buffer[4], 16);
|
||||
|
||||
#ifdef WITH_DEBUG_TSG
|
||||
printf("TSG ChannelContext:\n");
|
||||
@ -676,11 +676,10 @@ BOOL tsg_proxy_setup_receive_pipe(rdpTsg* tsg)
|
||||
|
||||
DEBUG_TSG("TsProxySetupReceivePipe");
|
||||
|
||||
memcpy(tsg_packet5 + 4, tsg->ChannelContext, 16);
|
||||
|
||||
length = sizeof(tsg_packet5);
|
||||
buffer = (BYTE*) malloc(length);
|
||||
CopyMemory(buffer, tsg_packet5, length);
|
||||
CopyMemory(&buffer[4], tsg->ChannelContext, 16);
|
||||
|
||||
status = rpc_tsg_write(rpc, buffer, length, TsProxySetupReceivePipeOpnum);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user