mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	Merge pull request #207 from mailwl/duplicatesession
IPC: add domain header to response if only it exists in request
This commit is contained in:
		
						commit
						926604fc14
					
				| @ -118,7 +118,8 @@ public: | |||||||
| 
 | 
 | ||||||
|         AlignWithPadding(); |         AlignWithPadding(); | ||||||
| 
 | 
 | ||||||
|         if (context.Session()->IsDomain()) { |         const bool request_has_domain_header{context.GetDomainMessageHeader() != nullptr}; | ||||||
|  |         if (context.Session()->IsDomain() && request_has_domain_header) { | ||||||
|             IPC::DomainMessageHeader domain_header{}; |             IPC::DomainMessageHeader domain_header{}; | ||||||
|             domain_header.num_objects = num_domain_objects; |             domain_header.num_objects = num_domain_objects; | ||||||
|             PushRaw(domain_header); |             PushRaw(domain_header); | ||||||
|  | |||||||
| @ -85,9 +85,14 @@ void HLERequestContext::ParseCommandBuffer(u32_le* src_cmdbuf, bool incoming) { | |||||||
| 
 | 
 | ||||||
|     if (Session()->IsDomain() && (command_header->type == IPC::CommandType::Request || !incoming)) { |     if (Session()->IsDomain() && (command_header->type == IPC::CommandType::Request || !incoming)) { | ||||||
|         // If this is an incoming message, only CommandType "Request" has a domain header
 |         // If this is an incoming message, only CommandType "Request" has a domain header
 | ||||||
|         // All outgoing domain messages have the domain header
 |         // All outgoing domain messages have the domain header, if only incoming has it
 | ||||||
|         domain_message_header = |         if (incoming || domain_message_header) { | ||||||
|             std::make_unique<IPC::DomainMessageHeader>(rp.PopRaw<IPC::DomainMessageHeader>()); |             domain_message_header = | ||||||
|  |                 std::make_unique<IPC::DomainMessageHeader>(rp.PopRaw<IPC::DomainMessageHeader>()); | ||||||
|  |         } else { | ||||||
|  |             if (Session()->IsDomain()) | ||||||
|  |                 LOG_WARNING(IPC, "Domain request has no DomainMessageHeader!"); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     data_payload_header = |     data_payload_header = | ||||||
| @ -196,7 +201,7 @@ ResultCode HLERequestContext::WriteToOutgoingCommandBuffer(u32_le* dst_cmdbuf, P | |||||||
| 
 | 
 | ||||||
|     // TODO(Subv): Translate the X/A/B/W buffers.
 |     // TODO(Subv): Translate the X/A/B/W buffers.
 | ||||||
| 
 | 
 | ||||||
|     if (Session()->IsDomain()) { |     if (Session()->IsDomain() && domain_message_header) { | ||||||
|         ASSERT(domain_message_header->num_objects == domain_objects.size()); |         ASSERT(domain_message_header->num_objects == domain_objects.size()); | ||||||
|         // Write the domain objects to the command buffer, these go after the raw untranslated data.
 |         // Write the domain objects to the command buffer, these go after the raw untranslated data.
 | ||||||
|         // TODO(Subv): This completely ignores C buffers.
 |         // TODO(Subv): This completely ignores C buffers.
 | ||||||
|  | |||||||
| @ -96,7 +96,7 @@ ResultCode ServerSession::HandleSyncRequest(SharedPtr<Thread> thread) { | |||||||
| 
 | 
 | ||||||
|     ResultCode result = RESULT_SUCCESS; |     ResultCode result = RESULT_SUCCESS; | ||||||
|     // If the session has been converted to a domain, handle the domain request
 |     // If the session has been converted to a domain, handle the domain request
 | ||||||
|     if (IsDomain()) { |     if (IsDomain() && context.GetDomainMessageHeader()) { | ||||||
|         result = HandleDomainSyncRequest(context); |         result = HandleDomainSyncRequest(context); | ||||||
|         // If there is no domain header, the regular session handler is used
 |         // If there is no domain header, the regular session handler is used
 | ||||||
|     } else if (hle_handler != nullptr) { |     } else if (hle_handler != nullptr) { | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 bunnei
						bunnei