1202 Commits

Author SHA1 Message Date
Neil Alexander
d9fd68f18c
Fix build 2020-07-06 14:21:28 +01:00
Neil Alexander
a4a346c498
Merge branch 'develop' into future 2020-07-06 14:16:38 +01:00
George
48f008a8e2
Implement Core.RemovePeer method (#699) (#709)
Co-authored-by: George <zhoreeq@users.noreply.github.com>
2020-07-06 14:14:34 +01:00
Arceliar
3fded209df try to fix some possible races with how peers are added/removed and how they're blocked in the switch when they enter a bad state 2020-06-06 12:30:54 -05:00
Arceliar
aec82d7a39
Merge pull request #702 from Arceliar/switch
Precompute more for the switch lookup table
2020-05-30 18:39:43 -05:00
Arceliar
a1856258a9
Merge pull request #704 from Arceliar/queues
Faster queue logic
2020-05-30 18:39:33 -05:00
Arceliar
35e7542889
Merge pull request #706 from Arceliar/buffers
More buffer fine-tuning
2020-05-30 18:39:24 -05:00
Arceliar
c83b070c69 remove old switch lookup functions 2020-05-30 13:12:49 -05:00
Arceliar
0f28862e99 remove unused sequence number from switch 2020-05-30 10:48:59 -05:00
Arceliar
5e170e22e1 more switch fixes 2020-05-30 10:47:54 -05:00
Arceliar
3dc2242712 fix handling of keepAliveTimer and blocked state in link.go 2020-05-30 10:32:15 -05:00
Arceliar
8775075c18 debugging 2020-05-27 19:35:19 -05:00
Arceliar
905c28f7b2 fix some issues with the rewritten switch lookup tables 2020-05-27 19:31:17 -05:00
Arceliar
1df305d31c simplify how blocking is detected and packets are dequeued 2020-05-27 18:53:14 -05:00
Arceliar
09f9f4e8e4 use heap.Fix instead of heap.Remove + heap.Push when updating queues, this is theoretically faster 2020-05-25 20:09:57 -05:00
Arceliar
674d8b58b6 get things compiling again 2020-05-25 19:27:17 -05:00
Arceliar
152e9057a0 Merge branch 'develop' of https://github.com/yggdrasil-network/yggdrasil-go into future 2020-05-25 19:25:05 -05:00
Arceliar
85eec5ba8e tcp ygg-over-ygg debug logging 2020-05-25 19:13:37 -05:00
Arceliar
8345ae1fa3 don't allow ygg tcp connections to/from a local ygg address 2020-05-25 19:08:04 -05:00
Arceliar
dbc3b9b4c4
Merge pull request #701 from Arceliar/buffers
More buffer fine-tuning
2020-05-25 16:30:43 -05:00
Arceliar
366a8ba3dd Merge branch 'develop' of https://github.com/yggdrasil-network/yggdrasil-go into future 2020-05-25 16:28:12 -05:00
Neil Alexander
45810fa184
Merge pull request #703 from Arceliar/dht
Store less in the DHT
2020-05-25 22:18:00 +01:00
Arceliar
1f65ffb310 work-in-progress heap-based queue structure 2020-05-25 16:07:56 -05:00
Arceliar
761ae531cb work-in-progress faster queue logic 2020-05-25 15:19:32 -05:00
Arceliar
eefabb5f9f disregard nodes if they're unimportant, even if they're already in the DHT 2020-05-25 12:44:06 -05:00
Arceliar
40bfd207f5 don't store every node we hear from in the DHT, only ones we already know about or that are important 2020-05-25 12:23:38 -05:00
Arceliar
f9bc0b7aee use a more elaborate precomputed lookup table from the switch 2020-05-25 11:49:25 -05:00
Arceliar
38dcbb1e2f cleaner way to handle seq/idle checks for the peer 2020-05-24 17:49:48 -05:00
Arceliar
4382368b08 make sure the peer isn't idle before entering drop mode 2020-05-24 17:43:35 -05:00
Arceliar
9574308545 have the peer delay setting a max buffer size, in case things have unblocked in the mean time 2020-05-24 17:35:49 -05:00
Arceliar
7778a47a8f fix darwin compile problem 2020-05-24 15:46:18 -05:00
Arceliar
98816f34b2 don't spam calls to net.Interfaces and net.Interface.Addrs (hopefully) 2020-05-24 15:24:39 -05:00
Arceliar
1e471e3712 back to master's version of multicast, lets try rewriting it again 2020-05-24 14:43:38 -05:00
Arceliar
c2d6e9e8f1 close listener when a multicast interface is removed 2020-05-24 14:09:06 -05:00
Arceliar
77ded84ea5 simplify routerInterface 2020-05-23 12:21:23 -05:00
Arceliar
f2b9e95895 simplify routerInterface 2020-05-23 12:21:01 -05:00
Arceliar
07206b5d46 resolve merge conflicts 2020-05-23 11:33:37 -05:00
Arceliar
169b8747d4
Merge pull request #696 from Arceliar/bugfix
Bugfix
2020-05-23 11:24:03 -05:00
Arceliar
7063ddcc73 slightly cleaner fix to conn String deadlock issue 2020-05-23 11:16:03 -05:00
Arceliar
bc48e4bb80 fix deadlock in conn (unsafe use of phony.Block) 2020-05-23 11:11:11 -05:00
Arceliar
59896f17fd more cleanup 2020-05-23 10:28:57 -05:00
Arceliar
ef1e506a0c work-in-progress on more cleanup 2020-05-23 10:23:55 -05:00
Arceliar
59c5644a52 some peer/link cleanup 2020-05-23 10:08:23 -05:00
Arceliar
cf2edc99d1 correctly set peer.max 2020-05-17 13:32:58 -05:00
Arceliar
d43b93f60a safer check for the queues if we're blocked on a send, should work even if we're blocked on a link packet send 2020-05-17 13:23:15 -05:00
Arceliar
ff3c8cb687 less aggresive queue size reduction 2020-05-17 12:58:57 -05:00
Arceliar
d96ae156a1 slight change to peer function names/args 2020-05-17 12:27:43 -05:00
Arceliar
7720e169f2 when we detect we're blocked, only drop packets often enough to make sure the existing queue's size is non-increasing, and always drop the worst packet from a random flow with odds based on the total size of packets queued for that flow 2020-05-17 12:09:40 -05:00
Arceliar
6e92af1cd2 re-enable a minimum queue size of ~1 big packet 2020-05-17 08:49:40 -05:00
Arceliar
0dcc555eab cleaner startup/shutdown of the link writer's worker 2020-05-17 08:34:22 -05:00
Arceliar
15ac2595aa use a dedicated per-stream writer goroutine, send messages to it over a 1-buffered channel, this eliminates most of the false positive blocking that causes drops 2020-05-17 08:22:02 -05:00
Arceliar
527d443916 move where the queue size check before dropping would occur 2020-05-17 07:21:09 -05:00
Arceliar
62b9fab5f8 more work-in-progress, debugging why things are dropping so often 2020-05-16 18:56:04 -05:00
Arceliar
b17a035a05 workarounds to dropping being too aggressive 2020-05-16 17:40:11 -05:00
Arceliar
b132560f65 it helps to actually run the notifyQueued stuff... 2020-05-16 17:24:26 -05:00
Arceliar
052de98f12 work-in-progress on buffering overhaul 2020-05-16 17:07:47 -05:00
Arceliar
dc128121e5 update switch blockPeer/unblockPeer logic and dht reset when coords change 2020-05-16 09:25:57 -05:00
Neil Alexander
f70b2ebcea
Fix bad check 2020-05-09 12:49:02 +01:00
Neil Alexander
2a2ad76479
Use maps instead of slices 2020-05-09 12:38:20 +01:00
Arceliar
433e392bdf Merge branch 'develop' of https://github.com/yggdrasil-network/yggdrasil-go into future 2020-05-09 06:13:52 -05:00
Neil Alexander
a59fd2a489
Merge branch 'develop' into neilalexander/pinning 2020-05-09 12:12:24 +01:00
Arceliar
7779d86c5b maybe fix multicast deadlock on darwin 2020-05-09 05:56:36 -05:00
Neil Alexander
13a2d99fdc
Set SOCKS peer addr to resolved address 2020-05-09 11:26:09 +01:00
Neil Alexander
8b180e941a
Add SOCKS proxy auth (closes #423) 2020-05-09 11:24:32 +01:00
Neil Alexander
58345ac198
Track proxy addr and real peer addr in SOCKS mode 2020-05-09 10:53:58 +01:00
Neil Alexander
fbf59184ee
Use query string instead, allow specifying multiple keys (might be useful for DNS RR) 2020-05-09 00:43:19 +01:00
Neil Alexander
e849b3e119
Initial support for pinning public keys in peering strings 2020-05-08 23:23:48 +01:00
Arceliar
107d9f0e8b Merge branch 'develop' of https://github.com/yggdrasil-network/yggdrasil-go into future 2020-05-03 05:20:30 -05:00
Arceliar
95f4ec52a4 save only the link-local addresses for multicast 2020-05-03 05:06:59 -05:00
Arceliar
de79401bb2 only call (net.Interface).Addrs() once per minute per interface 2020-05-03 02:50:04 -05:00
Arceliar
02e1cb180d possibly reduce multicast cpu usage even more 2020-05-02 17:23:20 -05:00
Neil Alexander
127b7e311c
Clean up a bit 2020-05-02 22:37:12 +01:00
Neil Alexander
0c7cf65d27
Move some logging back to debug 2020-05-02 22:33:25 +01:00
Neil Alexander
a115d18595
Refactor the multicast code a bit 2020-05-02 22:26:41 +01:00
Arceliar
20ef591013 fix some crashes with races during peer setup 2020-05-02 11:16:11 -05:00
Arceliar
15162ee952 fix a panic from a doubly closed channel in the simlink 2020-05-02 10:51:26 -05:00
Arceliar
12d448f6d5 Merge branch 'future' of https://github.com/yggdrasil-network/yggdrasil-go into sim 2020-05-02 10:40:00 -05:00
Arceliar
22526d89ec Merge branch 'future' of https://github.com/yggdrasil-network/yggdrasil-go into sim 2020-05-02 10:09:03 -05:00
Arceliar
72afa05029 test dial/listen in the sim 2020-05-02 10:01:09 -05:00
Arceliar
6d89570860 eliminate most sync.Pool use, gives a safer but slightly slower interface 2020-05-02 06:44:51 -05:00
Arceliar
9c818c6278 work-in-progress on a new sim 2020-04-26 07:33:03 -05:00
Arceliar
9d0969db2b prevent a hypothetical block on link message sending 2020-04-05 14:57:05 -05:00
Arceliar
09efdfef9a fix bug in switch actor's cleanRoot, strict nonce handling at the session level, and add separate queues per stream to the packetqueue code 2020-04-03 19:26:48 -05:00
Arceliar
03a19997b8 Merge branch 'develop' of https://github.com/yggdrasil-network/yggdrasil-go into buffers 2020-04-03 00:33:01 -05:00
Arceliar
945930aa2c WIP have peer actors queue packets, temporarily a single simple FIFO queue with head drop 2020-04-03 00:32:26 -05:00
Arceliar
7a314afb31 check if an error was returned by Core._init and return it if so 2020-03-31 18:14:20 -05:00
Arceliar
9834f222db more work in progress actorizing the remaining parts of the switch 2020-03-29 19:01:50 -05:00
Arceliar
15b850be6e fix deadlock when running updateTable in the switch 2020-03-29 01:38:32 -05:00
Arceliar
d47797088f fix shutdown deadlock 2020-03-29 00:48:41 -05:00
Arceliar
e926a3be6d work in progress actorizing core.peers and replacing switch worker with per-peer switch-generated lookupTable 2020-03-29 00:23:38 -05:00
Arceliar
16309d2862 Merge branch 'develop' of https://github.com/yggdrasil-network/yggdrasil-go into buffers 2020-03-28 21:10:34 -05:00
Arceliar
1ac3a18aab
Fix a typo in search.go's comments 2020-03-23 18:03:31 -05:00
Arceliar
a09a83530f update search description in comments 2020-03-22 18:42:42 -05:00
Arceliar
b651e57203 allow searches to continue as long as the next hop is closer than the Nth closest node found so far where N is currently 16 instead of 1 (makes searches more reliable), and cache all intermediate search steps in the dht 2020-03-19 21:11:17 -05:00
Arceliar
4809879995 refactor switch code so calling lookupTable.lookup does most of the important work 2020-03-10 01:03:07 -05:00
Arceliar
cfd8641925 fix conflicts with memleak bugfix 2020-03-10 00:03:26 -05:00
Arceliar
8075a60900 possibly fix memory leak (if this works, i don't yet understand how the leak was happening originally) 2020-03-08 19:32:14 -05:00
Arceliar
f308e81bf3 in the switch, keep a separate set of queues per peer instead of a global queue 2020-02-18 20:13:39 -06:00
Neil Alexander
471fcd7fdf
Update doc.go dial example 2020-02-16 23:57:05 +00:00
Neil Alexander
6c731c4efc
Fix comment on LocalAddr 2020-02-16 23:45:11 +00:00