boolean rdp_client_connect_license(rdpRdp* rdp, STREAM* s) { if (!license_recv(rdp->license, s)) return false; if (rdp->license->state == LICENSE_STATE_ABORTED) { printf("license connection sequence aborted.\n"); return false; } if (rdp->license->state == LICENSE_STATE_COMPLETED) { rdp->state = CONNECTION_STATE_CAPABILITY; } return true; }
BOOL rdp_client_connect_license(rdpRdp* rdp, wStream* s) { if (!license_recv(rdp->license, s)) return FALSE; if (rdp->license->state == LICENSE_STATE_ABORTED) { fprintf(stderr, "license connection sequence aborted.\n"); return FALSE; } if (rdp->license->state == LICENSE_STATE_COMPLETED) { rdp->state = CONNECTION_STATE_CAPABILITY; } return TRUE; }
int rdp_client_connect_license(rdpRdp* rdp, wStream* s) { int status; status = license_recv(rdp->license, s); if (status < 0) return status; if (rdp->license->state == LICENSE_STATE_ABORTED) { fprintf(stderr, "license connection sequence aborted.\n"); return -1; } if (rdp->license->state == LICENSE_STATE_COMPLETED) { rdp_client_transition_to_state(rdp, CONNECTION_STATE_CAPABILITIES_EXCHANGE); } return 0; }
void rdp_recv(rdpRdp* rdp) { STREAM* s; int length; uint16 pduType; uint16 pduLength; uint16 initiator; uint16 channelId; uint16 sec_flags; enum DomainMCSPDU MCSPDU; s = transport_recv_stream_init(rdp->transport, 4096); transport_read(rdp->transport, s); MCSPDU = DomainMCSPDU_SendDataIndication; mcs_read_domain_mcspdu_header(s, &MCSPDU, &length); per_read_integer16(s, &initiator, MCS_BASE_CHANNEL_ID); /* initiator (UserId) */ per_read_integer16(s, &channelId, 0); /* channelId */ stream_seek(s, 1); /* dataPriority + Segmentation (0x70) */ per_read_length(s, &pduLength); /* userData (OCTET_STRING) */ if (rdp->connected != True) { rdp_read_security_header(s, &sec_flags); if (sec_flags & SEC_PKT_MASK) { switch (sec_flags & SEC_PKT_MASK) { case SEC_LICENSE_PKT: license_recv(rdp->license, s); break; case SEC_REDIRECTION_PKT: rdp_read_redirection_packet(rdp, s); break; default: printf("incorrect security flags: 0x%04X\n", sec_flags); break; } } } else { rdp_read_share_control_header(s, &pduLength, &pduType, &rdp->settings->pdu_source); switch (pduType) { case PDU_TYPE_DATA: rdp_read_data_pdu(rdp, s); break; case PDU_TYPE_DEMAND_ACTIVE: rdp_recv_demand_active(rdp, s, rdp->settings); break; case PDU_TYPE_DEACTIVATE_ALL: rdp_read_deactivate_all(s, rdp->settings); break; case PDU_TYPE_SERVER_REDIRECTION: rdp_read_enhanced_security_redirection_packet(rdp, s); break; default: printf("incorrect PDU type: 0x%04X\n", pduType); break; } } }