static int remdesk_recv_ctl_pdu(RemdeskServerContext* context, wStream* s, REMDESK_CHANNEL_HEADER* header) { int status = 1; UINT32 msgType = 0; if (Stream_GetRemainingLength(s) < 4) return -1; Stream_Read_UINT32(s, msgType); /* msgType (4 bytes) */ printf("msgType: %d\n", msgType); switch (msgType) { case REMDESK_CTL_REMOTE_CONTROL_DESKTOP: status = remdesk_recv_ctl_remote_control_desktop_pdu(context, s, header); break; case REMDESK_CTL_AUTHENTICATE: status = remdesk_recv_ctl_authenticate_pdu(context, s, header); break; case REMDESK_CTL_DISCONNECT: break; case REMDESK_CTL_VERSIONINFO: status = remdesk_recv_ctl_version_info_pdu(context, s, header); break; case REMDESK_CTL_ISCONNECTED: break; case REMDESK_CTL_VERIFY_PASSWORD: status = remdesk_recv_ctl_verify_password_pdu(context, s, header); break; case REMDESK_CTL_EXPERT_ON_VISTA: break; case REMDESK_CTL_RANOVICE_NAME: break; case REMDESK_CTL_RAEXPERT_NAME: break; case REMDESK_CTL_TOKEN: break; default: fprintf(stderr, "remdesk_recv_control_pdu: unknown msgType: %d\n", msgType); status = -1; break; } return status; }
/** * Function description * * @return 0 on success, otherwise a Win32 error code */ static UINT remdesk_recv_ctl_pdu(RemdeskServerContext* context, wStream* s, REMDESK_CHANNEL_HEADER* header) { UINT error = CHANNEL_RC_OK; UINT32 msgType = 0; if (Stream_GetRemainingLength(s) < 4) { WLog_ERR(TAG, "Stream_GetRemainingLength failed!"); return ERROR_INVALID_DATA; } Stream_Read_UINT32(s, msgType); /* msgType (4 bytes) */ WLog_INFO(TAG, "msgType: %"PRIu32"", msgType); switch (msgType) { case REMDESK_CTL_REMOTE_CONTROL_DESKTOP: if ((error = remdesk_recv_ctl_remote_control_desktop_pdu(context, s, header))) { WLog_ERR(TAG, "remdesk_recv_ctl_remote_control_desktop_pdu failed with error %"PRIu32"!", error); return error; } break; case REMDESK_CTL_AUTHENTICATE: if ((error = remdesk_recv_ctl_authenticate_pdu(context, s, header))) { WLog_ERR(TAG, "remdesk_recv_ctl_authenticate_pdu failed with error %"PRIu32"!", error); return error; } break; case REMDESK_CTL_DISCONNECT: break; case REMDESK_CTL_VERSIONINFO: if ((error = remdesk_recv_ctl_version_info_pdu(context, s, header))) { WLog_ERR(TAG, "remdesk_recv_ctl_version_info_pdu failed with error %"PRIu32"!", error); return error; } break; case REMDESK_CTL_ISCONNECTED: break; case REMDESK_CTL_VERIFY_PASSWORD: if ((error = remdesk_recv_ctl_verify_password_pdu(context, s, header))) { WLog_ERR(TAG, "remdesk_recv_ctl_verify_password_pdu failed with error %"PRIu32"!", error); return error; } break; case REMDESK_CTL_EXPERT_ON_VISTA: break; case REMDESK_CTL_RANOVICE_NAME: break; case REMDESK_CTL_RAEXPERT_NAME: break; case REMDESK_CTL_TOKEN: break; default: WLog_ERR(TAG, "remdesk_recv_control_pdu: unknown msgType: %"PRIu32"", msgType); error = ERROR_INVALID_DATA; break; } return error; }