Commit Graph

91 Commits

Author SHA1 Message Date
Kleissner
66ebf7c91e New DHT function IsNodeContact to check if node is in local routing table 2021-07-07 02:50:12 +02:00
Kleissner
c1ccc3c344 Export PublicKey2NodeID 2021-07-07 02:40:07 +02:00
Kleissner
560f019786 Remove unnecessary module for dht subdirectory. This streamlines dependencies on the core module. 2021-07-07 02:38:08 +02:00
Kleissner
27fdafd231 Only set error filter function if not already set, which is important for callers to intercept the init messages. 2021-07-06 13:37:27 +02:00
Kleissner
96ee35ebf9 Finalize filter for log messages. Close #26 2021-06-29 00:48:22 +02:00
Kleissner
084f3bc1ee Prepare log functions for filters. Init all filter functions by assigning empty stubs. #26 2021-06-28 02:37:31 +02:00
Kleissner
f5ce15d33a Initial filters for new peers and new connections. More filters to be added. #4 2021-06-09 22:45:43 +02:00
Kleissner
94c8e16724 Record BlockchainHeight and BlockchainVersion for each peer. New function IsPortForward. 2021-06-09 22:35:55 +02:00
Kleissner
594c06e276 Implemented block encoding according to Whitepaper 0.8.2.
Blocks aren't yet shared.
2021-05-30 15:28:11 +02:00
Kleissner
1a44b9c5e7 Include both IPv4/IPv6 addresses in peer records in Response message. This makes peer list sharing more efficient and speeds up discovery. Close #24 2021-05-21 02:33:32 +02:00
Kleissner
82033e124a Finalize Traverse message implementation. Close #23
Remove createVirtualAnnouncement function, no longer needed.
2021-05-19 14:56:39 +02:00
Kleissner
d148fddd1e Simplify and streamline send code. Close #21 2021-05-19 03:40:26 +02:00
Kleissner
8e2043728c Properly count IPv4 and IPv6 networks listening (exclude link-local ones). Close #22 2021-05-18 23:22:11 +02:00
Kleissner
9eb1127b40 Alpha 2 release. Includes Traverse message according to latest Whitepaper 0.8.
Send and traverse code needs some cleanup.
2021-05-11 10:33:06 +02:00
Kleissner
db1c2e358c Store Features field in peer structure 2021-05-11 09:40:49 +02:00
Kleissner
9f21f56896 UPnP improve filter of ineligible IPs 2021-05-11 00:35:00 +02:00
Kleissner
db46b80e3f Move ping code to separate file (no changes) 2021-05-09 15:37:32 +02:00
Kleissner
f084edc316 New function record.IsBadQuality to make sure bad peers returned in the Response message are not considered.
Improved remote peer NAT detection. Placeholder for sending the Traverse message.
Fix in handling incoming FIND_PEER request. Do not return self as closest node.
Do not share peers for which the internal port is not known.
2021-05-09 00:49:34 +02:00
Kleissner
f70875a345 Use PortReportedExternal when available. 2021-05-08 17:25:20 +02:00
Kleissner
530cd541c1 Add new fields Port Internal and Port External to the exchanged peer record according to the latest Whitepaper 0.7.3.
This allows peers to detect each other's NAT and port forwarding status.
2021-05-08 13:03:45 +02:00
Kleissner
3a502a1ecc Minor UPnP improvement: Run discovery of each network in parallel. 2021-05-07 01:05:02 +02:00
Kleissner
5f8f299799 Working UPnP code. Close #16 2021-05-06 14:57:40 +02:00
Kleissner
eb0afce3f9 Fix race condition in cmdResponse. 2021-05-06 14:54:28 +02:00
Kleissner
e929d6ba2f Make result channel buffered. Function QueueResult to queue the incoming message non-blocking.
This fixes a bug (write on closed channel).
2021-05-06 14:48:34 +02:00
Kleissner
4df71d531f Add basic forked UPnP library. More changes upcoming. #16 2021-05-05 21:35:32 +02:00
Kleissner
f1da49d68e Add PortForward setting to override external listening port. Improve default config inline documentation.
Prepare EnableUPnP setting.
2021-05-04 12:43:31 +02:00
Kleissner
0fe2ce60ec Add reported internal and external port to Connection. New function peer.IsBehindNAT.
PeerlistAdd is now called on every incoming message. User Agent fixes.
2021-05-04 01:13:11 +02:00
Kleissner
f3c9d5e17f Add new fields Port Internal and Port External to the Announcement/Response message according to the latest Whitepaper 0.7.3.
These fields will be used for NAT detection and UPnP support.
2021-05-03 14:05:07 +02:00
Kleissner
948fa2be91 Add placeholder for future code 2021-05-03 11:00:17 +02:00
Kleissner
1e7bb0c40c Fix #19 IPv4 address format in byte form 2021-04-25 22:12:59 +02:00
Kleissner
250f60a4b6 New flag: IsRootPeer. Rearranged initialization priority (initNetwork should always be last). 2021-04-25 05:34:00 +02:00
Kleissner
35f50230cd Add 2 root peers. New seed list auto update. 2021-04-25 04:40:45 +02:00
Kleissner
f13695709f Kademlia: Initial bucket refresh implementation. This might be improved down the road. 2021-04-25 04:22:10 +02:00
Kleissner
611dfa3b1c RefreshBuckets: Use self ID on bucket 0. 2021-04-25 03:44:52 +02:00
Kleissner
1c03afd63b Fix: Check if channel is closed. 2021-04-25 00:07:53 +02:00
Kleissner
63e736486a Implement auto refresh of buckets. Close #11 2021-04-24 23:06:08 +02:00
Kleissner
6693d442a6 Add function dht.RefreshBuckets. Use RW mutex for accessing hash table. 2021-04-24 22:42:39 +02:00
Kleissner
146bb6991e Proper ShouldEvict implementation 2021-04-22 06:11:39 +02:00
Kleissner
27152cb145 Provide old and new peer in ShouldEvict. New comparison function IsNodeCloser.
Remove unused code (which was likely buggy anyway).
2021-04-22 05:45:46 +02:00
Kleissner
4b905f4eab Enable local peer discovery for public IPv4s for now. 2021-04-21 03:42:46 +02:00
Kleissner
ec809029d8 Sequences add pointer to high-level data. Proper mapping of sequences to information requests. 2021-04-21 03:27:03 +02:00
Kleissner
e432696ad1 dht.Get return sender's nodeID 2021-04-21 03:06:30 +02:00
Kleissner
8a33f19986 Remove unnecessary ListIR. Removes complexity. 2021-04-21 02:49:31 +02:00
Kleissner
0dd9ef028b Fix race condition in sequence validation and invalidation. Once they are now checked, they can be immediately invalidated. 2021-04-20 17:20:55 +02:00
Kleissner
8269219cf0 Fix sendAllNetworks: New sequence number per packet 2021-04-20 07:18:46 +02:00
Kleissner
62c4b370fc New announcementPacket structure to report back values up the chain 2021-04-20 05:25:56 +02:00
Kleissner
8bb1a3bdf7 GetRTT function 2021-04-19 15:32:14 +02:00
Kleissner
1eb4f4083b Implement SEQUENCE_LAST flag 2021-04-19 15:05:17 +02:00
Kleissner
b2db81143e Proper message sequence implementation for Response and Pong messages. Record round-trip time at connection level! Reply timeout. Close #13 #5
Fixes.
2021-04-19 05:18:07 +02:00
Kleissner
00db57aed8 Provide the new sequence number in responses. New message Local Discovery to be sent instead of Announcement via IPv4 Broadcast and IPv6 Multicast.
Detecting IPv6 link-local addresses as local ones. Fixes.
2021-04-18 21:50:30 +02:00