Browse Source

exploratory improvement

pull/93/head
orignal 10 years ago
parent
commit
e7126908f9
  1. 6
      I2NPProtocol.cpp
  2. 12
      NetDb.cpp
  3. 5
      TunnelEndpoint.cpp

6
I2NPProtocol.cpp

@ -463,9 +463,11 @@ namespace i2p @@ -463,9 +463,11 @@ namespace i2p
msg->offset += sizeof (I2NPHeader) + sizeof (TunnelGatewayHeader);
msg->len = msg->offset + len;
LogPrint ("TunnelGateway of ", (int)len, " bytes for tunnel ", (unsigned int)tunnelID, ". Msg type ", (int)msg->GetHeader()->typeID);
if (msg->GetHeader()->typeID == eI2NPDatabaseStore)
if (msg->GetHeader()->typeID == eI2NPDatabaseStore ||
msg->GetHeader()->typeID == eI2NPDatabaseSearchReply)
{
// transit DatabaseStore my contain new/updated RI
// transit DatabaseStore my contain new/updated RI
// or DatabaseSearchReply with new routers
auto ds = NewI2NPMessage ();
*ds = *msg;
i2p::data::netdb.PostI2NPMsg (ds);

12
NetDb.cpp

@ -559,7 +559,19 @@ namespace data @@ -559,7 +559,19 @@ namespace data
}
}
else
{
LogPrint ("Requested destination for ", key, " not found");
// it might contain new routers
for (int i = 0; i < num; i++)
{
IdentHash router (buf + 33 + i*32);
if (!FindRouter (router))
{
LogPrint ("New router ", router.ToBase64 (), " found. Request it");
RequestDestination (router);
}
}
}
i2p::DeleteI2NPMessage (msg);
}

5
TunnelEndpoint.cpp

@ -203,9 +203,10 @@ namespace tunnel @@ -203,9 +203,10 @@ namespace tunnel
// to somebody else
if (!m_IsInbound) // outbound transit tunnel
{
if (msg.data->GetHeader()->typeID == eI2NPDatabaseStore)
if (msg.data->GetHeader()->typeID == eI2NPDatabaseStore ||
msg.data->GetHeader()->typeID == eI2NPDatabaseSearchReply )
{
// catch RI
// catch RI or reply with new list of routers
auto ds = NewI2NPMessage ();
*ds = *(msg.data);
i2p::data::netdb.PostI2NPMsg (ds);

Loading…
Cancel
Save