Merge pull request #246 from majestrate/fix-issue-233

Fix issue 233
pull/252/head
Ryan Tharp 5 years ago committed by GitHub
commit 5b5ea74c40
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -139,7 +139,7 @@ router's full identity
k: "<32 bytes public long term identity signing key>",
n: "<optional max 32 bytes router nickname>",
p: "<32 bytes public path encryption key>",
t: time_signed_at_milliseconds_since_epoch_uint64,
u: time_signed_at_milliseconds_since_epoch_uint64,
v: 0,
x: [ Exit, Infos ],
z: "<64 bytes signature using identity key>"

@ -74,6 +74,7 @@ llarp_ev_loop_run_single_process(struct llarp_ev_loop *ev,
ev->tick(EV_TICK_INTERVAL);
if(ev->running())
{
ev->_now = llarp::time_now_ms();
logic->tick_async(ev->_now);
llarp_threadpool_tick(tp);
}
@ -151,7 +152,7 @@ llarp_ev_add_tun(struct llarp_ev_loop *loop, struct llarp_tun_io *tun)
if(strcmp(tun->ifaddr, "") == 0 || strcmp(tun->ifaddr, "auto"))
{
std::string ifaddr = llarp::findFreePrivateRange();
auto pos = ifaddr.find("/");
auto pos = ifaddr.find("/");
if(pos == std::string::npos)
{
llarp::LogWarn("Auto ifaddr didn't return a netmask: ", ifaddr);
@ -169,15 +170,17 @@ llarp_ev_add_tun(struct llarp_ev_loop *loop, struct llarp_tun_io *tun)
llarp::LogError("bad ifaddr netmask value: ", ifaddr);
return false;
}
tun->netmask = num;
tun->netmask = num;
const std::string addr = ifaddr.substr(0, pos);
std::copy_n(addr.begin(), std::min(sizeof(tun->ifaddr), addr.size()), tun->ifaddr);
std::copy_n(addr.begin(), std::min(sizeof(tun->ifaddr), addr.size()),
tun->ifaddr);
llarp::LogInfo("IfAddr autodetect: ", tun->ifaddr, "/", tun->netmask);
}
if(strcmp(tun->ifname, "") == 0 || strcmp(tun->ifname, "auto"))
{
std::string ifname = llarp::findFreeLokiTunIfName();
std::copy_n(ifname.begin(), std::min(sizeof(tun->ifname), ifname.size()), tun->ifname);
std::copy_n(ifname.begin(), std::min(sizeof(tun->ifname), ifname.size()),
tun->ifname);
llarp::LogInfo("IfName autodetect: ", tun->ifname);
}
llarp::LogDebug("Tun Interface will use the following settings:");

@ -1609,19 +1609,28 @@ namespace llarp
{
self->bootstrapRCList.emplace_back();
auto &rc = self->bootstrapRCList.back();
if(rc.Read(val) && rc.Verify(&self->crypto, self->Now()))
if(!rc.Read(val))
{
llarp::LogInfo("Added bootstrap node ", RouterID(rc.pubkey));
llarp::LogWarn("failed to decode bootstrap RC, file='", val,
"' rc=", rc);
self->bootstrapRCList.pop_back();
return;
}
else if(self->Now() - rc.last_updated > RouterContact::Lifetime)
if(rc.Verify(&self->crypto, self->Now()))
{
llarp::LogWarn("Bootstrap node ", RouterID(rc.pubkey),
" is too old and needs to be refreshed");
self->bootstrapRCList.pop_back();
llarp::LogInfo("Added bootstrap node ", RouterID(rc.pubkey));
}
else
{
llarp::LogError("malformed rc file: ", val);
if(rc.IsExpired(self->Now()))
{
llarp::LogWarn("Bootstrap node ", RouterID(rc.pubkey),
" is too old and needs to be refreshed");
}
else
{
llarp::LogError("malformed rc file='", val, "' rc=", rc);
}
self->bootstrapRCList.pop_back();
}
}
@ -1633,8 +1642,10 @@ namespace llarp
{
llarp::LogWarn("!!!! you have manually set netid to be '", val,
"' which does not equal '", Version::LLARP_NET_ID,
"' you will run as a different network, good luck and "
"don't forget: something something MUH traffic shape "
"' you will run as a different network, good luck "
"and "
"don't forget: something something MUH traffic "
"shape "
"correlation !!!!");
llarp::NetID::DefaultValue() =
llarp::NetID(reinterpret_cast< const byte_t * >(strdup(val)));
@ -1662,7 +1673,8 @@ namespace llarp
{
self->transport_keyfile = val;
}
if((StrEq(key, "identity-privkey") || StrEq(key, "ident-privkey")) && !self->usingSNSeed)
if((StrEq(key, "identity-privkey") || StrEq(key, "ident-privkey"))
&& !self->usingSNSeed)
{
self->ident_keyfile = val;
}

@ -116,7 +116,7 @@ namespace llarp
return false;
/* write last updated */
if(!bencode_write_bytestring(buf, "t", 1))
if(!bencode_write_bytestring(buf, "u", 1))
return false;
if(!bencode_write_uint64(buf, last_updated))
return false;
@ -179,10 +179,10 @@ namespace llarp
if(!BEncodeMaybeReadDictEntry("p", enckey, read, key, buf))
return false;
if(!BEncodeMaybeReadDictInt("v", version, read, key, buf))
if(!BEncodeMaybeReadDictInt("u", last_updated, read, key, buf))
return false;
if(!BEncodeMaybeReadDictInt("t", last_updated, read, key, buf))
if(!BEncodeMaybeReadDictInt("v", version, read, key, buf))
return false;
if(!BEncodeMaybeReadDictList("x", exits, read, key, buf))
@ -338,6 +338,8 @@ namespace llarp
}
f.seekg(0, std::ios::end);
auto l = f.tellg();
if(l > sizeof(tmp))
return false;
f.seekg(0, std::ios::beg);
f.read((char *)tmp, l);
auto buf = llarp::StackBuffer< decltype(tmp) >(tmp);

@ -512,7 +512,7 @@ namespace llarp
Endpoint::Start()
{
// how can I tell if a m_Identity isn't loaded?
//this->LoadKeyFile();
// this->LoadKeyFile();
if(!m_DataHandler)
{
m_DataHandler = this;

Loading…
Cancel
Save