static BOOL rdg_tunnel_connect(rdpRdg* rdg) { BOOL status; wStream* s; rdg_send_handshake(rdg); while (rdg->state < RDG_CLIENT_STATE_OPENED) { status = FALSE; s = rdg_receive_packet(rdg); if (s) { status = rdg_process_packet(rdg, s); Stream_Free(s, TRUE); } if (!status) { rdg->context->rdp->transport->layer = TRANSPORT_LAYER_CLOSED; return FALSE; } } return TRUE; }
BOOL rdg_tunnel_connect(rdpRdg* rdg) { BOOL status; DWORD nCount; HANDLE events[8]; rdg_send_handshake(rdg); nCount = rdg_get_event_handles(rdg, events, 8); if (nCount == 0) return FALSE; while (rdg->state < RDG_CLIENT_STATE_OPENED) { WaitForMultipleObjects(nCount, events, FALSE, 100); status = rdg_check_event_handles(rdg); if (!status) { rdg->context->rdp->transport->layer = TRANSPORT_LAYER_CLOSED; return FALSE; } } return TRUE; }