mirror of
https://github.com/morgan9e/FreeRDP
synced 2026-04-15 00:44:19 +09:00
libfreerdp-core: change ReceiveCallback return values
This commit is contained in:
@@ -506,7 +506,7 @@ static BOOL fastpath_recv_input_event(rdpFastPath* fastpath, STREAM* s)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL fastpath_recv_inputs(rdpFastPath* fastpath, STREAM* s)
|
||||
int fastpath_recv_inputs(rdpFastPath* fastpath, STREAM* s)
|
||||
{
|
||||
BYTE i;
|
||||
|
||||
@@ -518,7 +518,7 @@ BOOL fastpath_recv_inputs(rdpFastPath* fastpath, STREAM* s)
|
||||
*/
|
||||
|
||||
if (stream_get_left(s) < 1)
|
||||
return FALSE;
|
||||
return -1;
|
||||
|
||||
stream_read_BYTE(s, fastpath->numberEvents); /* eventHeader (1 byte) */
|
||||
}
|
||||
@@ -526,10 +526,10 @@ BOOL fastpath_recv_inputs(rdpFastPath* fastpath, STREAM* s)
|
||||
for (i = 0; i < fastpath->numberEvents; i++)
|
||||
{
|
||||
if (!fastpath_recv_input_event(fastpath, s))
|
||||
return FALSE;
|
||||
return -1;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static UINT32 fastpath_get_sec_bytes(rdpRdp* rdp)
|
||||
|
||||
@@ -465,9 +465,9 @@ BOOL nego_recv_response(rdpNego* nego)
|
||||
STREAM* s = transport_recv_stream_init(nego->transport, 1024);
|
||||
|
||||
if (transport_read(nego->transport, s) < 0)
|
||||
return FALSE;
|
||||
return -1;
|
||||
|
||||
return nego_recv(nego->transport, s, nego);
|
||||
return ((nego_recv(nego->transport, s, nego) < 0) ? FALSE : TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -478,7 +478,7 @@ BOOL nego_recv_response(rdpNego* nego)
|
||||
* @param extra nego pointer
|
||||
*/
|
||||
|
||||
BOOL nego_recv(rdpTransport* transport, STREAM* s, void* extra)
|
||||
int nego_recv(rdpTransport* transport, STREAM* s, void* extra)
|
||||
{
|
||||
BYTE li;
|
||||
BYTE type;
|
||||
@@ -488,7 +488,7 @@ BOOL nego_recv(rdpTransport* transport, STREAM* s, void* extra)
|
||||
length = tpkt_read_header(s);
|
||||
|
||||
if (length == 0)
|
||||
return FALSE;
|
||||
return -1;
|
||||
|
||||
li = tpdu_read_connection_confirm(s);
|
||||
|
||||
@@ -546,7 +546,7 @@ BOOL nego_recv(rdpTransport* transport, STREAM* s, void* extra)
|
||||
nego->state = NEGO_STATE_FAIL;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -117,7 +117,7 @@ void nego_attempt_tls(rdpNego* nego);
|
||||
void nego_attempt_rdp(rdpNego* nego);
|
||||
|
||||
void nego_send(rdpNego* nego);
|
||||
BOOL nego_recv(rdpTransport* transport, STREAM* s, void* extra);
|
||||
int nego_recv(rdpTransport* transport, STREAM* s, void* extra);
|
||||
BOOL nego_recv_response(rdpNego* nego);
|
||||
BOOL nego_read_request(rdpNego* nego, STREAM* s);
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@ static BOOL peer_recv_data_pdu(freerdp_peer* client, STREAM* s)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL peer_recv_tpkt_pdu(freerdp_peer* client, STREAM* s)
|
||||
static int peer_recv_tpkt_pdu(freerdp_peer* client, STREAM* s)
|
||||
{
|
||||
rdpRdp* rdp;
|
||||
UINT16 length;
|
||||
@@ -171,7 +171,7 @@ static BOOL peer_recv_tpkt_pdu(freerdp_peer* client, STREAM* s)
|
||||
if (!rdp_read_header(rdp, s, &length, &channelId))
|
||||
{
|
||||
printf("Incorrect RDP header.\n");
|
||||
return FALSE;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (rdp->settings->DisableEncryption)
|
||||
@@ -183,7 +183,7 @@ static BOOL peer_recv_tpkt_pdu(freerdp_peer* client, STREAM* s)
|
||||
if (!rdp_decrypt(rdp, s, length - 4, securityFlags))
|
||||
{
|
||||
printf("rdp_decrypt failed\n");
|
||||
return FALSE;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -195,7 +195,7 @@ static BOOL peer_recv_tpkt_pdu(freerdp_peer* client, STREAM* s)
|
||||
else
|
||||
{
|
||||
if (!rdp_read_share_control_header(s, &pduLength, &pduType, &pduSource))
|
||||
return FALSE;
|
||||
return -1;
|
||||
|
||||
client->settings->PduSource = pduSource;
|
||||
|
||||
@@ -203,19 +203,19 @@ static BOOL peer_recv_tpkt_pdu(freerdp_peer* client, STREAM* s)
|
||||
{
|
||||
case PDU_TYPE_DATA:
|
||||
if (!peer_recv_data_pdu(client, s))
|
||||
return FALSE;
|
||||
return -1;
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("Client sent pduType %d\n", pduType);
|
||||
return FALSE;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static BOOL peer_recv_fastpath_pdu(freerdp_peer* client, STREAM* s)
|
||||
static int peer_recv_fastpath_pdu(freerdp_peer* client, STREAM* s)
|
||||
{
|
||||
rdpRdp* rdp;
|
||||
UINT16 length;
|
||||
@@ -225,10 +225,10 @@ static BOOL peer_recv_fastpath_pdu(freerdp_peer* client, STREAM* s)
|
||||
fastpath = rdp->fastpath;
|
||||
length = fastpath_read_header_rdp(fastpath, s);
|
||||
|
||||
if (length == 0 || length > stream_get_left(s))
|
||||
if ((length == 0) || (length > stream_get_left(s)))
|
||||
{
|
||||
printf("incorrect FastPath PDU header length %d\n", length);
|
||||
return FALSE;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (fastpath->encryptionFlags & FASTPATH_OUTPUT_ENCRYPTED)
|
||||
@@ -239,7 +239,7 @@ static BOOL peer_recv_fastpath_pdu(freerdp_peer* client, STREAM* s)
|
||||
return fastpath_recv_inputs(fastpath, s);
|
||||
}
|
||||
|
||||
static BOOL peer_recv_pdu(freerdp_peer* client, STREAM* s)
|
||||
static int peer_recv_pdu(freerdp_peer* client, STREAM* s)
|
||||
{
|
||||
if (tpkt_verify_header(s))
|
||||
return peer_recv_tpkt_pdu(client, s);
|
||||
@@ -256,7 +256,7 @@ static BOOL peer_recv_callback(rdpTransport* transport, STREAM* s, void* extra)
|
||||
{
|
||||
case CONNECTION_STATE_INITIAL:
|
||||
if (!rdp_server_accept_nego(rdp, s))
|
||||
return FALSE;
|
||||
return -1;
|
||||
|
||||
if (rdp->nego->selected_protocol & PROTOCOL_NLA)
|
||||
{
|
||||
@@ -273,29 +273,29 @@ static BOOL peer_recv_callback(rdpTransport* transport, STREAM* s, void* extra)
|
||||
|
||||
case CONNECTION_STATE_NEGO:
|
||||
if (!rdp_server_accept_mcs_connect_initial(rdp, s))
|
||||
return FALSE;
|
||||
return -1;
|
||||
break;
|
||||
|
||||
case CONNECTION_STATE_MCS_CONNECT:
|
||||
if (!rdp_server_accept_mcs_erect_domain_request(rdp, s))
|
||||
return FALSE;
|
||||
return -1;
|
||||
break;
|
||||
|
||||
case CONNECTION_STATE_MCS_ERECT_DOMAIN:
|
||||
if (!rdp_server_accept_mcs_attach_user_request(rdp, s))
|
||||
return FALSE;
|
||||
return -1;
|
||||
break;
|
||||
|
||||
case CONNECTION_STATE_MCS_ATTACH_USER:
|
||||
if (!rdp_server_accept_mcs_channel_join_request(rdp, s))
|
||||
return FALSE;
|
||||
return -1;
|
||||
break;
|
||||
|
||||
case CONNECTION_STATE_MCS_CHANNEL_JOIN:
|
||||
if (rdp->settings->DisableEncryption)
|
||||
{
|
||||
if (!rdp_server_accept_client_keys(rdp, s))
|
||||
return FALSE;
|
||||
return -1;
|
||||
break;
|
||||
}
|
||||
rdp->state = CONNECTION_STATE_ESTABLISH_KEYS;
|
||||
@@ -303,12 +303,12 @@ static BOOL peer_recv_callback(rdpTransport* transport, STREAM* s, void* extra)
|
||||
|
||||
case CONNECTION_STATE_ESTABLISH_KEYS:
|
||||
if (!rdp_server_accept_client_info(rdp, s))
|
||||
return FALSE;
|
||||
return -1;
|
||||
|
||||
IFCALL(client->Capabilities, client);
|
||||
|
||||
if (!rdp_send_demand_active(rdp))
|
||||
return FALSE;
|
||||
return -1;
|
||||
break;
|
||||
|
||||
case CONNECTION_STATE_LICENSE:
|
||||
@@ -325,15 +325,15 @@ static BOOL peer_recv_callback(rdpTransport* transport, STREAM* s, void* extra)
|
||||
|
||||
case CONNECTION_STATE_ACTIVE:
|
||||
if (!peer_recv_pdu(client, s))
|
||||
return FALSE;
|
||||
return -1;
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("Invalid state %d\n", rdp->state);
|
||||
return FALSE;
|
||||
return -1;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static BOOL freerdp_peer_close(freerdp_peer* client)
|
||||
|
||||
@@ -850,50 +850,50 @@ static BOOL rdp_recv_callback(rdpTransport* transport, STREAM* s, void* extra)
|
||||
{
|
||||
case CONNECTION_STATE_NEGO:
|
||||
if (!rdp_client_connect_mcs_connect_response(rdp, s))
|
||||
return FALSE;
|
||||
return -1;
|
||||
break;
|
||||
|
||||
case CONNECTION_STATE_MCS_ATTACH_USER:
|
||||
if (!rdp_client_connect_mcs_attach_user_confirm(rdp, s))
|
||||
return FALSE;
|
||||
return -1;
|
||||
break;
|
||||
|
||||
case CONNECTION_STATE_MCS_CHANNEL_JOIN:
|
||||
if (!rdp_client_connect_mcs_channel_join_confirm(rdp, s))
|
||||
return FALSE;
|
||||
return -1;
|
||||
break;
|
||||
|
||||
case CONNECTION_STATE_LICENSE:
|
||||
if (!rdp_client_connect_license(rdp, s))
|
||||
return FALSE;
|
||||
return -1;
|
||||
break;
|
||||
|
||||
case CONNECTION_STATE_CAPABILITY:
|
||||
if (!rdp_client_connect_demand_active(rdp, s))
|
||||
{
|
||||
printf("rdp_client_connect_demand_active failed\n");
|
||||
return FALSE;
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
|
||||
case CONNECTION_STATE_FINALIZATION:
|
||||
if (!rdp_recv_pdu(rdp, s))
|
||||
return FALSE;
|
||||
return -1;
|
||||
if (rdp->finalize_sc_pdus == FINALIZE_SC_COMPLETE)
|
||||
rdp->state = CONNECTION_STATE_ACTIVE;
|
||||
break;
|
||||
|
||||
case CONNECTION_STATE_ACTIVE:
|
||||
if (!rdp_recv_pdu(rdp, s))
|
||||
return FALSE;
|
||||
return -1;
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("Invalid state %d\n", rdp->state);
|
||||
return FALSE;
|
||||
return -1;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int rdp_send_channel_data(rdpRdp* rdp, int channel_id, BYTE* data, int size)
|
||||
|
||||
@@ -589,6 +589,7 @@ int transport_check_fds(rdpTransport** ptransport)
|
||||
int pos;
|
||||
int status;
|
||||
UINT16 length;
|
||||
int recv_status;
|
||||
STREAM* received;
|
||||
rdpTransport* transport = *ptransport;
|
||||
|
||||
@@ -684,10 +685,21 @@ int transport_check_fds(rdpTransport** ptransport)
|
||||
stream_seal(received);
|
||||
stream_set_pos(received, 0);
|
||||
|
||||
if (transport->ReceiveCallback(transport, received, transport->ReceiveExtra) == FALSE)
|
||||
/**
|
||||
* ReceiveCallback return values:
|
||||
*
|
||||
* -1: synchronous failure
|
||||
* 0: synchronous success
|
||||
* 1: asynchronous return
|
||||
*/
|
||||
|
||||
recv_status = transport->ReceiveCallback(transport, received, transport->ReceiveExtra);
|
||||
|
||||
if (recv_status < 0)
|
||||
status = -1;
|
||||
|
||||
transport_receive_pool_return(transport, received);
|
||||
if (recv_status == 0)
|
||||
transport_receive_pool_return(transport, received);
|
||||
|
||||
if (status < 0)
|
||||
return status;
|
||||
|
||||
@@ -41,7 +41,7 @@ int TestCertEnumCertificatesInStore(int argc, char* argv[])
|
||||
|
||||
index = 0;
|
||||
|
||||
while (pCertContext = CertEnumCertificatesInStore(hCertStore, pCertContext))
|
||||
while ((pCertContext = CertEnumCertificatesInStore(hCertStore, pCertContext)))
|
||||
{
|
||||
status = CertGetNameString(pCertContext, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, NULL, NULL, 0);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user