boolean rdp_client_connect(rdpRdp* rdp) { rdp->settings->autologon = 1; nego_init(rdp->nego); nego_set_target(rdp->nego, rdp->settings->hostname, 3389); nego_set_cookie(rdp->nego, rdp->settings->username); nego_enable_rdp(rdp->nego, rdp->settings->rdp_security); nego_enable_nla(rdp->nego, rdp->settings->nla_security); nego_enable_tls(rdp->nego, rdp->settings->tls_security); if (nego_connect(rdp->nego) != True) { printf("Error: protocol security negotiation failure\n"); return False; } if (rdp->nego->selected_protocol & PROTOCOL_NLA) transport_connect_nla(rdp->transport); else if (rdp->nego->selected_protocol & PROTOCOL_TLS) transport_connect_tls(rdp->transport); else if (rdp->nego->selected_protocol & PROTOCOL_RDP) transport_connect_rdp(rdp->transport); if (mcs_connect(rdp->mcs) != True) { printf("Error: Multipoint Connection Service (MCS) connection failure\n"); return False; } rdp_send_client_info(rdp); if (license_connect(rdp->license) != True) { printf("Error: license connection sequence failure\n"); return False; } rdp->licensed = True; rdp_client_activate(rdp); rdp_set_blocking_mode(rdp, False); return True; }
mcs_return mcs_server_st_connect(mcs_server_st *ptr, int *errno_out, bool blocking) { if (ptr->fd != -1) { if (errno_out != NULL) { *errno_out = 0; } return MCS_SUCCESS; } if (errno_out != NULL) { *errno_out = -1; } ptr->fd = mcs_connect(ptr->hostname, ptr->port, errno_out, blocking); if (ptr->fd != -1) { return MCS_SUCCESS; } return MCS_FAILURE; }