Fix detach inventory serialisation (#8331)
This commit is contained in:
		
							parent
							
								
									82c6363559
								
							
						
					
					
						commit
						ac86d04784
					
				@ -895,8 +895,10 @@ void Client::handleCommand_DetachedInventory(NetworkPacket* pkt)
 | 
			
		||||
		inv = inv_it->second;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	std::string contents;
 | 
			
		||||
	*pkt >> contents;
 | 
			
		||||
	u16 ignore;
 | 
			
		||||
	*pkt >> ignore; // this used to be the length of the following string, ignore it
 | 
			
		||||
 | 
			
		||||
	std::string contents = pkt->getRemainingString();
 | 
			
		||||
	std::istringstream is(contents, std::ios::binary);
 | 
			
		||||
	inv->deSerialize(is);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -2576,7 +2576,10 @@ void Server::sendDetachedInventory(const std::string &name, session_t peer_id)
 | 
			
		||||
		// Serialization & NetworkPacket isn't a love story
 | 
			
		||||
		std::ostringstream os(std::ios_base::binary);
 | 
			
		||||
		inv_it->second->serialize(os);
 | 
			
		||||
		pkt << os.str();
 | 
			
		||||
 | 
			
		||||
		std::string os_str = os.str();
 | 
			
		||||
		pkt << static_cast<u16>(os_str.size()); // HACK: to keep compatibility with 5.0.0 clients
 | 
			
		||||
		pkt.putRawString(os_str);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (peer_id == PEER_ID_INEXISTENT)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user