mirror of
				https://github.com/PurpleI2P/i2pd.git
				synced 2025-11-04 08:30:46 +00:00 
			
		
		
		
	increase max packet size
This commit is contained in:
		
							parent
							
								
									1ea26a113a
								
							
						
					
					
						commit
						e0e27047f9
					
				
					 2 changed files with 20 additions and 21 deletions
				
			
		| 
						 | 
					@ -19,7 +19,7 @@ namespace stream
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	Stream::Stream (boost::asio::io_service& service, StreamingDestination * local, 
 | 
						Stream::Stream (boost::asio::io_service& service, StreamingDestination * local, 
 | 
				
			||||||
		const i2p::data::LeaseSet& remote): m_Service (service), m_SendStreamID (0), 
 | 
							const i2p::data::LeaseSet& remote): m_Service (service), m_SendStreamID (0), 
 | 
				
			||||||
		m_SequenceNumber (0), m_LastReceivedSequenceNumber (0), m_IsOpen (false),  
 | 
							m_SequenceNumber (0), m_LastReceivedSequenceNumber (-1), m_IsOpen (false),  
 | 
				
			||||||
		m_IsOutgoing(true), m_LeaseSetUpdated (true), m_LocalDestination (local), 
 | 
							m_IsOutgoing(true), m_LeaseSetUpdated (true), m_LocalDestination (local), 
 | 
				
			||||||
		m_RemoteLeaseSet (&remote), m_ReceiveTimer (m_Service)
 | 
							m_RemoteLeaseSet (&remote), m_ReceiveTimer (m_Service)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
| 
						 | 
					@ -28,7 +28,7 @@ namespace stream
 | 
				
			||||||
	}	
 | 
						}	
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Stream::Stream (boost::asio::io_service& service, StreamingDestination * local):
 | 
						Stream::Stream (boost::asio::io_service& service, StreamingDestination * local):
 | 
				
			||||||
		m_Service (service), m_SendStreamID (0), m_SequenceNumber (0), m_LastReceivedSequenceNumber (0), 
 | 
							m_Service (service), m_SendStreamID (0), m_SequenceNumber (0), m_LastReceivedSequenceNumber (-1), 
 | 
				
			||||||
		m_IsOpen (true), m_IsOutgoing(true), m_LeaseSetUpdated (true), m_LocalDestination (local),
 | 
							m_IsOpen (true), m_IsOutgoing(true), m_LeaseSetUpdated (true), m_LocalDestination (local),
 | 
				
			||||||
		m_RemoteLeaseSet (nullptr), m_ReceiveTimer (m_Service)
 | 
							m_RemoteLeaseSet (nullptr), m_ReceiveTimer (m_Service)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
| 
						 | 
					@ -53,7 +53,7 @@ namespace stream
 | 
				
			||||||
		if (!m_SendStreamID) 
 | 
							if (!m_SendStreamID) 
 | 
				
			||||||
			m_SendStreamID = packet->GetReceiveStreamID (); 	
 | 
								m_SendStreamID = packet->GetReceiveStreamID (); 	
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		uint32_t receivedSeqn = packet->GetSeqn ();
 | 
							int32_t receivedSeqn = packet->GetSeqn ();
 | 
				
			||||||
		if (!receivedSeqn && !packet->IsSYN ())
 | 
							if (!receivedSeqn && !packet->IsSYN ())
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			// plain ack
 | 
								// plain ack
 | 
				
			||||||
