diff --git a/Makefile b/Makefile index cac39c2d8..6f4326f56 100644 --- a/Makefile +++ b/Makefile @@ -34,9 +34,10 @@ TESTNET_DEBUG ?= 0 clean: rm -f build.ninja rules.ninja cmake_install.cmake CMakeCache.txt rm -rf CMakeFiles - rm -f $(TARGETS) llarpd + rm -f $(TARGETS) llarpd llarpc dns rcutil testAll rm -f $(SHADOW_PLUGIN) $(SHADOW_CONFIG) rm -f *.sig + rm -f *.a *.so debug-configure: cmake -GNinja -DCMAKE_BUILD_TYPE=Debug -DWITH_TESTS=ON -DCMAKE_C_COMPILER=$(CC) -DCMAKE_CXX_COMPILER=$(CXX) diff --git a/contrib/testnet/genconf.py b/contrib/testnet/genconf.py index 19d166362..52fd4274e 100644 --- a/contrib/testnet/genconf.py +++ b/contrib/testnet/genconf.py @@ -92,7 +92,6 @@ def main(): f.write('''[test-service] tag=test prefetch-tag=test -prefetch-tag=nonexist ''') with open(args.out, 'w') as f: @@ -100,20 +99,22 @@ prefetch-tag=nonexist directory = {} command = {} redirect_stderr=true -stdout_logfile=/dev/fd/1 +#stdout_logfile=/dev/fd/1 +stdout_logfile={}/svc-node-%(process_num)03d-log.txt stdout_logfile_maxbytes=0 process_name = svc-node-%(process_num)03d numprocs = {} -'''.format(os.path.join(args.dir, 'svc-node-%(process_num)03d'), args.bin, args.svc)) +'''.format(os.path.join(args.dir, 'svc-node-%(process_num)03d'), args.bin, args.dir, args.svc)) f.write('''[program:client-node] directory = {} command = {} redirect_stderr=true -stdout_logfile=/dev/fd/1 +#stdout_logfile=/dev/fd/1 +stdout_logfile={}/client-node-%(process_num)03d-log.txt stdout_logfile_maxbytes=0 process_name = client-node-%(process_num)03d numprocs = {} -'''.format(os.path.join(args.dir, 'client-node-%(process_num)03d'), args.bin, args.clients)) +'''.format(os.path.join(args.dir, 'client-node-%(process_num)03d'),args.bin, args.dir, args.clients)) f.write('[supervisord]\ndirectory=.\n') diff --git a/i2p.rocks.signed.txt b/i2p.rocks.signed.txt deleted file mode 100644 index 941ab60fd..000000000 Binary files a/i2p.rocks.signed.txt and /dev/null differ diff --git a/llarp/threadpool.cpp b/llarp/threadpool.cpp index ae166b40b..9abc92386 100644 --- a/llarp/threadpool.cpp +++ b/llarp/threadpool.cpp @@ -38,7 +38,7 @@ namespace llarp #elif !defined(_MSC_VER) || !defined(_WIN32) pthread_setname_np(pthread_self(), name); #else - SetThreadName(GetCurrentThreadId(),name); + SetThreadName(GetCurrentThreadId(), name); #endif } for(;;) @@ -103,6 +103,7 @@ struct llarp_threadpool { llarp::thread::Pool *impl; + std::mutex m_access; std::queue< llarp_thread_job * > jobs; llarp_threadpool(int workers, const char *name) @@ -169,8 +170,16 @@ llarp_threadpool_queue_job(struct llarp_threadpool *pool, { if(pool->impl) pool->impl->QueueJob(job); - else - pool->jobs.push(new llarp_thread_job(job)); + else if(job.user && job.work) + { + auto j = new llarp_thread_job; + j->work = job.work; + j->user = job.user; + { + std::unique_lock< std::mutex > lock(pool->m_access); + pool->jobs.push(j); + } + } } void @@ -178,11 +187,14 @@ llarp_threadpool_tick(struct llarp_threadpool *pool) { while(pool->jobs.size()) { - auto &job = pool->jobs.front(); - if(job && job->work && job->user) - job->work(job->user); + llarp_thread_job *job; + { + std::unique_lock< std::mutex > lock(pool->m_access); + job = pool->jobs.front(); + pool->jobs.pop(); + } + job->work(job->user); delete job; - pool->jobs.pop(); } }