diff --git a/CMakeLists.txt b/CMakeLists.txt index 85194a3ff..010297471 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -409,7 +409,7 @@ link_directories(contrib/msc/lib) endif() if(SHADOW) - add_shadow_plugin(shadow-plugin-${SHARED_LIB} ${EXE_SRC} ${LIB_SRC}) + add_shadow_plugin(shadow-plugin-${SHARED_LIB} ${EXE_SRC} ${LIB_SRC} ${LIB_PLATFORM_SRC} ${CPP_BACKPORT_SRC}) target_link_libraries(shadow-plugin-${SHARED_LIB} ${LIBS}) install(TARGETS shadow-plugin-${SHARED_LIB} DESTINATION plugins) else() diff --git a/contrib/shadow/genconf.py b/contrib/shadow/genconf.py index 3d0a21fe3..9629a657b 100644 --- a/contrib/shadow/genconf.py +++ b/contrib/shadow/genconf.py @@ -56,9 +56,14 @@ def makeBase(settings, name, id): def makeClient(settings, name, id): peer = makeBase(settings, name, id) - nodeconf(peer['config'], getSetting(settings, 'baseDir', 'tmp'), name) + basedir = getSetting(settings, 'baseDir', 'tmp') + nodeconf(peer['config'], basedir, name) + fname = os.path.join(basedir, "test-service.ini") peer['config']['services'] = { + 'test-service': fname } + with open(fname, 'w') as f: + f.write("[test-service]") return peer @@ -81,7 +86,8 @@ def genconf(settings, outf): kill = etree.SubElement(root, 'kill') kill.attrib['time'] = getSetting(settings, 'runFor', '600') - baseDir = getSetting(settings, 'baseDir', 'tmp') + baseDir = getSetting(settings, 'baseDir', + os.path.join('/tmp', 'lokinet-shadow')) if not os.path.exists(baseDir): os.mkdir(baseDir) @@ -125,6 +131,7 @@ def genconf(settings, outf): if __name__ == '__main__': settings = { + 'baseDir': os.path.join("/tmp", "lokinet-shadow"), 'topology': os.path.join(shadowRoot, 'share', 'topology.graphml.xml'), 'runFor': '{}'.format(60 * 10 * 10) } diff --git a/include/llarp/threading.hpp b/include/llarp/threading.hpp index 44f534537..8b92e4842 100644 --- a/include/llarp/threading.hpp +++ b/include/llarp/threading.hpp @@ -32,8 +32,15 @@ namespace llarp /// a condition variable that does nothing struct NullCondition { + template < typename Lock_t > void - wait(NullLock& l) + wait(Lock_t& l) + { + } + + template < typename Lock_t, typename Pred > + void + wait(Lock_t& l, Pred p) { } diff --git a/llarp/dht/find_router.cpp b/llarp/dht/find_router.cpp index 97a67f450..c51c33f0f 100644 --- a/llarp/dht/find_router.cpp +++ b/llarp/dht/find_router.cpp @@ -92,7 +92,7 @@ namespace llarp Key_t peer; if(dht.nodes->FindClosest(K, peer)) dht.LookupRouter(K, dht.OurKey(), txid, peer, job); - return false; + return true; } FindRouterMessage::~FindRouterMessage() diff --git a/llarp/iwp/session.cpp b/llarp/iwp/session.cpp index b1310e056..d8c1f4c7e 100644 --- a/llarp/iwp/session.cpp +++ b/llarp/iwp/session.cpp @@ -326,11 +326,10 @@ llarp_link_session::EnterState(State st) void llarp_link_session::on_intro(const void *buf, size_t sz) { - llarp::LogDebug("session onintro"); if(sz >= sizeof(workbuf)) { // too big? - llarp::LogError("intro too big"); + llarp::LogError("intro too big from ", addr); delete this; return; } diff --git a/llarp/service/endpoint.cpp b/llarp/service/endpoint.cpp index 2e1a0e11b..0bfbb0c40 100644 --- a/llarp/service/endpoint.cpp +++ b/llarp/service/endpoint.cpp @@ -150,7 +150,10 @@ namespace llarp while(itr != m_PendingRouters.end()) { if(itr->second.IsExpired(now)) + { + llarp::LogInfo("lookup for ", itr->first, " timed out"); itr = m_PendingRouters.erase(itr); + } else ++itr; } @@ -603,6 +606,8 @@ namespace llarp void Endpoint::EnsureRouterIsKnown(const RouterID& router) { + if(router.IsZero()) + return; if(!llarp_nodedb_get_rc(m_Router->nodedb, router)) { if(m_PendingRouters.find(router) == m_PendingRouters.end())