| 
						 | 
					@ -63,7 +63,7 @@ namespace stream
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		LogPrint ("Received seqn=", receivedSeqn); 
 | 
							LogPrint ("Received seqn=", receivedSeqn); 
 | 
				
			||||||
		if (!receivedSeqn || receivedSeqn == m_LastReceivedSequenceNumber + 1)
 | 
							if (receivedSeqn == m_LastReceivedSequenceNumber + 1)
 | 
				
			||||||
		{			
 | 
							{			
 | 
				
			||||||
			// we have received next in sequence message
 | 
								// we have received next in sequence message
 | 
				
			||||||
			ProcessPacket (packet);
 | 
								ProcessPacket (packet);
 | 
				
			||||||
| 
						 | 
					@ -71,7 +71,7 @@ namespace stream
 | 
				
			||||||
			// we should also try stored messages if any
 | 
								// we should also try stored messages if any
 | 
				
			||||||
			for (auto it = m_SavedPackets.begin (); it != m_SavedPackets.end ();)
 | 
								for (auto it = m_SavedPackets.begin (); it != m_SavedPackets.end ();)
 | 
				
			||||||
			{			
 | 
								{			
 | 
				
			||||||
				if ((*it)->GetSeqn () == m_LastReceivedSequenceNumber + 1)
 | 
									if ((*it)->GetSeqn () == (uint32_t)(m_LastReceivedSequenceNumber + 1))
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					Packet * savedPacket = *it;
 | 
										Packet * savedPacket = *it;
 | 
				
			||||||
					m_SavedPackets.erase (it++);
 | 
										m_SavedPackets.erase (it++);
 | 
				
			||||||
| 
						 | 
					@ -123,26 +123,24 @@ namespace stream
 | 
				
			||||||
			LogPrint ("Synchronize");
 | 
								LogPrint ("Synchronize");
 | 
				
			||||||
		}	
 | 
							}	
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (flags & PACKET_FLAG_DELAY_REQUESTED)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								optionData += 2;
 | 
				
			||||||
 | 
							}	
 | 
				
			||||||
 | 
							
 | 
				
			||||||
		if (flags & PACKET_FLAG_FROM_INCLUDED)
 | 
							if (flags & PACKET_FLAG_FROM_INCLUDED)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			LogPrint ("From identity");
 | 
								optionData += m_RemoteIdentity.FromBuffer (optionData, i2p::data::DEFAULT_IDENTITY_SIZE);
 | 
				
			||||||
			optionData += m_RemoteIdentity.FromBuffer (optionData, packet->GetOptionSize ());
 | 
								LogPrint ("From identity ", m_RemoteIdentity.Hash ().ToBase64 ());		
 | 
				
			||||||
			if (m_RemoteLeaseSet)
 | 
								if (!m_RemoteLeaseSet)
 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				if (m_RemoteIdentity.Hash () != m_RemoteLeaseSet->GetIdentHash ()) // check recieved identity
 | 
					 | 
				
			||||||
				{
 | 
					 | 
				
			||||||
					LogPrint ("Unexpected identity ",  m_RemoteIdentity.Hash ().ToBase64 (), " ", m_RemoteLeaseSet->GetIdentHash ().ToBase64 (), " expected");
 | 
					 | 
				
			||||||
					m_RemoteLeaseSet = nullptr; 
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			else
 | 
					 | 
				
			||||||
				LogPrint ("Incoming stream from ", m_RemoteIdentity.Hash ().ToBase64 ());
 | 
									LogPrint ("Incoming stream from ", m_RemoteIdentity.Hash ().ToBase64 ());
 | 
				
			||||||
			optionData += sizeof (i2p::data::Identity);
 | 
								optionData += i2p::data::DEFAULT_IDENTITY_SIZE;
 | 
				
			||||||
		}	
 | 
							}	
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (flags & PACKET_FLAG_MAX_PACKET_SIZE_INCLUDED)
 | 
							if (flags & PACKET_FLAG_MAX_PACKET_SIZE_INCLUDED)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			LogPrint ("Max packet size");
 | 
								uint16_t maxPacketSize = htobe16 (*(uint16_t *)optionData);
 | 
				
			||||||
 | 
								LogPrint ("Max packet size ", maxPacketSize);
 | 
				
			||||||
			optionData += 2;
 | 
								optionData += 2;
 | 
				
			||||||
		}	
 | 
							}	
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
| 
						 | 
					@ -633,7 +631,7 @@ namespace stream
 | 
				
			||||||
			uncompressed->len = decompressor.MaxRetrievable ();
 | 
								uncompressed->len = decompressor.MaxRetrievable ();
 | 
				
			||||||
			if (uncompressed->len > MAX_PACKET_SIZE)
 | 
								if (uncompressed->len > MAX_PACKET_SIZE)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				LogPrint ("Recieved packet size exceeds mac packet size");
 | 
									LogPrint ("Received packet size ", uncompressed->len,  " exceeds max packet size");
 | 
				
			||||||
				uncompressed->len = MAX_PACKET_SIZE;
 | 
									uncompressed->len = MAX_PACKET_SIZE;
 | 
				
			||||||
			}	
 | 
								}	
 | 
				
			||||||
			decompressor.Get (uncompressed->buf, uncompressed->len);
 | 
								decompressor.Get (uncompressed->buf, uncompressed->len);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,7 +34,7 @@ namespace stream
 | 
				
			||||||
	const uint16_t PACKET_FLAG_NO_ACK = 0x0400;
 | 
						const uint16_t PACKET_FLAG_NO_ACK = 0x0400;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const size_t STREAMING_MTU = 1730;
 | 
						const size_t STREAMING_MTU = 1730;
 | 
				
			||||||
	const size_t MAX_PACKET_SIZE = 1754;
 | 
						const size_t MAX_PACKET_SIZE = 4096;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct Packet
 | 
						struct Packet
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
| 
						 | 
					@ -111,7 +111,8 @@ namespace stream
 | 
				
			||||||
		private:
 | 
							private:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			boost::asio::io_service& m_Service;
 | 
								boost::asio::io_service& m_Service;
 | 
				
			||||||
			uint32_t m_SendStreamID, m_RecvStreamID, m_SequenceNumber, m_LastReceivedSequenceNumber;
 | 
								uint32_t m_SendStreamID, m_RecvStreamID, m_SequenceNumber;
 | 
				
			||||||
 | 
								int32_t m_LastReceivedSequenceNumber;
 | 
				
			||||||
			bool m_IsOpen, m_IsOutgoing, m_LeaseSetUpdated;
 | 
								bool m_IsOpen, m_IsOutgoing, m_LeaseSetUpdated;
 | 
				
			||||||
			StreamingDestination * m_LocalDestination;
 | 
								StreamingDestination * m_LocalDestination;
 | 
				
			||||||
			i2p::data::Identity m_RemoteIdentity;
 | 
								i2p::data::Identity m_RemoteIdentity;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue