diff --git a/RouterContext.cpp b/RouterContext.cpp index 94d73081..9e17af0e 100644 --- a/RouterContext.cpp +++ b/RouterContext.cpp @@ -162,7 +162,7 @@ namespace i2p { // create new address m_RouterInfo.AddNTCPAddress (host.to_string ().c_str (), port); - m_RouterInfo.AddSSUAddress (host.to_string ().c_str (), port, GetIdentHash ()); // TODO + m_RouterInfo.AddSSUAddress (host.to_string ().c_str (), port, GetIdentHash (), 1472); // TODO updated = true; } if (updated) diff --git a/RouterInfo.cpp b/RouterInfo.cpp index a782c219..0b7fc714 100644 --- a/RouterInfo.cpp +++ b/RouterInfo.cpp @@ -374,6 +374,14 @@ namespace data value[l] = 0; WriteString (value, properties); properties << ';'; + // write mtu + if (address.mtu) + { + WriteString ("mtu", properties); + properties << '='; + WriteString (boost::lexical_cast(address.mtu), properties); + properties << ';'; + } } WriteString ("port", properties); properties << '='; @@ -466,11 +474,12 @@ namespace data addr.transportStyle = eTransportNTCP; addr.cost = 2; addr.date = 0; + addr.mtu = 0; m_Addresses.push_back(addr); m_SupportedTransports |= addr.host.is_v6 () ? eNTCPV6 : eNTCPV4; } - void RouterInfo::AddSSUAddress (const char * host, int port, const uint8_t * key) + void RouterInfo::AddSSUAddress (const char * host, int port, const uint8_t * key, int mtu) { Address addr; addr.host = boost::asio::ip::address::from_string (host); @@ -478,6 +487,7 @@ namespace data addr.transportStyle = eTransportSSU; addr.cost = 10; // NTCP should have priority over SSU addr.date = 0; + addr.mtu = mtu; memcpy (addr.key, key, 32); m_Addresses.push_back(addr); m_SupportedTransports |= addr.host.is_v6 () ? eNTCPV6 : eSSUV4; diff --git a/RouterInfo.h b/RouterInfo.h index 75cdd51b..c33a5bb2 100644 --- a/RouterInfo.h +++ b/RouterInfo.h @@ -101,7 +101,7 @@ namespace data const Address * GetSSUV6Address () const; void AddNTCPAddress (const char * host, int port); - void AddSSUAddress (const char * host, int port, const uint8_t * key); + void AddSSUAddress (const char * host, int port, const uint8_t * key, int mtu = 0); bool AddIntroducer (const Address * address, uint32_t tag); bool RemoveIntroducer (const boost::asio::ip::udp::endpoint& e); void SetProperty (const char * key, const char * value);