void rail_order_recv(rdpRailOrder* rail_order, STREAM* s) { uint16 orderType; uint16 orderLength; rail_read_pdu_header(s, &orderType, &orderLength); DEBUG_RAIL("Received %s PDU, length:%d", RAIL_ORDER_TYPE_STRINGS[((orderType & 0xF0) >> 3) + (orderType & 0x0F)], orderLength); switch (orderType) { case RDP_RAIL_ORDER_HANDSHAKE: rail_recv_handshake_order(rail_order, s); break; case RDP_RAIL_ORDER_EXEC_RESULT: rail_recv_exec_result_order(rail_order, s); break; case RDP_RAIL_ORDER_SYSPARAM: rail_recv_server_sysparam_order(rail_order, s); break; case RDP_RAIL_ORDER_MINMAXINFO: rail_recv_server_minmaxinfo_order(rail_order, s); break; case RDP_RAIL_ORDER_LOCALMOVESIZE: rail_recv_server_localmovesize_order(rail_order, s); break; case RDP_RAIL_ORDER_GET_APPID_RESP: rail_recv_server_get_appid_resp_order(rail_order, s); break; case RDP_RAIL_ORDER_LANGBARINFO: rail_recv_langbar_info_order(rail_order, s); break; default: printf("Unknown RAIL PDU order reveived."); break; } }
BOOL rail_order_recv(railPlugin* rail, wStream* s) { UINT16 orderType; UINT16 orderLength; if (!rail_read_pdu_header(s, &orderType, &orderLength)) return FALSE; WLog_Print(rail->log, WLOG_DEBUG, "Received %s PDU, length: %d", RAIL_ORDER_TYPE_STRINGS[((orderType & 0xF0) >> 3) + (orderType & 0x0F)], orderLength); switch (orderType) { case RDP_RAIL_ORDER_HANDSHAKE: { RAIL_HANDSHAKE_ORDER handshake; return rail_recv_handshake_order(rail, &handshake, s); } case RDP_RAIL_ORDER_HANDSHAKE_EX: { RAIL_HANDSHAKE_EX_ORDER handshakeEx; return rail_recv_handshake_ex_order(rail, &handshakeEx, s); } case RDP_RAIL_ORDER_EXEC_RESULT: { RAIL_EXEC_RESULT_ORDER execResult; return rail_recv_exec_result_order(rail, &execResult, s); } case RDP_RAIL_ORDER_SYSPARAM: { RAIL_SYSPARAM_ORDER sysparam; return rail_recv_server_sysparam_order(rail, &sysparam, s); } case RDP_RAIL_ORDER_MINMAXINFO: { RAIL_MINMAXINFO_ORDER minMaxInfo; return rail_recv_server_minmaxinfo_order(rail, &minMaxInfo, s); } case RDP_RAIL_ORDER_LOCALMOVESIZE: { RAIL_LOCALMOVESIZE_ORDER localMoveSize; return rail_recv_server_localmovesize_order(rail, &localMoveSize, s); } case RDP_RAIL_ORDER_GET_APPID_RESP: { RAIL_GET_APPID_RESP_ORDER getAppIdResp; return rail_recv_server_get_appid_resp_order(rail, &getAppIdResp, s); } case RDP_RAIL_ORDER_LANGBARINFO: { RAIL_LANGBAR_INFO_ORDER langBarInfo; return rail_recv_langbar_info_order(rail, &langBarInfo, s); } default: WLog_ERR(TAG, "Unknown RAIL PDU order reveived."); break; } return TRUE; }