Commit Graph
995 Commits
Author SHA1 Message Date
orignal ab57514b5f return string instead string_view from RecognizeClientByPeerID 2026-10-01 22:31:28 -04:00
orignal d2b9c1a099 insert existing node to routing table 2026-10-01 22:11:03 -04:00
orignal 842a2cb9b9 initialize lastUpdateTime 2026-10-01 22:05:47 -04:00
orignal a5797cdf98 cleanup all nodes list. Store pointer to node in routing table 2026-10-01 21:24:17 -04:00
orignal 94ff267b45 send ping to expiring nodes 2026-10-01 18:26:44 -04:00
orignal 4c48933c17 try to print value of peerID for unknown client 2026-10-01 15:13:12 -04:00
orignal 3a488a3dcb recognize more clients by peerID 2026-10-01 13:51:29 -04:00
orignal 15b75e2bb7 handle magnetLink field 2026-09-30 22:03:43 -04:00
orignal 637507be67 add quoerying node to nodes list 2026-09-30 18:53:07 -04:00
orignal 5eaf86e432 send multiple get_peers requests 2026-09-30 16:04:12 -04:00
orignal ff93190c11 cleanup non-responded queries 2026-09-30 10:25:02 -04:00
orignal 5d2bd1d299 insert nodes to routing table in sorted order after load 2026-09-29 21:51:07 -04:00
orignal 3361c59718 use infoHash as torrent name if no dn= in magnet link 2026-09-29 21:06:51 -04:00
orignal 5b4f3de9d5 return 0 in pecentDone for new magnet 2026-09-29 21:04:49 -04:00
orignal 2d8efa8d0d less aggressive DHT announcement 2026-09-29 21:02:42 -04:00
orignal 5bf161e29c get peers throught DHT and announce own torrents 2026-09-29 18:59:46 -04:00
orignal 14eb418c5e remove empty buckets after load DHT nodes 2026-09-28 22:37:42 -04:00
orignal 19c0f98126 update timestamp of existing peer 2026-09-28 21:11:30 -04:00
orignal 847f3748f2 return existing tunnel ID for duplicated torrent 2026-09-28 20:58:56 -04:00
orignal ccd494160d cleanup DHT torrents 2026-09-28 20:32:24 -04:00
orignal 8d5becd90a set DHT datagram receiver after datagram destionation initializtion. Save nodes from ping and get_peers queires 2026-09-28 15:16:59 -04:00
orignal b0a22f8793 generate random nodeID by 4 bytes 2026-09-28 13:34:23 -04:00
orignal daaa336276 generate random nodeid in bucket 2026-09-28 12:01:11 -04:00
orignal 50235645ea fixed typo 2026-09-28 07:46:42 -04:00
orignal b126b2455a select random node to request from 2026-09-27 22:31:45 -04:00
orignal 8510dce429 remove expired nodes from routing table 2026-09-27 21:09:16 -04:00
orignal 1eb06e3c45 store bucket's node in map rather than list 2026-09-27 18:09:31 -04:00
orignal ae481480eb request node from node from the same bucket. Respond to find_node 2026-09-27 17:27:42 -04:00
orignal 46ea7caa8d explore DHT nodes 2026-09-27 12:43:29 -04:00
orignal 6cfb14b422 correct local NodeID generation. Handle find_node query 2026-09-26 22:05:17 -04:00
orignal a8b4000490 handle get_peers response. Send announce_peer 2026-09-26 19:13:44 -04:00
orignal 4be508a882 save own nodeInfo in dht file 2026-09-26 12:06:59 -04:00
PobreGato 28c65b6d59 don't overflow int when parsing SAM version 2026-09-26 01:24:43 -04:00
orignal bdac44084f close .part file before renaming 2026-09-25 21:46:14 -04:00
orignal 3ebcd21135 store node info in separate map 2026-09-25 20:06:07 -04:00
orignal 685776eba3 parse id and infoHash as 20-bytes array. Add node to DHT after receiveing ping. Send reposnse to announce_peer 2026-09-25 14:57:50 -04:00
Elcoid 61e18baf68 sam: replace C-style 0/1 with C++-style false/true 2026-09-25 13:30:18 -04:00
Elcoid d1428cd2ae sam: fix inconsistencies in version negotiation of sam handshake
This commit fixes [issue #2570](https://github.com/PurpleI2P/i2pd/issues/2570).

The [specification of the SAM protocol](https://i2p.net/en/docs/api/samv3/)
says the following:
- "As of version 3.1 (I2P 0.9.14), the MIN and MAX parameters are optional."
- "SAM will always return the highest version possible given the MIN and MAX
  constraints"

Given this, the following handshakes do not change:
```
printf "HELLO VERSION MIN=3.1 MAX=3.3\n" | nc -q 0 127.0.0.1 7656
HELLO REPLY RESULT=OK VERSION=3.3

printf "HELLO VERSION MAX=3.3\n" | nc -q 0 127.0.0.1 7656
HELLO REPLY RESULT=OK VERSION=3.3

printf "HELLO VERSION MIN=31 MAX=31\n" | nc -q 0 127.0.0.1 7656
HELLO REPLY RESULT=OK VERSION=3.1
(periods are still optional)
```

But the following ones do (the responses before and after this commit
are included):
```
printf "HELLO VERSION MAX=3.4\n" | nc -q 0 127.0.0.1 7656
before: HELLO REPLY RESULT=NOVERSION
after:  HELLO REPLY RESULT=OK VERSION=3.3

printf "HELLO VERSION MIN=3.0\n" | nc -q 0 127.0.0.1 7656
before: HELLO REPLY RESULT=OK VERSION=3.0
after:  HELLO REPLY RESULT=OK VERSION=3.3

printf "HELLO VERSION MIN=3.1\n" | nc -q 0 127.0.0.1 7656
before: HELLO REPLY RESULT=OK VERSION=3.1
after:  HELLO REPLY RESULT=OK VERSION=3.3

printf "HELLO VERSION MIN=2.9\n" | nc -q 0 127.0.0.1 7656
before: HELLO REPLY RESULT=NOVERSION
after:  HELLO REPLY RESULT=OK VERSION=3.3

printf "HELLO VERSION\n" | nc -q 0 127.0.0.1 7656
before: HELLO REPLY RESULT=NOVERSION
after:  HELLO REPLY RESULT=OK VERSION=3.3

printf "HELLO VERSION MIN=3.3 MAX=3.1\n" | nc -q 0 127.0.0.1 7656
before: HELLO REPLY RESULT=OK VERSION=3.1
after:  HELLO REPLY RESULT=NOVERSION

printf "HELLO VERSION MIN=3.5 MAX=2.7\n" | nc -q 0 127.0.0.1 7656
before: HELLO REPLY RESULT=OK VERSION=2.7
after:  HELLO REPLY RESULT=NOVERSION

printf "HELLO VERSION MIN=2.7 MAX=3.5\n" | nc -q 0 127.0.0.1 7656
before: HELLO REPLY RESULT=NOVERSION
after:  HELLO REPLY RESULT=OK VERSION=3.3

printf "HELLO VERSION MIN=aab3vsg1df MAX=fd3gfbgf1bf\n" | nc -q 0 127.0.0.1 7656
before: HELLO REPLY RESULT=OK VERSION=3.1
after:  HELLO REPLY RESULT=NOVERSION
```

I included a script to automatically test these handshakes.
2026-09-25 10:52:05 -04:00
orignal 54f51044e5 use destination's b32 for dht file name 2026-09-25 09:02:11 -04:00
orignal 3c871cd892 don't consider duplicated torrent as error. Return id of existing one instead 2026-09-25 08:40:28 -04:00
orignal baa0c8533a return more flags in flagStr 2026-09-24 22:15:25 -04:00
orignal 969aa1b563 save and load DHT routing table 2026-09-24 21:26:00 -04:00
orignal 6f24d4efdd implemnented torrent tunnel param dht 2026-09-24 19:14:02 -04:00
orignal 1af997ac82 handle announce_peer 2026-09-24 17:21:56 -04:00
orignal 69e9eadc0b save and load routing table 2026-09-24 11:25:02 -04:00
orignal d9724bb2ad Merge pull request #2573 from pobregat0/tunnels-conf-partial-read
read tunnels.conf section by section if the whole file can't be parsed
2026-09-23 22:22:13 -04:00
PobreGato 3852c7a485 make tunnels config section readers members of ClientContext 2026-09-23 22:18:00 -04:00
PobreGato 61ee7d34f5 read tunnels.conf section by section if the whole file can't be parsed 2026-09-23 22:02:25 -04:00
orignal fc42730f8b handle get_peers response 2026-09-23 20:49:11 -04:00
orignal 9173deb0d6 keep DHT torrents in separate class 2026-09-23 16:05:03 -04:00