mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +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