mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-01-22 04:04:16 +00:00
initial connect of I2PTunnel
This commit is contained in:
parent
ffd2a9e69e
commit
7002d263ab
@ -19,11 +19,6 @@ namespace stream
|
|||||||
|
|
||||||
I2PTunnelConnection::~I2PTunnelConnection ()
|
I2PTunnelConnection::~I2PTunnelConnection ()
|
||||||
{
|
{
|
||||||
Terminate ();
|
|
||||||
}
|
|
||||||
|
|
||||||
void I2PTunnelConnection::Terminate ()
|
|
||||||
{
|
|
||||||
if (m_Stream)
|
if (m_Stream)
|
||||||
{
|
{
|
||||||
m_Stream->Close ();
|
m_Stream->Close ();
|
||||||
@ -31,6 +26,10 @@ namespace stream
|
|||||||
m_Stream = nullptr;
|
m_Stream = nullptr;
|
||||||
}
|
}
|
||||||
delete m_Socket;
|
delete m_Socket;
|
||||||
|
}
|
||||||
|
|
||||||
|
void I2PTunnelConnection::Terminate ()
|
||||||
|
{
|
||||||
// TODO: remove from I2PTunnel
|
// TODO: remove from I2PTunnel
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,10 +45,11 @@ namespace stream
|
|||||||
if (ecode)
|
if (ecode)
|
||||||
{
|
{
|
||||||
LogPrint ("I2PTunnel read error: ", ecode.message ());
|
LogPrint ("I2PTunnel read error: ", ecode.message ());
|
||||||
|
m_Stream->Close ();
|
||||||
Terminate ();
|
Terminate ();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (m_Stream)
|
if (m_Stream)
|
||||||
m_Stream->Send (m_Buffer, bytes_transferred, 0);
|
m_Stream->Send (m_Buffer, bytes_transferred, 0);
|
||||||
Receive ();
|
Receive ();
|
||||||
@ -109,7 +109,7 @@ namespace stream
|
|||||||
pos = m_Destination.find (".i2p");
|
pos = m_Destination.find (".i2p");
|
||||||
if (pos != std::string::npos)
|
if (pos != std::string::npos)
|
||||||
{
|
{
|
||||||
auto identHash = i2p::data::netdb.FindAddress (m_Destination.substr (0, pos));
|
auto identHash = i2p::data::netdb.FindAddress (m_Destination);
|
||||||
if (identHash)
|
if (identHash)
|
||||||
m_DestinationIdentHash = new i2p::data::IdentHash (*identHash);
|
m_DestinationIdentHash = new i2p::data::IdentHash (*identHash);
|
||||||
}
|
}
|
||||||
@ -150,6 +150,7 @@ namespace stream
|
|||||||
m_RemoteLeaseSet = i2p::data::netdb.FindLeaseSet (*m_DestinationIdentHash);
|
m_RemoteLeaseSet = i2p::data::netdb.FindLeaseSet (*m_DestinationIdentHash);
|
||||||
if (m_RemoteLeaseSet)
|
if (m_RemoteLeaseSet)
|
||||||
{
|
{
|
||||||
|
LogPrint ("New I2PTunnel connection");
|
||||||
auto connection = new I2PTunnelConnection (socket, m_RemoteLeaseSet);
|
auto connection = new I2PTunnelConnection (socket, m_RemoteLeaseSet);
|
||||||
m_Connections.insert (connection);
|
m_Connections.insert (connection);
|
||||||
}
|
}
|
||||||
|
@ -219,7 +219,7 @@ namespace stream
|
|||||||
size_t Stream::Send (const uint8_t * buf, size_t len, int timeout)
|
size_t Stream::Send (const uint8_t * buf, size_t len, int timeout)
|
||||||
{
|
{
|
||||||
bool isNoAck = m_LastReceivedSequenceNumber < 0; // first packet
|
bool isNoAck = m_LastReceivedSequenceNumber < 0; // first packet
|
||||||
while (len > 0)
|
while (!m_IsOpen || len > 0)
|
||||||
{
|
{
|
||||||
Packet * p = new Packet ();
|
Packet * p = new Packet ();
|
||||||
uint8_t * packet = p->GetBuffer ();
|
uint8_t * packet = p->GetBuffer ();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user