mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-11-03 23:28:48 +00:00 
			
		
		
		
	service/nwm_uds: log instead of assert to prevent crashes during multiplayer in Monster Hunter games (#6161)
This commit is contained in:
		
							parent
							
								
									9626bdf385
								
							
						
					
					
						commit
						a2daef2985
					
				
					 1 changed files with 12 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -491,7 +491,10 @@ void NWM_UDS::HandleDeauthenticationFrame(const Network::WifiPacket& packet) {
 | 
			
		|||
    auto node_it = std::find_if(node_info.begin(), node_info.end(), [&node](const NodeInfo& info) {
 | 
			
		||||
        return info.network_node_id == node.node_id;
 | 
			
		||||
    });
 | 
			
		||||
    ASSERT(node_it != node_info.end());
 | 
			
		||||
    if (node_it == node_info.end()) {
 | 
			
		||||
        LOG_ERROR(Service_NWM, "node_it is last node of node_info");
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    connection_status.node_bitmask &= ~(1 << (node.node_id - 1));
 | 
			
		||||
    connection_status.changed_nodes |= 1 << (node.node_id - 1);
 | 
			
		||||
| 
						 | 
				
			
			@ -1096,9 +1099,6 @@ void NWM_UDS::SendTo(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
    u32 data_size = rp.Pop<u32>();
 | 
			
		||||
    u8 flags = rp.Pop<u8>();
 | 
			
		||||
 | 
			
		||||
    // There should never be a dest_node_id of 0
 | 
			
		||||
    ASSERT(dest_node_id != 0);
 | 
			
		||||
 | 
			
		||||
    std::vector<u8> input_buffer = rp.PopStaticBuffer();
 | 
			
		||||
    ASSERT(input_buffer.size() >= data_size);
 | 
			
		||||
    input_buffer.resize(data_size);
 | 
			
		||||
| 
						 | 
				
			
			@ -1113,6 +1113,14 @@ void NWM_UDS::SendTo(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // There should never be a dest_node_id of 0
 | 
			
		||||
    if (dest_node_id == 0) {
 | 
			
		||||
        rb.Push(ResultCode(ErrorDescription::NotFound, ErrorModule::UDS,
 | 
			
		||||
                           ErrorSummary::WrongArgument, ErrorLevel::Status));
 | 
			
		||||
        LOG_ERROR(Service_NWM, "dest_node_id is 0");
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (dest_node_id == connection_status.network_node_id) {
 | 
			
		||||
        LOG_ERROR(Service_NWM, "tried to send packet to itself");
 | 
			
		||||
        rb.Push(ResultCode(ErrorDescription::NotFound, ErrorModule::UDS,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue