Git Product home page Git Product logo

purplei2p / i2pd Goto Github PK

View Code? Open in Web Editor NEW
3.1K 141.0 413.0 14.83 MB

🛡 I2P: End-to-End encrypted and anonymous Internet

Home Page: https://i2pd.website

License: BSD 3-Clause "New" or "Revised" License

C++ 96.84% CMake 1.89% C 0.10% Makefile 0.44% Inno Setup 0.10% Batchfile 0.20% Emacs Lisp 0.01% Shell 0.05% Dockerfile 0.13% Go 0.03% CSS 0.22%
i2p i2p-client c-plus-plus communication privacy security cryptography openssl p2p anonymity

i2pd's Introduction

i2pd's People

Contributors

0niichan avatar alexbeli avatar amdmi3 avatar bopoha avatar brain5lug avatar chadf avatar chertov avatar eyedeekay avatar freeacetone avatar klondi avatar kytvi2p avatar l-n-s avatar majestrate avatar markovskij avatar meeh420 avatar mewmew-i2p avatar mikalv avatar mikhail4021 avatar mlt avatar nonlin-lin-chaos-order-etc-etal avatar orignal avatar r4sas avatar radfish avatar rex4539 avatar rszibele avatar simonvetter avatar unlnown542a avatar vort avatar wekoq avatar yangfl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

i2pd's Issues

crash: free(): invalid pointer

Случилось всего один раз. Ничего особенного в этот момент не делал.
commit 43a9898, CentOS7.

...
16:52:16 - TunnelData
16:52:16 - TunnelData
16:52:16 - TunnelData
16:52:16 - TunnelMessage: zero found at 4
16:52:16 - Follow on fragment 1 of message 1766200948 non-last
16:52:16 - Fragment size=996
16:52:16 - TunnelMessage: zero found at 14
16:52:16 - Follow on fragment 2 of message 1766200948 last
16:52:16 - Fragment size=396
16:52:16 - TunnelMessage: handle fragment of 2388 bytes. Msg type 11
16:52:16 - Garlic
16:52:16 - Delivery type local
16:52:16 - Fragment size=308
16:52:16 - TunnelMessage: handle fragment of 308 bytes. Msg type 11
16:52:16 - Garlic
16:52:16 - Delivery type local
16:52:16 - Fragment size=276
16:52:16 - TunnelMessage: handle fragment of 276 bytes. Msg type 11
16:52:16 - Garlic
16:52:16 - TunnelMessage: zero found at 184
16:52:16 - Delivery type local
16:52:16 - Fragment size=820
16:52:16 - TunnelMessage: handle fragment of 820 bytes. Msg type 11
16:52:16 - Garlic
16:52:16 - 1 cloves
16:52:16 - Garlic type destination
16:52:16 - Packet 0 acknowledged
16:52:16 - Received seqn=0
16:52:16 - Process seqn=0, flags=233
16:52:16 - Synchronize
16:52:16 - From identity 3t5Ar2NCTIOId70uzX2bZyJljR0aBogxMEzNyHirB7A=
16:52:16 - Max packet size 1730
16:52:16 - Signature
16:52:16 - 1 cloves
16:52:16 - Garlic type destination
16:52:16 - Received seqn=1
16:52:16 - Process seqn=1, flags=64
16:52:16 - 1 cloves
16:52:16 - Garlic type destination
16:52:16 - Received seqn=2
16:52:16 - Process seqn=2, flags=74
16:52:16 - Signature
16:52:16 - Closed
16:52:16 - Quick Ack sent
16:52:16 - 1 cloves
16:52:16 - Garlic type destination
16:52:16 - Received seqn=6
16:52:16 - Duplicate message 6 received
16:52:16 - Quick Ack sent
16:52:16 - TunnelData
16:52:16 - TunnelMessage: zero found at 168
16:52:16 - Delivery type local
16:52:16 - Fragment size=836
16:52:16 - TunnelMessage: handle fragment of 836 bytes. Msg type 11
16:52:16 - Garlic
16:52:16 - 1 cloves
16:52:16 - Garlic type destination
16:52:16 - Received seqn=7
16:52:16 - Duplicate message 7 received
16:52:16 - Quick Ack sent
16:52:17 - Quick Ack sent
16:52:17 - TunnelData
16:52:17 - TunnelMessage: zero found at 56
16:52:17 - Delivery type local
16:52:17 - Fragment size=948
16:52:17 - TunnelMessage: handle fragment of 948 bytes. Msg type 11
16:52:17 - Garlic
16:52:17 - 1 cloves
16:52:17 - Garlic type destination
16:52:17 - Packet 0 acknowledged
16:52:17 - Received seqn=0
16:52:17 - Process seqn=0, flags=233
16:52:17 - Synchronize
16:52:17 - From identity 3t5Ar2NCTIOId70uzX2bZyJljR0aBogxMEzNyHirB7A=
16:52:17 - Max packet size 1730
16:52:17 - Signature
16:52:17 - FIN sent
*** Error in `./i2pd': free(): invalid pointer: 0x00007f9efc3ef060 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x7d1ad)[0x7f9f29b551ad]
./i2pd(_ZN3i2p6stream6Stream18ConcatenatePacketsEPhm+0xd2)[0x4ed732]
./i2pd(ZN3i2p6stream6Stream18HandleReceiveTimerIN5boost4asio17mutable_buffers_1ENS3_3_bi6bind_tIvNS3_4_mfi3mf2IvNS_4util14HTTPConnectionERKNS3_6system10error_codeEmEENS6_5list3INS6_5valueIPSB_EEPFNS3_3argILi1EEEvEPFNSL_ILi2EEEvEEEEEEEvSF_RKT_T0+0x32)[0x4a4312]
./i2pd(_ZN5boost4asio6detail12wait_handlerIZN3i2p6stream6Stream12AsyncReceiveINS0_17mutable_buffers_1ENS_3_bi6bind_tIvNS_4_mfi3mf2IvNS3_4util14HTTPConnectionERKNS_6system10error_codeEmEENS8_5list3INS8_5valueIPSD_EEPFNS_3argILi1EEEvEPFNSN_ILi2EEEvEEEEEEEvRKT_T0_iEUlSH_E0_E11do_completeEPNS1_15task_io_serviceEPNS1_25task_io_service_operationESH_m+0x131)[0x4a4621]
./i2pd(_ZN5boost4asio6detail15task_io_service3runERNS_6system10error_codeE+0x314)[0x4a2624]
./i2pd(_ZN3i2p6client17ClientDestination3RunEv+0x2e)[0x4f13fe]
/lib64/libstdc++.so.6(+0xb4da0)[0x7f9f2a465da0]
/lib64/libpthread.so.0(+0x7df3)[0x7f9f2a6bfdf3]
/lib64/libc.so.6(clone+0x6d)[0x7f9f29bce01d]
======= Memory map: ========
00400000-00562000 r-xp 00000000 fd:00 35072609 /root/build/i2pd/build/i2pd
00761000-00762000 r--p 00161000 fd:00 35072609 /root/build/i2pd/build/i2pd
00762000-00763000 rw-p 00162000 fd:00 35072609 /root/build/i2pd/build/i2pd
00763000-00769000 rw-p 00000000 00:00 0
01f6c000-020bd000 rw-p 00000000 00:00 0 [heap]
7f9ef8000000-7f9ef82a3000 rw-p 00000000 00:00 0
7f9ef82a3000-7f9efc000000 ---p 00000000 00:00 0
7f9efc000000-7f9efc439000 rw-p 00000000 00:00 0
7f9efc439000-7f9f00000000 ---p 00000000 00:00 0
7f9f00000000-7f9f00475000 rw-p 00000000 00:00 0
7f9f00475000-7f9f04000000 ---p 00000000 00:00 0
7f9f04000000-7f9f0408f000 rw-p 00000000 00:00 0
7f9f0408f000-7f9f08000000 ---p 00000000 00:00 0
7f9f08000000-7f9f08021000 rw-p 00000000 00:00 0
7f9f08021000-7f9f0c000000 ---p 00000000 00:00 0
7f9f0c000000-7f9f0c065000 rw-p 00000000 00:00 0
7f9f0c065000-7f9f10000000 ---p 00000000 00:00 0
7f9f10000000-7f9f10021000 rw-p 00000000 00:00 0
7f9f10021000-7f9f14000000 ---p 00000000 00:00 0
7f9f17ff8000-7f9f17ff9000 ---p 00000000 00:00 0
7f9f17ff9000-7f9f187f9000 rw-p 00000000 00:00 0 [stack:25117]
7f9f187f9000-7f9f187fa000 ---p 00000000 00:00 0
7f9f187fa000-7f9f18ffa000 rw-p 00000000 00:00 0 [stack:25116]
7f9f18ffa000-7f9f18ffb000 ---p 00000000 00:00 0
7f9f18ffb000-7f9f197fb000 rw-p 00000000 00:00 0 [stack:25115]
7f9f197fb000-7f9f197fc000 ---p 00000000 00:00 0
7f9f197fc000-7f9f19ffc000 rw-p 00000000 00:00 0 [stack:25114]
7f9f19ffc000-7f9f19ffd000 ---p 00000000 00:00 0
7f9f19ffd000-7f9f1a7fd000 rw-p 00000000 00:00 0 [stack:25113]
7f9f1a7fd000-7f9f1a7fe000 ---p 00000000 00:00 0
7f9f1a7fe000-7f9f1affe000 rw-p 00000000 00:00 0 [stack:25112]
7f9f1affe000-7f9f1afff000 ---p 00000000 00:00 0
7f9f1afff000-7f9f1b7ff000 rw-p 00000000 00:00 0 [stack:25111]
7f9f1b7ff000-7f9f1b800000 ---p 00000000 00:00 0
7f9f1b800000-7f9f1c000000 rw-p 00000000 00:00 0 [stack:25110]
7f9f1c000000-7f9f1c021000 rw-p 00000000 00:00 0
7f9f1c021000-7f9f20000000 ---p 00000000 00:00 0
7f9f20458000-7f9f20459000 ---p 00000000 00:00 0
7f9f20459000-7f9f20c59000 rw-p 00000000 00:00 0 [stack:25109]
7f9f20c59000-7f9f20c5a000 ---p 00000000 00:00 0
7f9f20c5a000-7f9f2145a000 rw-p 00000000 00:00 0 [stack:25108]
7f9f2145a000-7f9f27981000 r--p 00000000 fd:00 18178617 /usr/lib/locale/locale-archive
7f9f27981000-7f9f27984000 r-xp 00000000 fd:00 33707432 /usr/lib64/libdl-2.17.so
7f9f27984000-7f9f27b83000 ---p 00003000 fd:00 33707432 /usr/lib64/libdl-2.17.so
7f9f27b83000-7f9f27b84000 r--p 00002000 fd:00 33707432 /usr/lib64/libdl-2.17.so
7f9f27b84000-7f9f27b85000 rw-p 00003000 fd:00 33707432 /usr/lib64/libdl-2.17.so
7f9f27b85000-7f9f28f58000 r-xp 00000000 fd:00 33849972 /usr/lib64/libicudata.so.50.1.2
7f9f28f58000-7f9f29157000 ---p 013d3000 fd:00 33849972 /usr/lib64/libicudata.so.50.1.2
7f9f29157000-7f9f29158000 r--p 013d2000 fd:00 33849972 /usr/lib64/libicudata.so.50.1.2
7f9f29158000-7f9f29159000 rw-p 013d3000 fd:00 33849972 /usr/lib64/libicudata.so.50.1.2
7f9f29159000-7f9f29348000 r-xp 00000000 fd:00 33849974 /usr/lib64/libicui18n.so.50.1.2
7f9f29348000-7f9f29548000 ---p 001ef000 fd:00 33849974 /usr/lib64/libicui18n.so.50.1.2
7f9f29548000-7f9f29554000 r--p 001ef000 fd:00 33849974 /usr/lib64/libicui18n.so.50.1.2
7f9f29554000-7f9f29556000 rw-p 001fb000 fd:00 33849974 /usr/lib64/libicui18n.so.50.1.2
7f9f29556000-7f9f29557000 rw-p 00000000 00:00 0
7f9f29557000-7f9f296bb000 r-xp 00000000 fd:00 33667744 /usr/lib64/libicuuc.so.50.1.2
7f9f296bb000-7f9f298bb000 ---p 00164000 fd:00 33667744 /usr/lib64/libicuuc.so.50.1.2
7f9f298bb000-7f9f298cb000 r--p 00164000 fd:00 33667744 /usr/lib64/libicuuc.so.50.1.2
7f9f298cb000-7f9f298cc000 rw-p 00174000 fd:00 33667744 /usr/lib64/libicuuc.so.50.1.2
7f9f298cc000-7f9f298d0000 rw-p 00000000 00:00 0
7f9f298d0000-7f9f298d7000 r-xp 00000000 fd:00 33707488 /usr/lib64/librt-2.17.so
7f9f298d7000-7f9f29ad6000 ---p 00007000 fd:00 33707488 /usr/lib64/librt-2.17.so
7f9f29ad6000-7f9f29ad7000 r--p 00006000 fd:00 33707488 /usr/lib64/librt-2.17.so
7f9f29ad7000-7f9f29ad8000 rw-p 00007000 fd:00 33707488 /usr/lib64/librt-2.17.so
7f9f29ad8000-7f9f29c8e000 r-xp 00000000 fd:00 33623665 /usr/lib64/libc-2.17.so
7f9f29c8e000-7f9f29e8e000 ---p 001b6000 fd:00 33623665 /usr/lib64/libc-2.17.so
7f9f29e8e000-7f9f29e92000 r--p 001b6000 fd:00 33623665 /usr/lib64/libc-2.17.so
7f9f29e92000-7f9f29e94000 rw-p 001ba000 fd:00 33623665 /usr/lib64/libc-2.17.so
7f9f29e94000-7f9f29e99000 rw-p 00000000 00:00 0
7f9f29e99000-7f9f29eae000 r-xp 00000000 fd:00 34736884 /usr/lib64/libgcc_s-4.8.2-20140120.so.1Aborted

CMake build problems

I have FreeBSD10-i386 and devel/gmake security/cryptopp devel/cmake devel/boost-libs installed. While trying to compile i2pd with cmake I got this errors:
[100%] Building CXX object CMakeFiles/i2pd.dir/root/i2pd/DaemonLinux.cpp.o
Linking CXX executable i2pd
CMakeFiles/i2pd.dir/root/i2pd/Garlic.cpp.o: In function i2p::garlic::GarlicRoutingSession::CreateAESBlock(unsigned char*, i2p::I2NPMessage const*, i2p::I2NPMessage const*)': /root/i2pd/Garlic.cpp:(.text+0xea0): undefined reference toi2p::crypto::CBCEncryption::Encrypt(unsigned char const_, unsigned int, unsigned char_)'
CMakeFiles/i2pd.dir/root/i2pd/Garlic.cpp.o: In function `i2p::garlic::GarlicRouting::ProcessGarlicMessage(i2p::I2NPMessage*)'

please, make it compilable under FreeBSD

Crash in tunnel thread

I ran i2pd over night, and it crashed while trying to build a tunnel it seems.

Phase 1 sent: 288
Connected
Phase 1 sent: 288
Phase 2 received: 304
Phase 3 sent: 448
No activity fo 60 seconds
Read error: Operation canceled
NTCP session terminated
Phase 4 received: 48
NTCP session connected
Msg sent: 16
Msg sent: 672
Msg sent: 560
Phase 2 received: 304
Phase 3 sent: 448
No activity fo 60 seconds
Read error: Operation canceled
NTCP session terminated
Phase 4 received: 48
NTCP session connected
Msg sent: 16
Msg sent: 672
Msg sent: 560
Pending tunnel build request 5630 has not been responded. Deleted
Pending tunnel build request 5631 has not been responded. Deleted
Creating one hop inbound tunnel...
Creating one hop outbound tunnel...
Connecting to X.X.X.X:10907

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff1a7b700 (LWP 22079)]
0x00000000004814cd in i2p::tunnel::Tunnel::Build (this=0x7fffe4379990, replyMsgID=5633, outboundTunnel=0x0) at Tunnel.cpp:41
41                  CreateBuildRequestRecord (hop->router->GetIdentHash (), 
(gdb) bt
#0  0x00000000004814cd in i2p::tunnel::Tunnel::Build (this=0x7fffe4379990, replyMsgID=5633, outboundTunnel=0x0) at Tunnel.cpp:41
#1  0x00000000004854a8 in i2p::tunnel::Tunnels::CreateTunnel<i2p::tunnel::OutboundTunnel> (this=0x751740 <i2p::tunnel::tunnels>, 
    config=0x7fffe434f6b0, outboundTunnel=0x0) at Tunnel.cpp:486
#2  0x0000000000482b6c in i2p::tunnel::Tunnels::ManageOutboundTunnels (this=0x751740 <i2p::tunnel::tunnels>) at Tunnel.cpp:394
#3  0x0000000000482936 in i2p::tunnel::Tunnels::ManageTunnels (this=0x751740 <i2p::tunnel::tunnels>) at Tunnel.cpp:350
#4  0x00000000004827dd in i2p::tunnel::Tunnels::Run (this=0x751740 <i2p::tunnel::tunnels>) at Tunnel.cpp:327
#5  0x000000000048bf6d in std::_Mem_fn<void (i2p::tunnel::Tunnels::*)()>::operator() (this=0x115bb70, 
    __object=0x751740 <i2p::tunnel::tunnels>) at /usr/include/c++/4.7/functional:554
#6  0x000000000048becc in std::_Bind<std::_Mem_fn<void (i2p::tunnel::Tunnels::*)()> (i2p::tunnel::Tunnels*)>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) (this=0x115bb70, __args=...) at /usr/include/c++/4.7/functional:1156
#7  0x000000000048be3e in std::_Bind<std::_Mem_fn<void (i2p::tunnel::Tunnels::*)()> (i2p::tunnel::Tunnels*)>::operator()<, void>() (
    this=0x115bb70) at /usr/include/c++/4.7/functional:1215
#8  0x000000000048bdd0 in std::_Bind_simple<std::_Bind<std::_Mem_fn<void (i2p::tunnel::Tunnels::*)()> (i2p::tunnel::Tunnels*)> ()>::_M_invoke<>(std::_Index_tuple<>) (this=0x115bb70) at /usr/include/c++/4.7/functional:1598
#9  0x000000000048bc7f in std::_Bind_simple<std::_Bind<std::_Mem_fn<void (i2p::tunnel::Tunnels::*)()> (i2p::tunnel::Tunnels*)> ()>::operator()() (this=0x115bb70) at /usr/include/c++/4.7/functional:1586
#10 0x000000000048bbf0 in std::thread::_Impl<std::_Bind_simple<std::_Bind<std::_Mem_fn<void (i2p::tunnel::Tunnels::*)()> (i2p::tunnel::Tunnels*)> ()> >::_M_run() (this=0x115bb58) at /usr/include/c++/4.7/thread:115
#11 0x00007ffff68cd9f0 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#12 0x00007ffff6b25f8e in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#13 0x00007ffff6336a0d in clone () from /lib/x86_64-linux-gnu/libc.so.6

Async streaming

I'm looking at the streaming now. Would it be best with two queues? One for receive and one for sending? or maybe merge them, with a tag in the packet struct with to be sent "in" or "out"?

OS X build error

I downloaded the latest release version 0.5.0 and when I try to compile it I get the following error
Reseed.cpp:375:10: error: no viable conversion from 'std::istream' (aka 'basic_istream') to 'bool'
return s;

crash due to network misconfigured network interface

After successfully reseeding, i2pd (git revision c8cdeea) crashed with the following:

terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >'
  what():  send_to: Network is unreachable
Aborted

I also couldn't ping anything because the network interface was not configured properly (bad routing info). After fixing the network configuration, i2pd was able to connect to the I2P network.

(This non-graceful failure might be one of the "known issues".)

i2pcpp

Кстати, а зачем фрагментировать на несколько проектов? Слейтесь с i2pcpp и разработка пойдёт быстрее.

Reseeding v2. Implement SU3

Hello,

I've started on the implementation of reseeding v2. The main difference is that we're going to transfer all RouterInfo files in one request, and this requires some kind of packaging. The first suggestion was the ZIP format since Java supports it native. But I disagree strongly in using a such advanced data structure for packing some files. What I want with this issue is to hear if any reading this has any purposal to an archive format?

I've been looking at CPIO and Tar for example. The key feature here is lightweight, and not magic functions with flying unicorns. ZIP is in other words an overkill format with too much functions vs. what we need from it.

Orignal, what do you think? I want to find a archive format that both i2pd and the java i2p router can read easily without a bunch of libraries.

/Meeh

Работает ли i2pd как полноценный узел?

Собственно вопрос - работает ли данный демон как полноценный I2P узел т.е пропуская через себя транзитный трафик, если да - то где настройки по скорости?

Gitian scripts

Gitian scripts for release building agains Win32, OSX and Linux (static, 64/32)

Fyi, Meeh is working on "i2ptunnel"

Just wanted to give you a heads up that I've started on the "client" part. In other words classes to link i2p::stream::Stream to a configured tcp port. I will commit when I got something, but it might take a while since I need to learn the ASIO library better. Still learning C++ in depth.

My initial design thoughts is close to this, if you change the server with the Stream object. http://www.partow.net/programming/tcpproxy/index.html

Linking CXX executable i2pd

cmake version 2.8.12.2
GNU Make 3.82
Built for x86_64-pc-linux-gnu
sys-libs/glibc 2.17

Linking CXX executable i2pd
CMakeFiles/i2pd.dir/root/src/i2pd/Garlic.cpp.o: In function i2p::garlic::GarlicRoutingSession::CreateAESBlock(unsigned char*, i2p::I2NPMessage const*, i2p::I2NPMessage const*)': Garlic.cpp:(.text+0xb1a): undefined reference toi2p::crypto::CBCEncryption::Encrypt(unsigned char const_, unsigned long, unsigned char_)'
CMakeFiles/i2pd.dir/root/src/i2pd/Garlic.cpp.o: In function i2p::garlic::GarlicRouting::ProcessGarlicMessage(i2p::I2NPMessage*)': Garlic.cpp:(.text+0x17fc): undefined reference toi2p::crypto::CBCDecryption::Decrypt(unsigned char const_, unsigned long, unsigned char_)'
Garlic.cpp:(.text+0x19c2): undefined reference to i2p::crypto::CBCDecryption::Decrypt(unsigned char const*, unsigned long, unsigned char*)' CMakeFiles/i2pd.dir/root/src/i2pd/Garlic.cpp.o: In functioni2p::crypto::ElGamalEncryption::ElGamalEncryption(unsigned char const_)':
Garlic.cpp:(.text.ZN3i2p6crypto17ElGamalEncryptionC2EPKh[ZN3i2p6crypto17ElGamalEncryptionC5EPKh]+0x71): undefined reference to i2p::crypto::elgp' Garlic.cpp:(.text._ZN3i2p6crypto17ElGamalEncryptionC2EPKh[_ZN3i2p6crypto17ElGamalEncryptionC5EPKh]+0xdb): undefined reference toi2p::crypto::elgp'
Garlic.cpp:(.text.ZN3i2p6crypto17ElGamalEncryptionC2EPKh[ZN3i2p6crypto17ElGamalEncryptionC5EPKh]+0xe0): undefined reference to i2p::crypto::elgg' Garlic.cpp:(.text._ZN3i2p6crypto17ElGamalEncryptionC2EPKh[_ZN3i2p6crypto17ElGamalEncryptionC5EPKh]+0x10a): undefined reference toi2p::crypto::elgp'
CMakeFiles/i2pd.dir/root/src/i2pd/Garlic.cpp.o: In function i2p::crypto::ElGamalEncryption::Encrypt(unsigned char const_, int, unsigned char_, bool)': Garlic.cpp:(.text._ZN3i2p6crypto17ElGamalEncryption7EncryptEPKhiPhb[i2p::crypto::ElGamalEncryption::Encrypt(unsigned char const_, int, unsigned char_, bool)]+0xf6): undefined reference to
i2p::crypto::elgp'
CMakeFiles/i2pd.dir/root/src/i2pd/Garlic.cpp.o: In functioni2p::crypto::ElGamalDecrypt(unsigned char const_, unsigned char const_, unsigned char_, bool)': Garlic.cpp:(.text._ZN3i2p6crypto14ElGamalDecryptEPKhS2_Phb[i2p::crypto::ElGamalDecrypt(unsigned char const_, unsigned char const_, unsigned char_, bool)]+0xe0): undefined reference to i2p:
:crypto::elgp'
Garlic.cpp:(.text.ZN3i2p6crypto14ElGamalDecryptEPKhS2_Phb[i2p::crypto::ElGamalDecrypt(unsigned char const, unsigned char const
, unsigned char
, bool)]+0x122): undefined reference to i2p ::crypto::elgp' Garlic.cpp:(.text._ZN3i2p6crypto14ElGamalDecryptEPKhS2_Phb[i2p::crypto::ElGamalDecrypt(unsigned char const*, unsigned char const*, unsigned char*, bool)]+0x144): undefined reference toi2p
::crypto::elgp'
CMakeFiles/i2pd.dir/root/src/i2pd/Identity.cpp.o: In function i2p::data::CreateRandomKeys()': Identity.cpp:(.text+0x3f8): undefined reference toi2p::crypto::elgg'
Identity.cpp:(.text+0x3fd): undefined reference to i2p::crypto::elgp' Identity.cpp:(.text+0x462): undefined reference toi2p::crypto::dsag'
Identity.cpp:(.text+0x467): undefined reference to i2p::crypto::dsaq' Identity.cpp:(.text+0x46c): undefined reference toi2p::crypto::dsap'
CMakeFiles/i2pd.dir/root/src/i2pd/Identity.cpp.o: In function i2p::data::CreateRandomDHKeysPair(i2p::data::DHKeysPair*)': Identity.cpp:(.text+0x5d7): undefined reference toi2p::crypto::elgg'
Identity.cpp:(.text+0x5dc): undefined reference to i2p::crypto::elgp' CMakeFiles/i2pd.dir/root/src/i2pd/NTCPSession.cpp.o: In functioni2p::ntcp::NTCPSession::CreateAESKey(unsigned char
, unsigned char
)':
NTCPSession.cpp:(.text+0x50d): undefined reference to i2p::crypto::elgg' CMakeFiles/i2pd.dir/root/src/i2pd/NTCPSession.cpp.o: In functioni2p::ntcp::NTCPSession::CreateAESKey(unsigned char_, unsigned char_)': [47/1890]
NTCPSession.cpp:(.text+0x50d): undefined reference to i2p::crypto::elgg' NTCPSession.cpp:(.text+0x512): undefined reference toi2p::crypto::elgp'
CMakeFiles/i2pd.dir/root/src/i2pd/NTCPSession.cpp.o: In function i2p::ntcp::NTCPSession::SendPhase2()': NTCPSession.cpp:(.text+0x1032): undefined reference toi2p::crypto::CBCEncryption::Encrypt(unsigned char const_, unsigned long, unsigned char_)'
CMakeFiles/i2pd.dir/root/src/i2pd/NTCPSession.cpp.o: In function i2p::ntcp::NTCPSession::HandlePhase2Received(boost::system::error_code const&, unsigned long)': NTCPSession.cpp:(.text+0x13e8): undefined reference toi2p::crypto::CBCDecryption::Decrypt(unsigned char const_, unsigned long, unsigned char_)'
CMakeFiles/i2pd.dir/root/src/i2pd/NTCPSession.cpp.o: In function i2p::ntcp::NTCPSession::SendPhase3()': NTCPSession.cpp:(.text+0x16b5): undefined reference toi2p::crypto::CBCEncryption::Encrypt(unsigned char const_, unsigned long, unsigned char_)'
CMakeFiles/i2pd.dir/root/src/i2pd/NTCPSession.cpp.o: In function i2p::ntcp::NTCPSession::HandlePhase3Received(boost::system::error_code const&, unsigned long, unsigned int)': NTCPSession.cpp:(.text+0x1978): undefined reference toi2p::crypto::CBCDecryption::Decrypt(unsigned char const_, unsigned long, unsigned char_)'
NTCPSession.cpp:(.text+0x1aa5): undefined reference to i2p::crypto::dsag' NTCPSession.cpp:(.text+0x1aaa): undefined reference toi2p::crypto::dsaq'
NTCPSession.cpp:(.text+0x1aaf): undefined reference to i2p::crypto::dsap' CMakeFiles/i2pd.dir/root/src/i2pd/NTCPSession.cpp.o: In functioni2p::ntcp::NTCPSession::SendPhase4(unsigned int)':
NTCPSession.cpp:(.text+0x1d0b): undefined reference to i2p::crypto::CBCEncryption::Encrypt(unsigned char const*, unsigned long, unsigned char*)' CMakeFiles/i2pd.dir/root/src/i2pd/NTCPSession.cpp.o: In functioni2p::ntcp::NTCPSession::HandlePhase4Received(boost::system::error_code const&, unsigned long, unsigned int)':
NTCPSession.cpp:(.text+0x1f82): undefined reference to i2p::crypto::CBCDecryption::Decrypt(unsigned char const*, unsigned long, unsigned char*)' NTCPSession.cpp:(.text+0x2088): undefined reference toi2p::crypto::dsag'
NTCPSession.cpp:(.text+0x208d): undefined reference to i2p::crypto::dsaq' NTCPSession.cpp:(.text+0x2092): undefined reference toi2p::crypto::dsap'
CMakeFiles/i2pd.dir/root/src/i2pd/NTCPSession.cpp.o: In function i2p::ntcp::NTCPSession::DecryptNextBlock(unsigned char const*)': NTCPSession.cpp:(.text+0x2490): undefined reference toi2p::crypto::CBCDecryption::Decrypt(unsigned char const_, unsigned char_)'
NTCPSession.cpp:(.text+0x255f): undefined reference to i2p::crypto::CBCDecryption::Decrypt(unsigned char const*, unsigned char*)' CMakeFiles/i2pd.dir/root/src/i2pd/NTCPSession.cpp.o: In functioni2p::ntcp::NTCPSession::Send(i2p::I2NPMessage_)':
NTCPSession.cpp:(.text+0x2706): undefined reference to i2p::crypto::CBCEncryption::Encrypt(unsigned char const_, unsigned long, unsigned char_)' CMakeFiles/i2pd.dir/root/src/i2pd/RouterContext.cpp.o: In function i2p::RouterContext::CreateNewRouter()':
RouterContext.cpp:(.text+0x328): undefined reference toi2p::crypto::dsag' RouterContext.cpp:(.text+0x32d): undefined reference to i2p::crypto::dsaq'
RouterContext.cpp:(.text+0x332): undefined reference toi2p::crypto::dsap' CMakeFiles/i2pd.dir/root/src/i2pd/RouterContext.cpp.o: In function i2p::RouterContext::Load()':
RouterContext.cpp:(.text+0x846): undefined reference toi2p::crypto::dsag' RouterContext.cpp:(.text+0x84b): undefined reference to i2p::crypto::dsaq'
RouterContext.cpp:(.text+0x850): undefined reference toi2p::crypto::dsap' CMakeFiles/i2pd.dir/root/src/i2pd/SSU.cpp.o: In function i2p::ssu::SSUSession::CreateAESandMacKey(unsigned char const_)':
SSU.cpp:(.text+0x604): undefined reference to i2p::crypto::elgg' SSU.cpp:(.text+0x609): undefined reference toi2p::crypto::elgp'
CMakeFiles/i2pd.dir/root/src/i2pd/SSU.cpp.o: In function i2p::ssu::SSUSession::ProcessSessionCreated(unsigned char*, unsigned long)': SSU.cpp:(.text+0x1026): undefined reference toi2p::crypto::CBCDecryption::Decrypt(unsigned char const_, unsigned long, unsigned char_)'
SSU.cpp:(.text+0x1078): undefined reference to i2p::crypto::dsag' SSU.cpp:(.text+0x107d): undefined reference toi2p::crypto::dsaq'
SSU.cpp:(.text+0x1082): undefined reference to i2p::crypto::dsap' CMakeFiles/i2pd.dir/root/src/i2pd/SSU.cpp.o: In functioni2p::ssu::SSUSession::SendSessionCreated(unsigned char const_)':
SSU.cpp:(.text+0x1857): undefined reference to i2p::crypto::CBCEncryption::Encrypt(unsigned char const_, unsigned long, unsigned char_)' CMakeFiles/i2pd.dir/root/src/i2pd/SSU.cpp.o: In function i2p::ssu::SSUSession::FillHeaderAndEncrypt(unsigned char, unsigned char_, unsigned long, unsigned char const_, unsigned char const_
, unsigned char const_)':
SSU.cpp:(.text+0x23af): undefined reference to i2p::crypto::CBCEncryption::Encrypt(unsigned char const_, unsigned long, unsigned char_)' CMakeFiles/i2pd.dir/root/src/i2pd/SSU.cpp.o: In function i2p::ssu::SSUSession::FillHeaderAndEncrypt(unsigned char, unsigned char_, unsigned long)':
SSU.cpp:(.text+0x253b): undefined reference to i2p::crypto::CBCEncryption::Encrypt(unsigned char const*, unsigned long, unsigned char*)' CMakeFiles/i2pd.dir/root/src/i2pd/SSU.cpp.o: In functioni2p::ssu::SSUSession::FillHeaderAndEncrypt(unsigned char, unsigned char_, unsigned long)': [0/1890]
SSU.cpp:(.text+0x253b): undefined reference to i2p::crypto::CBCEncryption::Encrypt(unsigned char const_, unsigned long, unsigned char_)' CMakeFiles/i2pd.dir/root/src/i2pd/SSU.cpp.o: In function i2p::ssu::SSUSession::Decrypt(unsigned char_, unsigned long, unsigned char const_)':
SSU.cpp:(.text+0x268a): undefined reference to i2p::crypto::CBCDecryption::Decrypt(unsigned char const_, unsigned long, unsigned char_)' CMakeFiles/i2pd.dir/root/src/i2pd/SSU.cpp.o: In function i2p::ssu::SSUSession::DecryptSessionKey(unsigned char_, unsigned long)':
SSU.cpp:(.text+0x2764): undefined reference to i2p::crypto::CBCDecryption::Decrypt(unsigned char const*, unsigned long, unsigned char*)' CMakeFiles/i2pd.dir/root/src/i2pd/TransitTunnel.cpp.o: In functioni2p::tunnel::TransitTunnel::EncryptTunnelMsg(i2p::I2NPMessage_)':
TransitTunnel.cpp:(.text+0x32b): undefined reference to i2p::crypto::TunnelEncryption::Encrypt(unsigned char_)' CMakeFiles/i2pd.dir/root/src/i2pd/Tunnel.cpp.o: In function i2p::tunnel::Tunnel::Build(unsigned int, i2p::tunnel::OutboundTunnel*)':
Tunnel.cpp:(.text+0x7a1): undefined reference toi2p::crypto::CBCDecryption::Decrypt(unsigned char const_, unsigned long, unsigned char_)' CMakeFiles/i2pd.dir/root/src/i2pd/Tunnel.cpp.o: In function i2p::tunnel::Tunnel::HandleTunnelBuildResponse(unsigned char*, unsigned long)':
Tunnel.cpp:(.text+0x9bd): undefined reference toi2p::crypto::CBCDecryption::Decrypt(unsigned char const_, unsigned long, unsigned char_)' CMakeFiles/i2pd.dir/root/src/i2pd/Tunnel.cpp.o: In function i2p::tunnel::Tunnel::EncryptTunnelMsg(i2p::I2NPMessage*)':
Tunnel.cpp:(.text+0xbac): undefined reference toi2p::crypto::TunnelDecryption::Decrypt(unsigned char_)' CMakeFiles/i2pd.dir/root/src/i2pd/I2NPProtocol.cpp.o: In function i2p::HandleBuildRequestRecords(int, i2p::I2NPBuildRequestRecordElGamalEncrypted_, i2p::I2NPBuildRequestRecordClearText&)':
I2NPProtocol.cpp:(.text+0x106a): undefined reference to i2p::crypto::CBCEncryption::Encrypt(unsigned char const*, unsigned long, unsigned char*)' CMakeFiles/i2pd.dir/root/src/i2pd/LeaseSet.cpp.o: In functioni2p::data::LeaseSet::LeaseSet(unsigned char const*, int)':
LeaseSet.cpp:(.text+0x502): undefined reference to i2p::crypto::dsag' LeaseSet.cpp:(.text+0x507): undefined reference toi2p::crypto::dsaq'
LeaseSet.cpp:(.text+0x50c): undefined reference to i2p::crypto::dsap' CMakeFiles/i2pd.dir/root/src/i2pd/RouterInfo.cpp.o: In functioni2p::data::RouterInfo::ReadFromBuffer()':
RouterInfo.cpp:(.text+0x76d): undefined reference to i2p::crypto::dsag' RouterInfo.cpp:(.text+0x772): undefined reference toi2p::crypto::dsaq'
RouterInfo.cpp:(.text+0x777): undefined reference to i2p::crypto::dsap' CMakeFiles/i2pd.dir/root/src/i2pd/Streaming.cpp.o: In functioni2p::stream::StreamingDestination::StreamingDestination()':
Streaming.cpp:(.text+0x1447): undefined reference to i2p::crypto::dsag' Streaming.cpp:(.text+0x144c): undefined reference toi2p::crypto::dsaq'
Streaming.cpp:(.text+0x1451): undefined reference to i2p::crypto::dsap' Streaming.cpp:(.text+0x1471): undefined reference toi2p::crypto::elgg'
Streaming.cpp:(.text+0x1476): undefined reference to i2p::crypto::elgp' CMakeFiles/i2pd.dir/root/src/i2pd/Streaming.cpp.o: In functioni2p::stream::StreamingDestination::StreamingDestination(std::basic_string<char, std::char_traits, std::allocator

const&)':
Streaming.cpp:(.text+0x1739): undefined reference to i2p::crypto::dsag' Streaming.cpp:(.text+0x173e): undefined reference toi2p::crypto::dsaq'
Streaming.cpp:(.text+0x1743): undefined reference to i2p::crypto::dsap' Streaming.cpp:(.text+0x1763): undefined reference toi2p::crypto::elgg'
Streaming.cpp:(.text+0x1768): undefined reference to `i2p::crypto::elgp'
collect2: ld returned 1 exit status
make[2]: *** [i2pd] Error 1
make[1]: *** [CMakeFiles/i2pd.dir/all] Error 2
make: *** [all] Error 2

Несколько вопросов о коде

приветствую!

проект для меня крайне интересен, и я мельком взглянул в код дабы оценить его качество, и оказался несколько озадачен...

  1. насколько я понял, для сборки кода нужен компилятор, поддерживающий как минимум С++11. вопрос в том, что, раз уж используется С++11, то почему в коде столько сырых указателей? пример: https://github.com/PrivacySolutions/i2pd/blob/master/Destination.h#L79
  2. не могу понять, почему почти везде где я только смотрел, возвращаются указатели а не ссылки? пример: https://github.com/PrivacySolutions/i2pd/blob/master/Destination.h#L34
  3. есть ли хоть малейшая аргументация тому, что повсюду используются new/delete? - это же небезопасно!

в общем - есть желание "почистить" код, но хотелось бы понять, вдруг у автора сырые указатели и new/delete - принципиальная позиция?

зы
прошу простить меня, если мои вопросы кажутся провоцирующими и/или резкими.

Floodfill mode

Unsolicited DatabaseStore must be flooded if newer than one in local netDb

--help

Бинарник, запущенный с --help не обращает на нее внимания, и сразу начинает фигачить.
Это не безопасное и не ожидаемое поведение. Хорошо бы напечатать справочку по ключам, и exit().

P.S. Чтоб два раза не вставать: А чем мне сделать файлик с ключиком для опции --eepkeys ?

segmentation fault on ctrl-c

из gdb:

Program received signal SIGINT, Interrupt.
0x00007ffff6ad539d in nanosleep () from /lib64/libpthread.so.0
(gdb) bt
#0  0x00007ffff6ad539d in nanosleep () from /lib64/libpthread.so.0
#1  0x000000000043aaa1 in std::this_thread::sleep_for<long, std::ratio<1l, 1l> > (__rtime=...) at /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/include/g++-v4/thread:277
#2  0x0000000000439102 in main (argc=1, argv=0x7fffffffd748) at i2p.cpp:167

без gdb:

i2p: pthread_mutex_lock.c:317: __pthread_mutex_lock_full: Assertion `(-(e)) != 3 || !robust' failed.
Аварийный останов

Another crash related to transports

I found another crash that seems related to transports, but does not seem to be in relation to #29 (gdb backtrace at bottom)

Any clues?

Another note (not related): Seems like if an routerInfo contains a domain instead of an IP, i2pd will get an unexpected address, but this does not crash it.

Connect error: No route to host
NTCP session terminated
Connect error: No route to host
NTCP session terminated
Connect error: Connection timed out
NTCP session terminated
Exploring new routers ...
Msg sent: 1056
Msg sent: 1056
Connect error: Connection timed out
NTCP session terminated
Connect error: Connection timed out
NTCP session terminated
Connect error: Connection timed out
NTCP session terminated
No activity fo 60 seconds
Read error: Operation canceled
NTCP session terminated
Couldn't send msg: Operation canceled
i2p: /usr/include/cryptopp/secblock.h:197: void CryptoPP::FixedSizeAllocatorWithCleanup<T, S, A, T_Align16>::deallocate(void*, CryptoPP::FixedSizeAllocatorWithCleanup<T, S, A, T_Align16>::size_type) [with T = unsigned int; long unsigned int S = 60ul; A = CryptoPP::NullAllocator<unsigned int>; bool T_Align16 = true; CryptoPP::FixedSizeAllocatorWithCleanup<T, S, A, T_Align16>::size_type = long unsigned int]: Assertion `m_allocated' failed.

Program received signal SIGABRT, Aborted.
[Switching to Thread 0x7ffff227c700 (LWP 7412)]
0x00007ffff6273037 in raise () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) bt
#0  0x00007ffff6273037 in raise () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x00007ffff6276698 in abort () from /lib/x86_64-linux-gnu/libc.so.6
#2  0x00007ffff626be03 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#3  0x00007ffff626beb2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
#4  0x000000000044fd75 in CryptoPP::FixedSizeAllocatorWithCleanup<unsigned int, 60ul, CryptoPP::NullAllocator<unsigned int>, true>::deallocate (this=0x7fffe801f988, p=0x7fffe801f990, n=60) at /usr/include/cryptopp/secblock.h:197
#5  0x000000000044c651 in CryptoPP::SecBlock<unsigned int, CryptoPP::FixedSizeAllocatorWithCleanup<unsigned int, 60ul, CryptoPP::NullAllocator<unsigned int>, true> >::~SecBlock (this=0x7fffe801f988, __in_chrg=<optimized out>) at /usr/include/cryptopp/secblock.h:261
#6  0x0000000000447098 in CryptoPP::FixedSizeSecBlock<unsigned int, 60u, CryptoPP::FixedSizeAllocatorWithCleanup<unsigned int, 60ul, CryptoPP::NullAllocator<unsigned int>, true> >::~FixedSizeSecBlock (this=0x7fffe801f988, __in_chrg=<optimized out>)
    at /usr/include/cryptopp/secblock.h:422
#7  0x00000000004470b2 in CryptoPP::FixedSizeAlignedSecBlock<unsigned int, 60u, true>::~FixedSizeAlignedSecBlock (
    this=0x7fffe801f988, __in_chrg=<optimized out>) at /usr/include/cryptopp/secblock.h:429
#8  0x00000000004470e8 in CryptoPP::Rijndael::Base::~Base (this=0x7fffe801f970, __in_chrg=<optimized out>)
    at /usr/include/cryptopp/rijndael.h:21
#9  0x0000000000447815 in CryptoPP::Rijndael::Enc::~Enc (this=0x7fffe801f970, __in_chrg=<optimized out>)
    at /usr/include/cryptopp/rijndael.h:40
#10 0x0000000000447893 in CryptoPP::ClonableImpl<CryptoPP::BlockCipherFinal<(CryptoPP::CipherDir)0, CryptoPP::Rijndael::Enc>, CryptoPP::Rijndael::Enc>::~ClonableImpl (this=0x7fffe801f970, __in_chrg=<optimized out>) at /usr/include/cryptopp/simple.h:16
#11 0x0000000000447911 in CryptoPP::BlockCipherFinal<(CryptoPP::CipherDir)0, CryptoPP::Rijndael::Enc>::~BlockCipherFinal (
    this=0x7fffe801f970, __in_chrg=<optimized out>) at /usr/include/cryptopp/seckey.h:151
#12 0x0000000000447992 in CryptoPP::ObjectHolder<CryptoPP::BlockCipherFinal<(CryptoPP::CipherDir)0, CryptoPP::Rijndael::Enc> >::~ObjectHolder (this=0x7fffe801f970, __in_chrg=<optimized out>) at /usr/include/cryptopp/misc.h:83
#13 0x0000000000457a00 in CryptoPP::CipherModeFinalTemplate_CipherHolder<CryptoPP::BlockCipherFinal<(CryptoPP::CipherDir)0, CryptoPP::Rijndael::Enc>, CryptoPP::CBC_Encryption>::~CipherModeFinalTemplate_CipherHolder (this=0x7fffe801f928, __in_chrg=<optimized out>)
    at /usr/include/cryptopp/modes.h:248
#14 0x0000000000442334 in i2p::ntcp::NTCPSession::~NTCPSession (this=0x7fffe801f730, __in_chrg=<optimized out>) at NTCPSession.h:69
#15 0x00000000004423e6 in i2p::ntcp::NTCPSession::~NTCPSession (this=0x7fffe801f730, __in_chrg=<optimized out>) at NTCPSession.h:69
#16 0x0000000000436c97 in i2p::ntcp::NTCPSession::Terminate (this=0x7fffe801f730) at NTCPSession.cpp:58
#17 0x0000000000438f08 in i2p::ntcp::NTCPSession::HandleSent (this=0x7fffe801f730, ecode=..., bytes_transferred=0, 
    msg=0x7fffdc08a430) at NTCPSession.cpp:477
#18 0x0000000000453e97 in boost::_mfi::mf3<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long, i2p::I2NPMessage*>::operator() (this=0x7ffff227bb08, p=0x7fffe801f730, a1=..., a2=0, a3=0x7fffdc08a430)
    at /usr/local/include/boost/bind/mem_fn_template.hpp:393
#19 0x0000000000452287 in boost::_bi::list4<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)(), boost::_bi::value<i2p::I2NPMessage*> >::operator()<boost::_mfi::mf3<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long, i2p::I2NPMessage*>, boost::_bi::list2<boost::system::error_code const&, unsigned long const&> > (this=0x7ffff227bb18, 
    f=..., a=...) at /usr/local/include/boost/bind/bind.hpp:457
#20 0x00000000004505a6 in boost::_bi::bind_t<void, boost::_mfi::mf3<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long, i2p::I2NPMessage*>, boost::_bi::list4<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)(---Type <return> to continue, or q <return> to quit---
), boost::_bi::value<i2p::I2NPMessage*> > >::operator()<boost::system::error_code, unsigned long> (this=0x7ffff227bb08, a1=..., 
    a2=@0x7ffff227bb00: 0) at /usr/local/include/boost/bind/bind_template.hpp:102
#21 0x000000000044da68 in boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, boost::asio::mutable_buffers_1, boost::asio::detail::transfer_all_t, boost::_bi::bind_t<void, boost::_mfi::mf3<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long, i2p::I2NPMessage*>, boost::_bi::list4<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)(), boost::_bi::value<i2p::I2NPMessage*> > > >::operator() (this=0x7ffff227bae0, ec=..., bytes_transferred=0, start=0) at /usr/local/include/boost/asio/impl/write.hpp:269
#22 0x0000000000457720 in boost::asio::detail::binder2<boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, boost::asio::mutable_buffers_1, boost::asio::detail::transfer_all_t, boost::_bi::bind_t<void, boost::_mfi::mf3<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long, i2p::I2NPMessage*>, boost::_bi::list4<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)(), boost::_bi::value<i2p::I2NPMessage*> > > >, boost::system::error_code, unsigned long>::operator() (this=0x7ffff227bae0)
    at /usr/local/include/boost/asio/detail/bind_handler.hpp:127
#23 0x0000000000457517 in boost::asio::asio_handler_invoke<boost::asio::detail::binder2<boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, boost::asio::mutable_buffers_1, boost::asio::detail::transfer_all_t, boost::_bi::bind_t<void, boost::_mfi::mf3<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long, i2p::I2NPMessage*>, boost::_bi::list4<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)(), boost::_bi::value<i2p::I2NPMessage*> > > >, boost::system::error_code, unsigned long> > (function=...)
    at /usr/local/include/boost/asio/handler_invoke_hook.hpp:69
#24 0x000000000045724e in boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder2<boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, boost::asio::mutable_buffers_1, boost::asio::detail::transfer_all_t, boost::_bi::bind_t<void, boost::_mfi::mf3<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long, i2p::I2NPMessage*>, boost::_bi::list4<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)(), boost::_bi::value<i2p::I2NPMessage*> > > >, boost::system::error_code, unsigned long>, boost::_bi::bind_t<void, boost::_mfi::mf3<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long, i2p::I2NPMessage*>, boost::_bi::list4<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)(), boost::_bi::value<i2p::I2NPMessage*> > > > (
    function=..., context=...) at /usr/local/include/boost/asio/detail/handler_invoke_helpers.hpp:37
#25 0x0000000000456fdd in boost::asio::detail::asio_handler_invoke<boost::asio::detail::binder2<boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, boost::asio::mutable_buffers_1, boost::asio::detail::transfer_all_t, boost::_bi::bind_t<void, boost::_mfi::mf3<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long, i2p::I2NPMessage*>, boost::_bi::list4<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)(), boost::_bi::value<i2p::I2NPMessage*> > > >, boost::system::error_code, unsigned long>, boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, boost::asio::mutable_buffers_1, boost::asio::detail::transfer_all_t, boost::_bi::bind_t<void, boost::_mfi::mf3<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long, i2p::I2NPMessage*>, boost::_bi::list4<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)(), boost::_bi::value<i2p::I2NPMessage*> > > > (function=..., this_handler=0x7ffff227bae0)
    at /usr/local/include/boost/asio/impl/write.hpp:565
#26 0x0000000000456cdd in boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder2<boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, boost::asio::mutable_buffers_1, boost::asio::detail::transfer_all_t, boost::_bi::bind_t<void, boost::_mfi::mf3<void, i2p::ntcp::NTCPSession, boost::system::erro---Type <return> to continue, or q <return> to quit---
r_code const&, unsigned long, i2p::I2NPMessage*>, boost::_bi::list4<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)(), boost::_bi::value<i2p::I2NPMessage*> > > >, boost::system::error_code, unsigned long>, boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, boost::asio::mutable_buffers_1, boost::asio::detail::transfer_all_t, boost::_bi::bind_t<void, boost::_mfi::mf3<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long, i2p::I2NPMessage*>, boost::_bi::list4<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)(), boost::_bi::value<i2p::I2NPMessage*> > > > > (function=..., context=...)
    at /usr/local/include/boost/asio/detail/handler_invoke_helpers.hpp:37
#27 0x000000000045651b in boost::asio::detail::reactive_socket_send_op<boost::asio::mutable_buffers_1, boost::asio::detail::write_op<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >, boost::asio::mutable_buffers_1, boost::asio::detail::transfer_all_t, boost::_bi::bind_t<void, boost::_mfi::mf3<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long, i2p::I2NPMessage*>, boost::_bi::list4<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)(), boost::_bi::value<i2p::I2NPMessage*> > > > >::do_complete (owner=0x74c680, base=0x7fffe81419d0)
    at /usr/local/include/boost/asio/detail/reactive_socket_send_op.hpp:107
#28 0x000000000043cf16 in boost::asio::detail::task_io_service_operation::complete (this=0x7fffe81419d0, owner=..., ec=..., 
    bytes_transferred=0) at /usr/local/include/boost/asio/detail/task_io_service_operation.hpp:38
#29 0x0000000000463bcd in boost::asio::detail::task_io_service::do_run_one (this=0x74c680, lock=..., this_thread=..., ec=...)
    at /usr/local/include/boost/asio/detail/impl/task_io_service.ipp:384
#30 0x000000000046390b in boost::asio::detail::task_io_service::run (this=0x74c680, ec=...)
    at /usr/local/include/boost/asio/detail/impl/task_io_service.ipp:153
#31 0x0000000000463ead in boost::asio::io_service::run (this=0x74a330 <i2p::transports+16>)
    at /usr/local/include/boost/asio/impl/io_service.ipp:59
#32 0x00000000004623ad in i2p::Transports::Run (this=0x74a320 <i2p::transports>) at Transports.cpp:85
#33 0x000000000046a8cf in std::_Mem_fn<void (i2p::Transports::*)()>::operator() (this=0xd8d8f0, __object=0x74a320 <i2p::transports>)
    at /usr/include/c++/4.7/functional:554
#34 0x000000000046a82e in std::_Bind<std::_Mem_fn<void (i2p::Transports::*)()> (i2p::Transports*)>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) (this=0xd8d8f0, __args=...) at /usr/include/c++/4.7/functional:1156
#35 0x000000000046a7a0 in std::_Bind<std::_Mem_fn<void (i2p::Transports::*)()> (i2p::Transports*)>::operator()<, void>() (
    this=0xd8d8f0) at /usr/include/c++/4.7/functional:1215
#36 0x000000000046a72c in std::_Bind_simple<std::_Bind<std::_Mem_fn<void (i2p::Transports::*)()> (i2p::Transports*)> ()>::_M_invoke<>(std::_Index_tuple<>) (this=0xd8d8f0) at /usr/include/c++/4.7/functional:1598
#37 0x000000000046a679 in std::_Bind_simple<std::_Bind<std::_Mem_fn<void (i2p::Transports::*)()> (i2p::Transports*)> ()>::operator()() (this=0xd8d8f0) at /usr/include/c++/4.7/functional:1586
#38 0x000000000046a5f4 in std::thread::_Impl<std::_Bind_simple<std::_Bind<std::_Mem_fn<void (i2p::Transports::*)()> (i2p::Transports*)> ()> >::_M_run() (this=0xd8d8d8) at /usr/include/c++/4.7/thread:115
#39 0x00007ffff68cd9f0 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#40 0x00007ffff6b25f8e in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#41 0x00007ffff6336a0d in clone () from /lib/x86_64-linux-gnu/libc.so.6

Crash if no routers available and reseed failed

22:34:42/info - Version 0.4.0
22:34:42/info - data directory: /home/h/.i2pd
22:34:42/info - CMD parameters:
22:34:42/info - 0 ./build/tmp/i2pd
22:34:42/info - HTTP Server started
22:34:42/info - 0 routers loaded
22:34:42/info - 0 floodfills loaded
22:34:42/info - Reseeding from http://uk.reseed.i2p2.no/
22:34:42/info - Can't connect to http://uk.reseed.i2p2.no/
22:34:42/info - Reseed failed
22:34:42/info - 0 routers loaded
22:34:42/info - 0 floodfills loaded
22:34:42/info - Reseeding from http://ieb9oopo.mooo.com
22:34:42/info - Reseed failed [46/199]
22:34:42/info - 0 routers loaded
22:34:42/info - 0 floodfills loaded
22:34:42/info - Reseeding from http://uk.reseed.i2p2.no/
22:34:42/info - Can't connect to http://uk.reseed.i2p2.no/
22:34:42/info - Reseed failed
22:34:42/info - 0 routers loaded
22:34:42/info - 0 floodfills loaded
22:34:42/info - Reseeding from http://reseed.i2p-projekt.de/
22:34:42/info - Can't connect to http://reseed.i2p-projekt.de/
22:34:42/info - Reseed failed
22:34:42/info - 0 routers loaded
22:34:42/info - 0 floodfills loaded
22:34:42/info - Reseeding from http://netdb.i2p2.no/
22:34:42/info - Can't connect to http://netdb.i2p2.no/
22:34:42/info - Reseed failed
22:34:42/info - 0 routers loaded
22:34:42/info - 0 floodfills loaded
22:34:42/info - Reseeding from http://i2p.mooo.com/netDb/
22:34:42/info - Can't connect to http://i2p.mooo.com/netDb/
22:34:42/info - Reseed failed
22:34:42/info - 0 routers loaded
22:34:42/info - 0 floodfills loaded
22:34:42/info - Reseeding from http://193.150.121.66/netDb/
22:34:42/info - Can't connect to http://193.150.121.66/netDb/
22:34:42/info - Reseed failed
22:34:42/info - 0 routers loaded
22:34:42/info - 0 floodfills loaded
22:34:42/info - Reseeding from http://uk.reseed.i2p2.no/
22:34:42/info - Can't connect to http://uk.reseed.i2p2.no/
22:34:42/info - Reseed failed
22:34:42/info - 0 routers loaded
22:34:42/info - 0 floodfills loaded
22:34:42/info - Reseeding from http://cowpuncher.drollette.com/netdb/
22:34:42/info - Can't connect to http://cowpuncher.drollette.com/netdb/
22:34:42/info - Reseed failed
22:34:42/info - 0 routers loaded
22:34:42/info - 0 floodfills loaded
22:34:42/info - Reseeding from http://netdb.i2p2.no/
22:34:42/info - Can't connect to http://netdb.i2p2.no/
22:34:42/info - Reseed failed
22:34:42/info - 0 routers loaded
22:34:42/info - 0 floodfills loaded
22:34:42/info - NetDB started
22:34:42/info - Start listening UDP port 12251
22:34:42/info - Start listening TCP port 12251
22:34:42/info - Transports started
22:34:42/info - Tunnels started
22:34:42/info - HTTP Proxy started
22:34:42/info - SOCKS Proxy Started
22:34:42/info - Client started
22:34:42/info - --- socks4a run
22:34:44/info - Creating zero hops inbound tunnel...
22:34:44/info - I2NP msg received len=2657, type=23, msgID=0
22:34:44/info - VariableTunnelBuild
22:34:44/info - VariableTunnelBuild 5 records
22:34:44/info - Record 1 is ours
22:34:44/info - TransitTunnel gateway: 734851594 created
22:34:44/info - I2NP msg received len=2657, type=23, msgID=1362010400
22:34:44/info - VariableTunnelBuild
22:34:44/info - VariableTunnelBuild 5 records
22:34:44/info - VariableTunnelBuild reply for tunnel 1894165301
22:34:44/info - TunnelBuildResponse 5 records.
22:34:44/info - Ret code=0
22:34:44/info - Inbound tunnel 1894165301 has been created
22:34:44/info - I2NP msg received len=2657, type=23, msgID=1
22:34:44/info - VariableTunnelBuild
22:34:44/info - VariableTunnelBuild 5 records
22:34:44/info - Record 3 is ours
22:34:44/info - TransitTunnel endpoint: 1392230752 created
22:34:44/info - TunnelGateway
22:34:44/info - TunnelGateway of 2657 bytes for tunnel 734851594. Msg type 24
22:34:44/info - TunnelData
22:34:44/info - TunnelData
22:34:44/info - TunnelData
22:34:44/info - Creating one hop outbound tunnel...
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff17dd700 (LWP 15470)]
0x000055555572ef6a in i2p::tunnel::Tunnel::Build(unsigned int, i2p::tunnel::OutboundTunnel_) ()
(gdb) bt
#0 0x000055555572ef6a in i2p::tunnel::Tunnel::Build(unsigned int, i2p::tunnel::OutboundTunnel_) ()
#1 0x0000555555733c0d in i2p::tunnel::OutboundTunnel* i2p::tunnel::Tunnels::CreateTunneli2p::tunnel::OutboundTunnel(i2p::tunnel::TunnelConfig_, i2p::tunnel::OutboundTunnel_) ()
#2 0x00005555557305a0 in i2p::tunnel::Tunnels::ManageOutboundTunnels() ()
#3 0x0000555555730bbe in i2p::tunnel::Tunnels::Run() ()
#4 0x00007ffff7274400 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5 0x00007ffff74cbb50 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#6 0x00007ffff6a767bd in clone () from /lib/x86_64-linux-gnu/libc.so.6
#7 0x0000000000000000 in ?? ()

Possible bug (errors in java router)

<@zzz> orion, orignal, getting reports of errors on java routers, possibly originating from i2pd or i2pcpp, please check:
<@zzz> 1) tunnel followon fragments with fragment number 0;
<@zzz> 2) database store messages where the hash does not match the included leaseset/routerinfo
<@zzz> thanks

Необходимо ввести стандартизацию

Думаю будет нелишнем написать принцип оформления кода и его комментирования.
Нужность этого действия неоспорима и в обсуждении не нуждается, а вот правила стандарта предлагаю обсудить здесь.

Ищу TODO по проекту

Привет.
Хочу присоединит, но с принципами i2p не знаком и не вижу списка TODO.
Может набросаешь?

Assertion failed secblock.h:197

latest commit 692cde5, CentOS7.

23:21:57/info - DatabaseStore
23:21:57/info - RouterInfo
23:21:57/info - RouterInfo updated
^C
23:21:57/info - Shutdown started.
23:21:57/info - HTTP Proxy stoped
23:21:57/info - SOCKS Proxy stoped
23:21:57/info - Client stoped
23:21:57/info - Tunnels stoped
23:21:57/debug - SSU session destroyed sent
23:21:57/debug - SSU session destroyed sent
23:21:57/debug - SSU session destroyed sent
23:21:57/debug - SSU session destroyed sent
23:21:57/debug - SSU session destroyed sent
23:21:57/debug - SSU session destroyed sent
23:21:57/debug - SSU session destroyed sent
23:21:57/debug - SSU session destroyed sent
23:21:57/debug - SSU session destroyed sent
i2p: /usr/include/cryptopp/secblock.h:197: void CryptoPP::FixedSizeAllocatorWithCleanup<T, S, A, T_Align16>::deallocate(void*, CryptoPP::FixedSizeAllocatorWithCleanup<T, S, A, T_Align16>::size_type) [with T = unsigned int; long unsigned int S = 60ul; A = CryptoPP::NullAllocator; bool T_Align16 = true; CryptoPP::FixedSizeAllocatorWithCleanup<T, S, A, T_Align16>::size_type = long unsigned int]: Assertion `m_allocated' failed.
Aborted
[i2pd@i2p ~]$

CI for OSX, FreeBSD, Windows and RaspberryPi

I've found out I can setup CI for all systems above, including ofc. Linux too if needed. What do you think of that? We would probably need to move the i2pd project into the I2P org. or create a new one for that sake, since I will need access to the git triggers on this repository AFAIK. Maybe github got a API that removes the need of that, I can check it out if you sounds like a good idea to setup CI for all systems. (I got the servers needed)

Crash after transport error.

I've seen this error sometimes now, finally I catched it while running in gdb.

Unsure where to go from here, but it seems to happen because of an unexpected close of transport.

Phase 1 sent: 288
Phase 2 received: 304
Phase 3 sent: 448
Phase 4 received: 48
NTCP session connected
Msg sent: 16
Msg sent: 656
Msg sent: 560
Exploring new routers ...
Msg sent: 1056
Msg sent: 1056
1 routers deleted
[Thread 0x7ffff1a7b700 (LWP 30903) exited]
Read error: Operation canceled
Transports: close: Bad file descriptor
Read error: Operation canceled

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff227c700 (LWP 30902)]
0x00000000004451a7 in boost::system::error_code::operator=<boost::asio::error::basic_errors> (
    this=<error reading variable: Could not find the frame base for "boost::system::error_code::operator=<boost::asio::error::basic_errors>(boost::asio::error::basic_errors)".>, 
    val=<error reading variable: Could not find the frame base for "boost::system::error_code::operator=<boost::asio::error::basic_errors>(boost::asio::error::basic_errors)".>) at /usr/local/include/boost/system/error_code.hpp:344
344         *this = make_error_code(val);
(gdb) 
(gdb) 
(gdb) bt
#0  0x00000000004451a7 in boost::system::error_code::operator=<boost::asio::error::basic_errors> (
    this=<error reading variable: Could not find the frame base for "boost::system::error_code::operator=<boost::asio::error::basic_errors>(boost::asio::error::basic_errors)".>, 
    val=<error reading variable: Could not find the frame base for "boost::system::error_code::operator=<boost::asio::error::basic_errors>(boost::asio::error::basic_errors)".>) at /usr/local/include/boost/system/error_code.hpp:344
#1  0x000000000043e17a in boost::asio::detail::epoll_reactor::deregister_descriptor (
    this=<error reading variable: Could not find the frame base for "boost::asio::detail::epoll_reactor::deregister_descriptor(int, boost::asio::detail::epoll_reactor::descriptor_state*&, bool)".>, 
    descriptor=<error reading variable: Could not find the frame base for "boost::asio::detail::epoll_reactor::deregister_descriptor(int, boost::asio::detail::epoll_reactor::descriptor_state*&, bool)".>, 
    descriptor_data=<error reading variable: Could not find the frame base for "boost::asio::detail::epoll_reactor::deregister_descriptor(int, boost::asio::detail::epoll_reactor::descriptor_state*&, bool)".>, 
    closing=<error reading variable: Could not find the frame base for "boost::asio::detail::epoll_reactor::deregister_descriptor(int, boost::asio::detail::epoll_reactor::descriptor_state*&, bool)".>) at /usr/local/include/boost/asio/detail/impl/epoll_reactor.ipp:327
#2  0x0000000000440251 in boost::asio::detail::reactive_socket_service_base::close (
    this=<error reading variable: Could not find the frame base for "boost::asio::detail::reactive_socket_service_base::close(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, boost::system::error_code&)".>, 
    impl=<error reading variable: Could not find the frame base for "boost::asio::detail::reactive_socket_service_base::close(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, boost::system::error_code&)".>, 
    ec=<error reading variable: Could not find the frame base for "boost::asio::detail::reactive_socket_service_base::close(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, boost::system::error_code&)".>)
    at /usr/local/include/boost/asio/detail/impl/reactive_socket_service_base.ipp:104
#3  0x000000000044c7b9 in boost::asio::stream_socket_service<boost::asio::ip::tcp>::close (
    this=<error reading variable: Could not find the frame base for "boost::asio::stream_socket_service<boost::asio::ip::tcp>::close(boost::asio::detail::reactive_socket_service<boost::asio::ip::tcp>::implementation_type&, boost::system::error_code&)".>, 
    impl=<error reading variable: Could not find the frame base for "boost::asio::stream_socket_service<boost::asio::ip::tcp>::close(boost::asio::detail::reactive_socket_service<boost::asio::ip::tcp>::implementation_type&, boost::system::error_code&)".>, 
    ec=<error reading variable: Could not find the frame base for "boost::asio::stream_socket_service<boost::asio::ip::tcp>::close(boost::asio::detail::reactive_socket_service<boost::asio::ip::tcp>::implementation_type&, boost::system::error_code&)".>)
    at /usr/local/include/boost/asio/stream_socket_service.hpp:170
#4  0x000000000044826d in boost::asio::basic_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >::close (
    this=<error reading variable: Could not find the frame base for "boost::asio::basic_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >::close()".>) at /usr/local/include/boost/asio/basic_socket.hpp:356
#5  0x0000000000436be4 in i2p::ntcp::NTCPSession::Terminate (
    this=<error reading variable: Could not find the frame base for "i2p::ntcp::NTCPSession::Terminate()".>) at NTCPSession.cpp:52
#6  0x00000000004389cb in i2p::ntcp::NTCPSession::HandleReceived (
    this=<error reading variable: Could not find the frame base for "i2p::ntcp::NTCPSession::HandleReceived(boost::system::error_code const&, unsigned long)".>, 
    ecode=<error reading variable: Could not find the frame base for "i2p::ntcp::NTCPSession::HandleReceived(boost::system::error_code---Type <return> to continue, or q <return> to quit--- 
 const&, unsigned long)".>, 
    bytes_transferred=<error reading variable: Could not find the frame base for "i2p::ntcp::NTCPSession::HandleReceived(boost::system::error_code const&, unsigned long)".>) at NTCPSession.cpp:368
#7  0x0000000000453440 in boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>::operator()
    (
    this=<error reading variable: Could not find the frame base for "boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>::operator()(i2p::ntcp::NTCPSession*, boost::system::error_code const&, unsigned long) const".>, 
    p=<error reading variable: Could not find the frame base for "boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>::operator()(i2p::ntcp::NTCPSession*, boost::system::error_code const&, unsigned long) const".>, 
    a1=<error reading variable: Could not find the frame base for "boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>::operator()(i2p::ntcp::NTCPSession*, boost::system::error_code const&, unsigned long) const".>, 
    a2=<error reading variable: Could not find the frame base for "boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>::operator()(i2p::ntcp::NTCPSession*, boost::system::error_code const&, unsigned long) const".>)
    at /usr/local/include/boost/bind/mem_fn_template.hpp:280
#8  0x0000000000451e14 in boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()>::operator()<boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list2<boost::system::error_code const&, unsigned long const&> > (
    this=<error reading variable: Could not find the frame base for "boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()>::operator()<boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list2<boost::system::error_code const&, unsigned long const&> >(boost::_bi::type<void>, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>&, boost::_bi::list2<boost::system::error_code const&, unsigned long const&>&, int)".>, 
    f=<error reading variable: Could not find the frame base for "boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()>::operator()<boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list2<boost::system::error_code const&, unsigned long const&> >(boost::_bi::type<void>, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>&, boost::_bi::list2<boost::system::error_code const&, unsigned long const&>&, int)".>, 
    a=<error reading variable: Could not find the frame base for "boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()>::operator()<boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list2<boost::system::error_code const&, unsigned long const&> >(boost::_bi::type<void>, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>&, boost::_bi::list2<boost::system::error_code const&, unsigned long const&>&, int)".>) at /usr/local/include/boost/bind/bind.hpp:392
#9  0x000000000045008e in boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()> >::operator()<boost::system::error_code, unsigned long> (
    this=<error reading variable: Could not find the frame base for "boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()> >::operator()<boost::system::error_code, unsigned long>(boost::system::error_code const&, unsigned long const&)".>, 
    a1=<error reading variable: Could not find the frame base for "boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::ntcp::NTCPSess---Type <return> to continue, or q <return> to quit---
ion, boost::system::error_code const&, unsigned long>, boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()> >::operator()<boost::system::error_code, unsigned long>(boost::system::error_code const&, unsigned long const&)".>, 
    a2=<error reading variable: Could not find the frame base for "boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()> >::operator()<boost::system::error_code, unsigned long>(boost::system::error_code const&, unsigned long const&)".>) at /usr/local/include/boost/bind/bind_template.hpp:102
#10 0x0000000000456bc5 in boost::asio::detail::binder2<boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()> >, boost::system::error_code, unsigned long>::operator() (
    this=<error reading variable: Could not find the frame base for "boost::asio::detail::binder2<boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()> >, boost::system::error_code, unsigned long>::operator()()".>)
    at /usr/local/include/boost/asio/detail/bind_handler.hpp:127
#11 0x00000000004562c4 in boost::asio::asio_handler_invoke<boost::asio::detail::binder2<boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()> >, boost::system::error_code, unsigned long> > (
    function=<error reading variable: Could not find the frame base for "boost::asio::asio_handler_invoke<boost::asio::detail::binder2<boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()> >, boost::system::error_code, unsigned long> >(boost::asio::detail::binder2<boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()> >, boost::system::error_code, unsigned long>&, ...)".>) at /usr/local/include/boost/asio/handler_invoke_hook.hpp:69
#12 0x00000000004551e1 in boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder2<boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()> >, boost::system::error_code, unsigned long>, boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()> > > (
    function=<error reading variable: Could not find the frame base for "boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder2<boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()> >, boost::system::error_code, unsigned long>, boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()> > >(boost::asio::detail::binder2<boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()> >, boost::system::error_code, unsigned long>&, boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()> >&)".>, 
    context=<error reading variable: Could not find the frame base for "boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder2<boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()> >, boost::system::error_code, uns---Type <return> to continue, or q <return> to quit---
igned long>, boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()> > >(boost::asio::detail::binder2<boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()> >, boost::system::error_code, unsigned long>&, boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()> >&)".>)
    at /usr/local/include/boost/asio/detail/handler_invoke_helpers.hpp:37
#13 0x0000000000453b7d in boost::asio::detail::reactive_socket_recv_op<boost::asio::mutable_buffers_1, boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()> > >::do_complete (
    owner=<error reading variable: Could not find the frame base for "boost::asio::detail::reactive_socket_recv_op<boost::asio::mutable_buffers_1, boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()> > >::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned long)".>, 
    base=<error reading variable: Could not find the frame base for "boost::asio::detail::reactive_socket_recv_op<boost::asio::mutable_buffers_1, boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::ntcp::NTCPSession, boost::system::error_code const&, unsigned long>, boost::_bi::list3<boost::_bi::value<i2p::ntcp::NTCPSession*>, boost::arg<1> (*)(), boost::arg<2> (*)()> > >::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned long)".>)
    at /usr/local/include/boost/asio/detail/reactive_socket_recv_op.hpp:110
#14 0x000000000043cf16 in boost::asio::detail::task_io_service_operation::complete (
    this=<error reading variable: Could not find the frame base for "boost::asio::detail::task_io_service_operation::complete(boost::asio::detail::task_io_service&, boost::system::error_code const&, unsigned long)".>, 
    owner=<error reading variable: Could not find the frame base for "boost::asio::detail::task_io_service_operation::complete(boost::asio::detail::task_io_service&, boost::system::error_code const&, unsigned long)".>, 
    ec=<error reading variable: Could not find the frame base for "boost::asio::detail::task_io_service_operation::complete(boost::asio::detail::task_io_service&, boost::system::error_code const&, unsigned long)".>, 
    bytes_transferred=<error reading variable: Could not find the frame base for "boost::asio::detail::task_io_service_operation::complete(boost::asio::detail::task_io_service&, boost::system::error_code const&, unsigned long)".>)
    at /usr/local/include/boost/asio/detail/task_io_service_operation.hpp:38
#15 0x0000000000463ab5 in boost::asio::detail::task_io_service::do_run_one (
    this=<error reading variable: Could not find the frame base for "boost::asio::detail::task_io_service::do_run_one(boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex>&, boost::asio::detail::task_io_service_thread_info&, boost::system::error_code const&)".>, 
    lock=<error reading variable: Could not find the frame base for "boost::asio::detail::task_io_service::do_run_one(boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex>&, boost::asio::detail::task_io_service_thread_info&, boost::system::error_code const&)".>, 
    this_thread=<error reading variable: Could not find the frame base for "boost::asio::detail::task_io_service::do_run_one(boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex>&, boost::asio::detail::task_io_service_thread_info&, boost::system::error_code const&)".>, 
    ec=<error reading variable: Could not find the frame base for "boost::asio::detail::task_io_service::do_run_one(boost::asio::detai---Type <return> to continue, or q <return> to quit---
l::scoped_lock<boost::asio::detail::posix_mutex>&, boost::asio::detail::task_io_service_thread_info&, boost::system::error_code const&)".>) at /usr/local/include/boost/asio/detail/impl/task_io_service.ipp:384
#16 0x00000000004637f3 in boost::asio::detail::task_io_service::run (
    this=<error reading variable: Could not find the frame base for "boost::asio::detail::task_io_service::run(boost::system::error_code&)".>, 
    ec=<error reading variable: Could not find the frame base for "boost::asio::detail::task_io_service::run(boost::system::error_code&)".>) at /usr/local/include/boost/asio/detail/impl/task_io_service.ipp:153
#17 0x0000000000463d95 in boost::asio::io_service::run (
    this=<error reading variable: Could not find the frame base for "boost::asio::io_service::run()".>)
    at /usr/local/include/boost/asio/impl/io_service.ipp:59
#18 0x0000000000462295 in i2p::Transports::Run (
    this=<error reading variable: Could not find the frame base for "i2p::Transports::Run()".>) at Transports.cpp:85
#19 0x000000000046a7b7 in std::_Mem_fn<void (i2p::Transports::*)()>::operator() (
    this=<error reading variable: Could not find the frame base for "std::_Mem_fn<void (i2p::Transports::*)()>::operator()(i2p::Transports*) const".>, 
    __object=<error reading variable: Could not find the frame base for "std::_Mem_fn<void (i2p::Transports::*)()>::operator()(i2p::Transports*) const".>) at /usr/include/c++/4.7/functional:554
#20 0x000000000046a716 in std::_Bind<std::_Mem_fn<void (i2p::Transports::*)()> (i2p::Transports*)>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) (
    this=<error reading variable: Could not find the frame base for "std::_Bind<std::_Mem_fn<void (i2p::Transports::*)()> (i2p::Transports*)>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>)".>, 
    __args=<error reading variable: Could not find the frame base for "std::_Bind<std::_Mem_fn<void (i2p::Transports::*)()> (i2p::Transports*)>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>)".>) at /usr/include/c++/4.7/functional:1156
#21 0x000000000046a688 in std::_Bind<std::_Mem_fn<void (i2p::Transports::*)()> (i2p::Transports*)>::operator()<, void>() (
    this=<error reading variable: Could not find the frame base for "std::_Bind<std::_Mem_fn<void (i2p::Transports::*)()> (i2p::Transports*)>::operator()<, void>()".>) at /usr/include/c++/4.7/functional:1215
#22 0x000000000046a614 in std::_Bind_simple<std::_Bind<std::_Mem_fn<void (i2p::Transports::*)()> (i2p::Transports*)> ()>::_M_invoke<>(std::_Index_tuple<>) (
    this=<error reading variable: Could not find the frame base for "std::_Bind_simple<std::_Bind<std::_Mem_fn<void (i2p::Transports::*)()> (i2p::Transports*)> ()>::_M_invoke<>(std::_Index_tuple<>)".>) at /usr/include/c++/4.7/functional:1598
#23 0x000000000046a561 in std::_Bind_simple<std::_Bind<std::_Mem_fn<void (i2p::Transports::*)()> (i2p::Transports*)> ()>::operator()() (
    this=<error reading variable: Could not find the frame base for "std::_Bind_simple<std::_Bind<std::_Mem_fn<void (i2p::Transports::*)()> (i2p::Transports*)> ()>::operator()()".>) at /usr/include/c++/4.7/functional:1586
#24 0x000000000046a4dc in std::thread::_Impl<std::_Bind_simple<std::_Bind<std::_Mem_fn<void (i2p::Transports::*)()> (i2p::Transports*)> ()> >::_M_run() (
    this=<error reading variable: Could not find the frame base for "std::thread::_Impl<std::_Bind_simple<std::_Bind<std::_Mem_fn<void (i2p::Transports::*)()> (i2p::Transports*)> ()> >::_M_run()".>) at /usr/include/c++/4.7/thread:115
#25 0x00007ffff68cd9f0 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#26 0x00007ffff6b25f8e in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
---Type <return> to continue, or q <return> to quit---
#27 0x00007ffff6336a0d in clone () from /lib/x86_64-linux-gnu/libc.so.6

OS X Error

MacBook-Pro:i2pd Shift$ make -j 2
mkdir -p obj
g++ -o obj/i2p.o i2p.cpp -c -g -Wall -std=c++0x
g++ -o obj/base64.o base64.cpp -c -g -Wall -std=c++0x
g++ -o obj/NTCPSession.o NTCPSession.cpp -c -g -Wall -std=c++0x
NTCPSession.cpp:5:10: fatal error: 'cryptopp/dh.h' file not found

include <cryptopp/dh.h>

     ^

i2p.cpp:7:10: fatal error: 'cryptopp/integer.h' file not found

include <cryptopp/integer.h>

     ^

1 error generated.
make: *** [obj/NTCPSession.o] Error 1
make: *** Waiting for unfinished jobs....
1 error generated.
make: *** [obj/i2p.o] Error 1

Ubuntu 14.04.1 LTS not building

~$ git clone https://github.com/PrivacySolutions/i2pd.git
Cloning into 'i2pd'...
remote: Counting objects: 5862, done.
remote: Compressing objects: 100% (117/117), done.
Receiving objects: 100% (5862/5862), 2.10 MiB | 1.23 MiB/s, done.
remote: Total 5862 (delta 59), reused 1 (delta 0)
Resolving deltas: 100% (4079/4079), done.
Checking connectivity... done.
~$ cd i2pd/
~/i2pd$ make
test -d obj || mkdir obj
g++ -g -Wall -fPIC -std=c++11 -c -o obj/AddressBook.o AddressBook.cpp
AddressBook.cpp:10:28: fatal error: cryptopp/osrng.h: No such file or directory
#include <cryptopp/osrng.h>
^
compilation terminated.
make: *** [obj/AddressBook.o] Error 1

uname -a
Linux cjdns.ru 3.8.0-29-generic #42~precise1-Ubuntu SMP Wed Aug 14 16:19:23 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

Script-able interface

I've been playing with the idea to have an script-able interface for statistics retrieval, triggers on i2p events and control of i2pd (for example beeing able to create client tunnels, keys, etc).

And my idea was to use mruby. Much because I don't program Lua, and it seems too big. mruby is really lightweight, but again strong because of the Ruby syntax. Do you have any opinions here? (Good idea/Waste of time?) It would ofc. be worked on in a own branch.

https://github.com/mruby/mruby

Комментарий к второй части статьи.

На хабре я опять read-only, поэтому спрошу здесь. Как работает HTTP over I2P, если в данных требуется содержать возвратный адрес. Машрутизатор инспектирует траффик(в прокси), и добавляет заголовок?

Implement datagram library

Streaming.cpp line 552
if (buf[9] == 6) // streaming protocol

Should support type 17 - Datagram as well

SIGSEGV Identity.cpp:132

....

22:57:22/info - DatabaseStore
22:57:22/info - RouterInfo
22:57:22/info - DatabaseStore
22:57:22/info - RouterInfo
22:57:22/info - RouterInfo updated
22:57:22/info - DatabaseStore
22:57:22/info - RouterInfo
22:57:22/info - RouterInfo updated
22:57:22/info - DatabaseStore
22:57:22/info - RouterInfo
22:57:22/info - RouterInfo updated
22:57:22/info - Phase 2 received: 304
22:57:22/info - Phase 3 sent: 448
22:57:22/info - Phase 4 received: 48
22:57:22/info - NTCP session connected
22:57:23/info - DatabaseStore
22:57:23/info - RouterInfo
22:57:23/info - RouterInfo updated
Bad header line: GET http://forum.rus.i2p/ HTTP/1.1
22:57:24/info - method is: GET
Request is: http://forum.rus.i2p/
22:57:24/info - server is: forum.rus.i2p port is: 80
path is: /
22:57:24/info - Requesting forum.rus.i2p:80 with path / and method GET

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffe57fa700 (LWP 11740)]
__memcpy_sse2 () at ../sysdeps/x86_64/memcpy.S:272
272 rep
(gdb) bt
#0 __memcpy_sse2 () at ../sysdeps/x86_64/memcpy.S:272
#1 0x00000000004e1e49 in i2p::data::IdentityEx::FromBuffer (this=0x7fffe57f9100, buf=0x7fffe57f8ec0 "\020\217\177\345\377\177", len=18446744073709551615) at Identity.cpp:132
#2 0x00000000004e206d in i2p::data::IdentityEx::FromBase64 (this=0x7fffe57f9100,

s="CRayYfxrPBELUQ4tYi723g8atsyHwkR0--N8fXggNqJgHsnrKxle0ovH5qj6aqUGToay4ktJEz~opIV2lF605gdGE9rSrPONOU0v737~gzjmLpJoyW03yOhr6lGvTxTKWjgx5xRHctt11DEMlMufY4Q72~EZETE4k5E45V3YqSWGyYIzxdpzzw9zvMe9TaLZTs0ZYFgX"...) at Identity.cpp:159

#3 0x000000000052ee49 in i2p::client::AddressBook::LoadHosts (this=0x82a0e0 i2p::client::context+96) at AddressBook.cpp:122
#4 0x000000000052e85d in i2p::client::AddressBook::FindAddress (this=0x82a0e0 i2p::client::context+96, address="forum.rus.i2p") at AddressBook.cpp:48
#5 0x000000000052e7ee in i2p::client::AddressBook::GetIdentHash (this=0x82a0e0 i2p::client::context+96, address="forum.rus.i2p", ident=...) at AddressBook.cpp:34
#6 0x00000000004c6a4e in i2p::util::HTTPConnection::SendToAddress (this=0x7fffcc000960, address="forum.rus.i2p", port=80,

buf=0x7fffcc0009b8 "GET http://forum.rus.i2p/ HTTP/1.1\r\nHost: forum.rus.i2p\r\nUser-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:16.0) Gecko/20100101 Firefox/16.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9"..., len=387) at HTTPServer.cpp:854

#7 0x000000000052cf50 in i2p::proxy::HTTPProxyConnection::RunRequest (this=0x7fffcc000960) at HTTPProxy.cpp:82
#8 0x00000000004c46ca in i2p::util::HTTPConnection::HandleReceive (this=0x7fffcc000960, ecode=..., bytes_transferred=387) at HTTPServer.cpp:542
#9 0x00000000004ce178 in boost::_mfi::mf2<void, i2p::util::HTTPConnection, boost::system::error_code const&, unsigned long>::operator() (this=0x7fffe57f9a80, p=0x7fffcc000960, a1=..., a2=387)

at /usr/include/boost/bind/mem_fn_template.hpp:280

#10 0x00000000004d13b8 in boost::bi::list3boost::bi::value<i2p::util::HTTPConnection*, boost::arg<1> ()(), boost::arg<2> ()()>::operator()<boost::_mfi::mf2<void, i2p::util::HTTPConnection, boost::system::error_code const&, unsigned long>, boost::_bi::list2<boost::system::error_code const&, unsigned long const&> > (this=0x7fffe57f9a90, f=..., a=...) at /usr/include/boost/bind/bind.hpp:392
#11 0x00000000004d0e40 in boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::util::HTTPConnection, boost::system::error_code const&, unsigned long>, boost::bi::list3boost::bi::value<i2p::util::HTTPConnection*, boost::arg<1> ()(), boost::arg<2> ()()> >::operator()<boost::system::error_code, unsigned long> (this=0x7fffe57f9a80, a1=..., a2=@0x7fffe57f9aa8: 387) at /usr/include/boost/bind/bind_template.hpp:102
#12 0x00000000004d07d1 in boost::asio::detail::binder2<boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::util::HTTPConnection, boost::system::error_code const&, unsigned long>, boost::bi::list3boost::bi::value<i2p::util::HTTPConnection*, boost::arg<1> ()(), boost::arg<2> ()()> >, boost::system::error_code, unsigned long>::operator() (this=0x7fffe57f9a80)

at /usr/include/boost/asio/detail/bind_handler.hpp:118

#13 0x00000000004cfbd5 in boost::asio::asio_handler_invoke<boost::asio::detail::binder2<boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::util::HTTPConnection, boost::system::error_code const&, unsigned long>, boost::bi::list3boost::bi::value<i2p::util::HTTPConnection*, boost::arg<1> ()(), boost::arg<2> ()()> >, boost::system::error_code, unsigned long> > (function=...)

at /usr/include/boost/asio/handler_invoke_hook.hpp:64

#14 0x00000000004cef98 in boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder2<boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::util::HTTPConnection, boost::system::error_code const&, unsigned long>, boost::bi::list3boost::bi::value<i2p::util::HTTPConnection*, boost::arg<1> ()(), boost::arg<2> ()()> >, boost::system::error_code, unsigned long>, boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::util::HTTPConnection, boost::system::error_code const&, unsigned long>, boost::bi::list3boost::bi::value<i2p::util::HTTPConnection*, boost::arg<1> ()(), boost::arg<2> ()()> > > (function=...,

context=...) at /usr/include/boost/asio/detail/handler_invoke_helpers.hpp:39

#15 0x00000000004cdd9b in boost::asio::detail::reactive_socket_recv_op<boost::asio::mutable_buffers_1, boost::_bi::bind_t<void, boost::_mfi::mf2<void, i2p::util::HTTPConnection, boost::system::error_code const&, unsigned long>, boost::bi::list3boost::bi::value<i2p::util::HTTPConnection*, boost::arg<1> ()(), boost::arg<2> ()()> > >::do_complete (owner=0x842030, base=0x844b40)

at /usr/include/boost/asio/detail/reactive_socket_recv_op.hpp:110

#16 0x0000000000446160 in boost::asio::detail::task_io_service_operation::complete (this=0x844b40, owner=..., ec=..., bytes_transferred=0) at /usr/include/boost/asio/detail/task_io_service_operation.hpp:37
#17 0x0000000000447b15 in boost::asio::detail::epoll_reactor::descriptor_state::do_complete (owner=0x842030, base=0x7fffcc0008c0, ec=..., bytes_transferred=1)

at /usr/include/boost/asio/detail/impl/epoll_reactor.ipp:650

#18 0x0000000000446160 in boost::asio::detail::task_io_service_operation::complete (this=0x7fffcc0008c0, owner=..., ec=..., bytes_transferred=1)

at /usr/include/boost/asio/detail/task_io_service_operation.hpp:37

#19 0x0000000000474623 in boost::asio::detail::task_io_service::do_run_one (this=0x842030, lock=..., this_thread=..., ec=...) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:412
#20 0x0000000000474379 in boost::asio::detail::task_io_service::run (this=0x842030, ec=...) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:153
#21 0x00000000004748e1 in boost::asio::io_service::run (this=0x8485e0) at /usr/include/boost/asio/impl/io_service.ipp:59
#22 0x00000000004c76e0 in i2p::util::HTTPServer::Run (this=0x8485d0) at HTTPServer.cpp:971
#23 0x00000000004d22f1 in std::_Mem_fn<void (i2p::util::HTTPServer::)()>::operator()<, void>(i2p::util::HTTPServer) const (this=0x846640, __object=0x8485d0) at /usr/include/c++/4.8.2/functional:601
#24 0x00000000004d2250 in std::_Bind<std::_Mem_fn<void (i2p::util::HTTPServer::)()> (i2p::util::HTTPServer)>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) (this=0x846640,

__args=<unknown type in /usr/local/sbin/i2p, CU 0x4354de, DIE 0x4b9722>) at /usr/include/c++/4.8.2/functional:1296

#25 0x00000000004d21c2 in std::_Bind<std::_Mem_fn<void (i2p::util::HTTPServer::)()> (i2p::util::HTTPServer)>::operator()<, void>() (this=0x846640) at /usr/include/c++/4.8.2/functional:1355
#26 0x00000000004d2154 in std::_Bind_simple<std::_Bind<std::_Mem_fn<void (i2p::util::HTTPServer::)()> (i2p::util::HTTPServer)> ()>::_M_invoke<>(std::_Index_tuple<>) (this=0x846640)

at /usr/include/c++/4.8.2/functional:1732

#27 0x00000000004d20a1 in std::_Bind_simple<std::_Bind<std::_Mem_fn<void (i2p::util::HTTPServer::)()> (i2p::util::HTTPServer)> ()>::operator()() (this=0x846640) at /usr/include/c++/4.8.2/functional:1720
#28 0x00000000004d203a in std::thread::_Impl<std::_Bind_simple<std::_Bind<std::_Mem_fn<void (i2p::util::HTTPServer::)()> (i2p::util::HTTPServer)> ()> >::_M_run() (this=0x846628)

at /usr/include/c++/4.8.2/thread:115

#29 0x00007ffff66afda0 in std::(anonymous namespace)::execute_native_thread_routine (__p=) at ../../../../../libstdc++-v3/src/c++11/thread.cc:84
#30 0x00007ffff6909df3 in start_thread (arg=0x7fffe57fa700) at pthread_create.c:308
#31 0x00007ffff5e1801d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

(gdb)

Profiling

Differentiate "good" and "bad" routers

[Win7] Crash on startup at Transports::Run() Line 173 + 0x11 bytes

I'm running Win 7 and compiled i2pd with visual studio 2013 (vc120) x64 bit (crypto++ and boost are x64 too). When I start i2pd console window becomes very small for some reason and text in it is unreadable and console cannot be scrolled up/down with middle mouse or resized. After short while it crashes with this message: Access violation 0x5 at 0x18.

Small unclear console

Below is the result of running i2pd in visual studio local debugger (other arguments yield same results)

Commit: 98e930b
debug arguments: --host=myipv6address --log=1 --service=0 --v6=1 --ircdest=irc.postman.i2p

Debug Output

7:38:21/info - Creating zero hops inbound tunnel...
7:38:21/info - Creating destination inbound tunnel...
7:38:21/info - I2NP msg received len=2657, type=23, msgID=0
7:38:21/info - VariableTunnelBuild
7:38:21/info - VariableTunnelBuild 5 records
7:38:21/info - Record 4 is ours
7:38:21/info - TransitTunnel gateway: 3496317626 created
7:38:21/info - I2NP msg received len=2657, type=23, msgID=368376533
7:38:21/info - VariableTunnelBuild
7:38:21/info - VariableTunnelBuild 5 records
7:38:21/info - VariableTunnelBuild reply for tunnel 679230028
7:38:21/info - TunnelBuildResponse 5 records.
7:38:21/info - Ret code=0
7:38:21/info - Inbound tunnel 679230028 has been created
7:38:21/info - I2NP msg received len=2657, type=23, msgID=1
7:38:21/info - VariableTunnelBuild
7:38:21/info - VariableTunnelBuild 5 records
7:38:21/info - Record 4 is ours
7:38:21/info - TransitTunnel endpoint: 1375811784 created
7:38:21/info - TunnelGateway
7:38:21/info - TunnelGateway of 2657 bytes for tunnel 3496317626. Msg type 24
7:38:21/info - TunnelData
7:38:21/info - TunnelData
7:38:21/info - TunnelData

Call Stack at crash

>   i2pd_d.exe!boost::asio::use_service<boost::asio::stream_socket_service<boost::asio::ip::tcp> >(boost::asio::io_service & ios)  Line 33 + 0x5 bytes  C++
    i2pd_d.exe!boost::asio::basic_io_object<boost::asio::stream_socket_service<boost::asio::ip::tcp>,1>::basic_io_object<boost::asio::stream_socket_service<boost::asio::ip::tcp>,1>(boost::asio::io_service & io_service)  Line 184 + 0x44 bytes   C++
    i2pd_d.exe!boost::asio::basic_socket<boost::asio::ip::tcp,boost::asio::stream_socket_service<boost::asio::ip::tcp> >::basic_socket<boost::asio::ip::tcp,boost::asio::stream_socket_service<boost::asio::ip::tcp> >(boost::asio::io_service & io_service)  Line 73   C++
    i2pd_d.exe!boost::asio::basic_stream_socket<boost::asio::ip::tcp,boost::asio::stream_socket_service<boost::asio::ip::tcp> >::basic_stream_socket<boost::asio::ip::tcp,boost::asio::stream_socket_service<boost::asio::ip::tcp> >(boost::asio::io_service & io_service)  Line 75 C++
    i2pd_d.exe!i2p::transport::NTCPSession::NTCPSession(i2p::transport::NTCPServer & server, std::shared_ptr<i2p::data::RouterInfo const > * in_RemoteRouter)  Line 25 + 0x87 bytes C++
    i2pd_d.exe!std::_Ref_count_obj<i2p::transport::NTCPSession>::_Ref_count_obj<i2p::transport::NTCPSession><i2p::transport::NTCPServer & __ptr64,std::shared_ptr<i2p::data::RouterInfo const > & __ptr64>()  Line 932 + 0x79 bytes C++
    i2pd_d.exe!std::make_shared<i2p::transport::NTCPSession,i2p::transport::NTCPServer & __ptr64,std::shared_ptr<i2p::data::RouterInfo const > & __ptr64>()  Line 1003 + 0x51 bytes C++
    i2pd_d.exe!i2p::transport::Transports::ConnectToPeer(const i2p::data::Tag<32> & ident, i2p::transport::Peer & peer)  Line 224 + 0x34 bytes  C++
    i2pd_d.exe!i2p::transport::Transports::PostMessageA(const i2p::data::Tag<32> & ident, i2p::I2NPMessage * msg)  Line 202 + 0x26 bytes    C++
    i2pd_d.exe!boost::_mfi::mf2<void,i2p::transport::Transports,i2p::data::Tag<32> const & __ptr64,i2p::I2NPMessage * __ptr64>::operator()(i2p::transport::Transports * p, const i2p::data::Tag<32> & a1, i2p::I2NPMessage * a2)  Line 281  C++
    i2pd_d.exe!boost::_bi::list3<boost::_bi::value<i2p::transport::Transports * __ptr64>,boost::_bi::value<i2p::data::Tag<32> >,boost::_bi::value<i2p::I2NPMessage * __ptr64> >::operator()<boost::_mfi::mf2<void,i2p::transport::Transports,i2p::data::Tag<32> const & __ptr64,i2p::I2NPMessage * __ptr64>,boost::_bi::list0>(boost::_bi::type<void> __formal, boost::_mfi::mf2<void,i2p::transport::Transports,i2p::data::Tag<32> const &,i2p::I2NPMessage *> & f, boost::_bi::list0 & a, boost::_bi::type<void> __formal)  Line 393  C++
    i2pd_d.exe!boost::_bi::bind_t<void,boost::_mfi::mf2<void,i2p::transport::Transports,i2p::data::Tag<32> const & __ptr64,i2p::I2NPMessage * __ptr64>,boost::_bi::list3<boost::_bi::value<i2p::transport::Transports * __ptr64>,boost::_bi::value<i2p::data::Tag<32> >,boost::_bi::value<i2p::I2NPMessage * __ptr64> > >::operator()()  Line 21    C++
    i2pd_d.exe!boost::asio::asio_handler_invoke<boost::_bi::bind_t<void,boost::_mfi::mf2<void,i2p::transport::Transports,i2p::data::Tag<32> const & __ptr64,i2p::I2NPMessage * __ptr64>,boost::_bi::list3<boost::_bi::value<i2p::transport::Transports * __ptr64>,boost::_bi::value<i2p::data::Tag<32> >,boost::_bi::value<i2p::I2NPMessage * __ptr64> > > >(boost::_bi::bind_t<void,boost::_mfi::mf2<void,i2p::transport::Transports,i2p::data::Tag<32> const &,i2p::I2NPMessage *>,boost::_bi::list3<boost::_bi::value<i2p::transport::Transports *>,boost::_bi::value<i2p::data::Tag<32> >,boost::_bi::value<i2p::I2NPMessage *> > > & function, ...)  Line 70   C++
    i2pd_d.exe!boost_asio_handler_invoke_helpers::invoke<boost::_bi::bind_t<void,boost::_mfi::mf2<void,i2p::transport::Transports,i2p::data::Tag<32> const & __ptr64,i2p::I2NPMessage * __ptr64>,boost::_bi::list3<boost::_bi::value<i2p::transport::Transports * __ptr64>,boost::_bi::value<i2p::data::Tag<32> >,boost::_bi::value<i2p::I2NPMessage * __ptr64> > >,boost::_bi::bind_t<void,boost::_mfi::mf2<void,i2p::transport::Transports,i2p::data::Tag<32> const & __ptr64,i2p::I2NPMessage * __ptr64>,boost::_bi::list3<boost::_bi::value<i2p::transport::Transports * __ptr64>,boost::_bi::value<i2p::data::Tag<32> >,boost::_bi::value<i2p::I2NPMessage * __ptr64> > > >(boost::_bi::bind_t<void,boost::_mfi::mf2<void,i2p::transport::Transports,i2p::data::Tag<32> const &,i2p::I2NPMessage *>,boost::_bi::list3<boost::_bi::value<i2p::transport::Transports *>,boost::_bi::value<i2p::data::Tag<32> >,boost::_bi::value<i2p::I2NPMessage *> > > & function, boost::_bi::bind_t<void,boost::_mfi::mf2<void,i2p::transport::Transports,i2p::data::Tag<32> const &,i2p::I2NPMessage *>,boost::_bi::list3<boost::_bi::value<i2p::transport::Transports *>,boost::_bi::value<i2p::data::Tag<32> >,boost::_bi::value<i2p::I2NPMessage *> > > & context)  Line 39  C++
    i2pd_d.exe!boost::asio::detail::completion_handler<boost::_bi::bind_t<void,boost::_mfi::mf2<void,i2p::transport::Transports,i2p::data::Tag<32> const & __ptr64,i2p::I2NPMessage * __ptr64>,boost::_bi::list3<boost::_bi::value<i2p::transport::Transports * __ptr64>,boost::_bi::value<i2p::data::Tag<32> >,boost::_bi::value<i2p::I2NPMessage * __ptr64> > > >::do_complete(boost::asio::detail::win_iocp_io_service * owner, boost::asio::detail::win_iocp_operation * base, const boost::system::error_code & __formal, const boost::system::error_code & __formal)  Line 68 + 0xf bytes C++
    i2pd_d.exe!boost::asio::detail::win_iocp_operation::complete(boost::asio::detail::win_iocp_io_service & owner, const boost::system::error_code & ec, unsigned __int64 bytes_transferred)  Line 47   C++
    i2pd_d.exe!boost::asio::detail::win_iocp_io_service::do_one(bool block, boost::system::error_code & ec)  Line 406   C++
    i2pd_d.exe!boost::asio::detail::win_iocp_io_service::run(boost::system::error_code & ec)  Line 164 + 0x17 bytes C++
    i2pd_d.exe!boost::asio::io_service::run()  Line 59 + 0x13 bytes C++
    i2pd_d.exe!i2p::transport::Transports::Run()  Line 173 + 0x11 bytes C++
    i2pd_d.exe!std::_Pmf_wrap<void (__cdecl i2p::transport::Transports::*)(void) __ptr64,void,i2p::transport::Transports>::operator()(i2p::transport::Transports * _Pfnobj)  Line 1231  C++
    i2pd_d.exe!std::_Bind<1,void,std::_Pmf_wrap<void (__cdecl i2p::transport::Transports::*)(void) __ptr64,void,i2p::transport::Transports>,i2p::transport::Transports * __ptr64 const>::_Do_call<,0>(std::tuple<> * _Myfargs, std::_Arg_idx<0> __formal)  Line 1150    C++
    i2pd_d.exe!std::_Bind<1,void,std::_Pmf_wrap<void (__cdecl i2p::transport::Transports::*)(void) __ptr64,void,i2p::transport::Transports>,i2p::transport::Transports * __ptr64 const>::operator()<>()  Line 1138  C++
    i2pd_d.exe!std::_Bind<0,void,std::_Bind<1,void,std::_Pmf_wrap<void (__cdecl i2p::transport::Transports::*)(void) __ptr64,void,i2p::transport::Transports>,i2p::transport::Transports * __ptr64 const> >::_Do_call<>(std::tuple<> * _Myfargs, std::_Arg_idx<> __formal)  Line 1150   C++
    i2pd_d.exe!std::_Bind<0,void,std::_Bind<1,void,std::_Pmf_wrap<void (__cdecl i2p::transport::Transports::*)(void) __ptr64,void,i2p::transport::Transports>,i2p::transport::Transports * __ptr64 const> >::operator()<>()  Line 1138  C++
    i2pd_d.exe!std::_LaunchPad<std::_Bind<0,void,std::_Bind<1,void,std::_Pmf_wrap<void (__cdecl i2p::transport::Transports::*)(void) __ptr64,void,i2p::transport::Transports>,i2p::transport::Transports * __ptr64 const> > >::_Run(std::_LaunchPad<std::_Bind<0,void,std::_Bind<1,void,std::_Pmf_wrap<void (__cdecl i2p::transport::Transports::*)(void),void,i2p::transport::Transports>,i2p::transport::Transports * const> > > * _Ln)  Line 196 C++
    i2pd_d.exe!std::_LaunchPad<std::_Bind<0,void,std::_Bind<1,void,std::_Pmf_wrap<void (__cdecl i2p::transport::Transports::*)(void) __ptr64,void,i2p::transport::Transports>,i2p::transport::Transports * __ptr64 const> > >::_Go()  Line 188  C++
    i2pd_d.exe!_Call_func(void * _Data)  Line 28 + 0xf bytes    C++
    i2pd_d.exe!_callthreadstartex()  Line 376 + 0x17 bytes  C
    i2pd_d.exe!_threadstartex(void * ptd)  Line 359 C
    kernel32.dll!BaseThreadInitThunk()  + 0xd bytes 
    ntdll.dll!RtlUserThreadStart()  + 0x21 bytes    

