97 Commits

Author SHA1 Message Date
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
3dc2242712 fix handling of keepAliveTimer and blocked state in link.go 2020-05-30 10:32:15 -05:00
Arceliar
1df305d31c simplify how blocking is detected and packets are dequeued 2020-05-27 18:53:14 -05:00
Arceliar
07206b5d46 resolve merge conflicts 2020-05-23 11:33:37 -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
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
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
62b9fab5f8 more work-in-progress, debugging why things are dropping so often 2020-05-16 18:56:04 -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
Neil Alexander
8b180e941a
Add SOCKS proxy auth (closes #423) 2020-05-09 11:24:32 +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
20ef591013 fix some crashes with races during peer setup 2020-05-02 11:16:11 -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
9d0969db2b prevent a hypothetical block on link message sending 2020-04-05 14:57:05 -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
9834f222db more work in progress actorizing the remaining parts of the switch 2020-03-29 19:01:50 -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
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
Dimitris Apostolou
73f50af3b7
Fix typos 2019-11-29 11:45:02 +02:00
Arceliar
3e07995518 it helps to actually set the flag... 2019-11-24 18:53:58 -06:00
Arceliar
27cc57dbbc attempt to prevent incorrect idle notification in switch, needs testing 2019-11-24 18:24:17 -06:00
Neil Alexander
6a22e6c9de
Initial connection upgrade/TLS peering support 2019-10-23 17:26:35 +01:00
Arceliar
ac58c3586e cleanup/comments 2019-09-25 17:53:25 -05:00
Arceliar
b9e74f34ec replace the send-to-self with a timer and an arbitrary timeout; i don't really like this but it seems to work better (1 ms is fast by human standards but an eternity for a syscall or the scheduler, so i think that's reasonable) 2019-09-24 18:28:13 -05:00
Arceliar
8c64e6fa09 explicitly notify the switch when a link appears to be blocked in a send instead of assuming this is the case for all idle links. how we decide when it's really blocked still needs testing/optimizing 2019-09-24 18:01:35 -05:00
Arceliar
93e81867fd have link.stop signal active links to close, have tcp.stop wait for all listeners and active connections to close 2019-09-19 19:15:59 -05:00
Neil Alexander
b959f53fee
Shut down listeners when stopping 2019-09-18 16:32:22 +01:00
Neil Alexander
846df4789a
Be more verbose when a peer or listener is badly formatted 2019-09-18 15:01:19 +01:00
Neil Alexander
fc9a1c6c31
Simplify reconfiguration 2019-08-28 19:31:04 +01:00
Neil Alexander
e553f3e013
Reconfigure functions now ran by actors 2019-08-28 12:46:12 +01:00
Arceliar
3845f81357 update to latest phony, adjust interface use accordingly 2019-08-27 19:43:54 -05:00
Arceliar
4d9c6342a7 more link updates 2019-08-26 18:37:38 -05:00
Arceliar
c97dd4ad28 fix dial bug 2019-08-26 00:38:14 -05:00
Arceliar
ab59129557 have the writer clean things up. note that their still seem to be bugs in the main linkInterface actor's state machine--links sometimes just die, presumably because they're dropped from the switch and never replaced 2019-08-25 23:24:18 -05:00
Arceliar
bd3eaefb72 more link migration 2019-08-25 22:55:17 -05:00
Arceliar
b5b179904b ugly work-in-progress to migrate link to the actor model 2019-08-25 22:19:20 -05:00
Arceliar
502f2937a9 a couple race fixes and use timer.AfterFunc instead of sleeping goroutines or ticker in a few places 2019-08-25 17:00:02 -05:00
Arceliar
a3d4d8125b make the main library reconfiguration more actor-friendly 2019-08-25 12:10:59 -05:00
Arceliar
aa30c6cc98 upgrade phony dependency and switch to its new interface 2019-08-25 10:36:09 -05:00
Arceliar
48bbdac9b3 add a helper actor to the link reader to make it play nicer with backpressure 2019-08-24 16:27:12 -05:00
Arceliar
99be6b037d stop synchronizing message reads for now, not 100% safe but I don't have any better ideas 2019-08-24 16:13:34 -05:00
Arceliar
998c76fd8c more switch migration 2019-08-24 15:22:46 -05:00
Arceliar
88161009e9 more peer migration 2019-08-24 12:55:49 -05:00