Поддержка Windows (компилятор vs2013)

Собрал исходники с помощью Visual Studio 2013. Вроде бы компилируется, запускается, но есть проблемы. При первом запуске создает два файла router.info и router.keys (в них какая-то каша). Виндовский фаервол спросил разрешить или нет, видимо сервер открыл порт.
Пишет такой лог:

netDb doesn't exist
Start listening port 17007
Creating zero hops inbound tunnel...
I2NP msg received len=545, type=23, msgID=0
VariableTunnelBuild
VariableTunnelBuild 1 records
Record 0 is ours
TransitTunnel gateway: 1736841068 created
I2NP msg received len=545, type=23, msgID=555
VariableTunnelBuild
VariableTunnelBuild 1 records
VariableTunnelBuild reply for tunnel 1847386387
TunnelBuildResponse 1 records.
Ret code=0
Inbound tunnel 1847386387 has been created
I2NP msg received len=545, type=23, msgID=1
VariableTunnelBuild
VariableTunnelBuild 1 records
Record 0 is ours
TransitTunnel endp

и падает в void Tunnel::Build (uint32_t replyMsgID, OutboundTunnel * outboundTunnel) в этой точке:

EncryptBuildRequestRecord (*hop->router,
    CreateBuildRequestRecord (hop->router->GetIdentHash (),
...

При последующих запусках не может распарсить router.info и соответственно вылетает.

При компиляции был собран boost 1.55 и crypto++ 5.6.2 и возникли следующие проблемы:

  1. Компилятор vs2013 пока не умеет спецификаторы default, но, к счастью, их всего несколько. В коде эти конструкторы не использовались, поэтому большую часть просто закомментил (классы IdentHash и RouterInfo).

  2. В винде нету endian.h, использовал такую версию https://gist.github.com/panzi/6856583

  3. тип ssize_t отсутствует, не разбирался пока, просто убрал одну s)

  4. Отсутствует gmtime_r. Пока оставил так:

#ifdef _WIN32
        gmtime_s(&tm, &t);
#else
        gmtime_r(&t, &tm);
#endif
  1. функция sleep в винде начинается с заглавной буквы Sleep

Под линуксом не собирал, думаю стоит поставить линукс и искать 10 отличий)
Очень бы хотелось иметь кросплатформенные исходники и собирать проект родным компилятором под виндой.

Random sequence of non-zero bytes generator

TunnelGateway.cpp line 140
memset (buf + 24, 1, paddingSize);

This buffer must be filled with random non-zero bytes.
Due non-zero requirement, we can't use random data generator in place, so it must be prepared somewhere else.

Работа за натом, внешний роутер, определение состояния

За натом находится выделенный роутер, "listening TCP port" проброшен наружу
При попытке http://igw:7070/4oes3rlgrpbkmzv4lqcfili23h3cvpwslqcfjlk6vvguxyggspwa
LeaseSet not found

в логе
Logging to file /root/.i2pd/debug.log enabled.
CMD parameters:
0 ./i2p
1 --host=88.xx.xx.xxx
2 --help
HTTPServer started
Unexpected address i2p.chaotique.fr
Unexpected address dyn.interpano360.de
Unexpected address dyn.interpano360.de
Unexpected address raddatz.no-ip.org
Unexpected address raddatz.no-ip.org
Unexpected address anthila.dyndns.org
Unexpected address anthila.dyndns.org
Unexpected address aracool.dd-dns.de
Unexpected address aracool.dd-dns.de
Unexpected address voodoo.b0ne.com
Unexpected address stargrave.org
Unexpected address chinkov.net
Unexpected address home.fmy.be
Unexpected address zion.uk.to
Unexpected address zion.uk.to
Unexpected address cellarnet.co.uk
Unexpected address cellarnet.co.uk
Unexpected address uriel-fanelli.no-ip.org
Unexpected address uriel-fanelli.no-ip.org
1500 routers loaded
449 floodfills loaded
NetDB started
Start listening UDP port 17007
Creating new SSU session to [Ye~y] 151.24.39.120:22355
SSU sent 304 bytes
Creating new SSU session to [ufHN] 67.250.249.233:9179
SSU sent 304 bytes
Creating new SSU session to [w2nA] through introducer 92.53.64.137:9751
New session to introducer created
SSU sent 96 bytes
Creating new SSU session to [txR1] through introducer 77.125.156.209:24768
New session to introducer created
SSU sent 96 bytes
Creating new SSU session to [tCrN] 24.140.131.110:13550
SSU sent 304 bytes
Start listening TCP port 17007
Transports started
Tunnels started
Routing started
Streaming started
Proxy started
SSU session was not established after 5 second
SSU session was not established after 5 second
SSU session was not established after 5 second
SSU session was not established after 5 second
SSU session was not established after 5 second
SSU session was not established after 5 second
SSU session was not established after 5 second
LeaseSet requested
No outbound tunnels found
Invalid Base32 address favicon.ico

Transports: close: Bad file descriptor

latest commit 692cde5, CentOS7

большое количество
close: Bad file descriptor при выходе.

А когда я стал запускать под strace, чтобы посмотреть, не были ли они уже закрыты ранее,
стабильно получается AssertionFailed, описанный в #111

...

23:25:48/info - DatabaseStore
23:25:48/info - RouterInfo
23:25:48/info - RouterInfo updated
23:25:48/info - Phase 4 received: 48
23:25:48/info - NTCP session connected
23:25:48/info - DatabaseStore
23:25:48/info - RouterInfo
23:25:48/info - RouterInfo updated
23:25:49/info - SSU session was not established after 5 second
^C
23:25:55/info - Shutdown started.
23:25:55/info - HTTP Proxy stoped
23:25:55/info - SOCKS Proxy stoped
23:25:55/info - Client stoped
23:25:55/info - Tunnels stoped
23:25:55/debug - SSU session destroyed sent
23:25:55/debug - SSU session destroyed sent
23:25:55/debug - SSU session destroyed sent
23:25:55/debug - SSU session destroyed sent
23:25:55/debug - SSU session destroyed sent
23:25:55/debug - SSU session destroyed sent
23:25:55/debug - SSU session destroyed sent
23:25:55/debug - SSU session destroyed sent
23:25:55/info - Connect error: Operation canceled
23:25:55/info - Phase 4 read error: Operation canceled
23:25:55/info - Read error: Operation canceled
23:25:55/info - Transports: close: Bad file descriptor
23:25:55/info - Read error: Operation canceled
23:25:55/info - Transports: close: Bad file descriptor
23:25:55/info - Read error: Operation canceled
23:25:55/info - Transports: close: Bad file descriptor
23:25:55/info - Phase 4 read error: Operation canceled
23:25:55/info - Connect error: Operation canceled
23:25:55/info - Read error: Operation canceled
23:25:55/info - Transports: close: Bad file descriptor
23:25:55/info - Phase 4 read error: Operation canceled
23:25:55/info - Read error: Operation canceled
23:25:55/info - Transports: close: Bad file descriptor
23:25:55/info - Read error: Operation canceled
23:25:55/info - Transports: close: Bad file descriptor
23:25:55/info - Read error: Operation canceled
23:25:55/info - Transports: close: Bad file descriptor
23:25:55/info - Phase 4 read error: Operation canceled
23:25:55/info - Read error: Operation canceled
23:25:55/info - Transports: close: Bad file descriptor
23:25:55/info - Phase 4 read error: Operation canceled
23:25:55/info - Read error: Operation canceled
23:25:55/info - Transports: close: Bad file descriptor
23:25:55/info - Phase 4 read error: Operation canceled
23:25:55/info - Phase 4 read error: Operation canceled
23:25:55/info - Read error: Operation canceled
23:25:55/info - Transports: close: Bad file descriptor
23:25:55/info - Read error: Operation canceled
23:25:55/info - Transports: close: Bad file descriptor
23:25:55/info - Transports stoped
23:25:55/info - NetDB stoped

Corrupted RouterInfo's will crash i2pd

Tried to find exception, or error handling in CryptoPP. No luck.

Maybe verify data before Verifier::VerifyMessage ?

GDB backtrace.

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7a4efe0 in CryptoPP::IteratedHashBase<unsigned int, CryptoPP::HashTransformation>::HashMultipleBlocks(unsigned int const*, unsigned long) () from /usr/lib/libcrypto++.so.9
(gdb) bt
#0  0x00007ffff7a4efe0 in CryptoPP::IteratedHashBase<unsigned int, CryptoPP::HashTransformation>::HashMultipleBlocks(unsigned int const*, unsigned long) () from /usr/lib/libcrypto++.so.9
#1  0x00007ffff7a4f83c in CryptoPP::IteratedHashBase<unsigned int, CryptoPP::HashTransformation>::Update(unsigned char const*, unsigned long) () from /usr/lib/libcrypto++.so.9
#2  0x000000000043b990 in CryptoPP::PK_MessageAccumulatorBase::Update (this=0x76c4a0, input=0x76b0f0 "", length=18446744073709551576)
    at /usr/include/cryptopp/pubkey.h:292
#3  0x00007ffff799ce2c in CryptoPP::PK_Verifier::VerifyMessage(unsigned char const*, unsigned long, unsigned char const*, unsigned long) const () from /usr/lib/libcrypto++.so.9
#4  0x000000000045c3fc in i2p::data::RouterInfo::ReadFromBuffer (this=0x76aef0) at RouterInfo.cpp:74
#5  0x000000000045c192 in i2p::data::RouterInfo::ReadFromFile (this=0x76aef0, 
    filename=0x754898 "/home/meeh/.i2pd/netDb/rt/routerInfo-tNtnzINKGef6lVhj0BlM-t8-~8iW6~g249w7~KwJegQ=.dat") at RouterInfo.cpp:54
#6  0x000000000045be68 in i2p::data::RouterInfo::RouterInfo (this=0x76aef0, 
    filename=0x754898 "/home/meeh/.i2pd/netDb/rt/routerInfo-tNtnzINKGef6lVhj0BlM-t8-~8iW6~g249w7~KwJegQ=.dat") at RouterInfo.cpp:23
#7  0x000000000046fea9 in i2p::data::NetDb::Load (this=0x74b4e0 <i2p::data::netdb>, 
    directory=0x4d6bf0 <i2p::data::NetDb::m_NetDbPath> "/netDb") at NetDb.cpp:243
#8  0x000000000046f2e0 in i2p::data::NetDb::Start (this=0x74b4e0 <i2p::data::netdb>) at NetDb.cpp:69
#9  0x0000000000433d3b in main (argc=1, argv=0x7fffffffe028) at i2p.cpp:42
(gdb) f
#0  0x00007ffff7a4efe0 in CryptoPP::IteratedHashBase<unsigned int, CryptoPP::HashTransformation>::HashMultipleBlocks(unsigned int const*, unsigned long) () from /usr/lib/libcrypto++.so.9

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.