4
0
mirror of https://github.com/cwinfo/yggdrasil-go.git synced 2025-07-15 20:48:55 +00:00
Commit Graph

124 Commits

Author SHA1 Message Date
e9bacda0b3 Catch a nil pointer when sending a session packet to a conn, this shouldn't happen but it's caused multiple crashes in conn.recvMsg 2019-09-18 14:07:26 +01:00
40204caab6 Try to fix race condition in sessions.reset 2019-09-18 14:03:31 +01:00
cabdc27a54 change how nonce is tracked, so we allow packets if we've recently received a highest nonce ever, but don't bother tracking all received nonce values, this means duplicate packets are possible but only for a small window of time (and significantly reduces memory usage per session) 2019-08-31 17:39:05 -05:00
7649ea0f9f remove sessionInfo.doFunc, have the api just use phony.Block instead 2019-08-29 21:59:28 -05:00
fc9a1c6c31 Simplify reconfiguration 2019-08-28 19:31:04 +01:00
e553f3e013 Reconfigure functions now ran by actors 2019-08-28 12:46:12 +01:00
a8b323acdd have an actor manage the crypto worker pool instead of each session trying to use it directly, this should result in a fairer round-robin behavior in cases where crypto congestion is the bottleneck 2019-08-27 20:01:37 -05:00
3845f81357 update to latest phony, adjust interface use accordingly 2019-08-27 19:43:54 -05:00
dffd70119d remove session shutdown goroutine, just send a message instead 2019-08-25 19:13:47 -05:00
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
a3d4d8125b make the main library reconfiguration more actor-friendly 2019-08-25 12:10:59 -05:00
aa30c6cc98 upgrade phony dependency and switch to its new interface 2019-08-25 10:36:09 -05:00
5312b21665 Merge branch 'develop' of https://github.com/yggdrasil-network/yggdrasil-go into actors 2019-08-24 18:30:15 -05:00
f62bc842ae fix memory leak in session nonce map 2019-08-24 18:23:54 -05:00
1e346aaad0 have the conn actor receive messages from the session actor and either pass them to a callback or buffer them in a channel for Read to use if no callback was set 2019-08-24 01:52:21 -05:00
da9f7151e3 more conn migration 2019-08-24 00:17:37 -05:00
cf9880464b explicitly consider the session finished case, and make a note that we could fix the packet drop situation by making the Conn into an actor too 2019-08-23 22:36:59 -05:00
e3603c0462 clean up unused session code 2019-08-23 22:25:40 -05:00
533da351f9 fix actor EnqueueFrom stack overflow (use nil now to send from self) and replace session send/recv workers with actor functions 2019-08-23 22:23:01 -05:00
436c84ca33 refactor sessions to store a pointer to router instead of core 2019-08-23 20:53:00 -05:00
9835c63818 refactor things the router owns (dht, sessions, searches) into that struct, to make the ownership more explicit 2019-08-23 20:26:15 -05:00
bbcbbaf3b1 start migrating sessionInfo to be an actor 2019-08-23 20:05:18 -05:00
226dd6170d hopefully prevent a deadlock 2019-08-20 18:49:53 -05:00
fd5f3ca764 fix heap pop order 2019-08-16 23:07:40 -05:00
03b8af9f1a keep track of recent nonces with a heap and a map instead of a fixed-size bitmask 2019-08-16 18:37:16 -05:00
b2cb1d965c avoid leaking sessions when no listener exists, or blocking if it's busy 2019-08-12 18:22:30 -05:00
5e81a0c421 Use a separate buffer per session for incoming packets, so 1 session that floods won't block other sessions 2019-08-07 18:08:31 -05:00
9ab08446ff make sure the sessionInfo.recvWorker doesn't block if sinfo.recv somehow fills 2019-08-07 17:40:50 -05:00
790524bd1c copy/paste old flowkey logic into a util function, add a struct of key and packet, make WriteNoCopy accept this instead of a slice 2019-08-06 19:25:55 -05:00
679866d5ff have createSession fill the sessionInfo.cancel field, have Conn use Conn.session.cancel instead of storing its own cancellation, this should prevent any of these things from being both nil and reachable at the same time 2019-08-05 19:11:28 -05:00
979c3d4c07 move some potentially blocking operations out of session pool workers, minor cleanup 2019-08-04 16:29:58 -05:00
1e6a6d2160 use session.cancel in the router to make blocking safe, reduce size of fromRouter buffer so the drops in the switch are closer to the intended front-drop behavior 2019-08-04 02:21:41 -05:00
cbbb61b019 fix another drain on the bytestore 2019-08-04 00:00:41 -05:00
00e9c3dbd9 do session crypto work using the worker pool 2019-08-03 23:27:52 -05:00
befd1b43a0 refactor session worker code slightly 2019-08-03 23:14:51 -05:00
b9987b4fdc reduce time spent with a mutex held in sessionInfo.recvWorker 2019-08-03 22:47:10 -05:00
099bd3ae1e reduce part of sendWorker that needs to keep a mutex 2019-08-03 22:35:10 -05:00
5dfc71e1ee put bytes back when done 2019-08-03 22:00:47 -05:00
df0090e32a Add per-session read/write workers, work in progress, they still unfortunately need to take a mutex for safety 2019-08-03 21:46:18 -05:00
e0a3055c2f get rid of session workers, new util.PutBytes/GetBytes logic 2019-07-27 18:10:32 -05:00
cd29fde178 temporary workaround to concurrency bug in sessions.getSharedKey 2019-06-29 19:32:15 -05:00
7d58a7ef3e fix channel multiple close bug and concurrency bug in the way sessionInfo.close was being called 2019-06-29 17:44:28 -05:00
818eca90db fix nil pointer deref if searches fail, block dial until a search exceeds or a timeout passes (todo: replace timer with context) 2019-06-29 16:10:02 -05:00
e88bef35c0 get rid of old buffered session packets 2019-06-28 20:02:58 -05:00
e7cb76cea3 clean up unused old session maps 2019-06-28 19:21:44 -05:00
f545060e89 Add notes on isSessionAllowed checks 2019-06-13 23:37:53 +01:00
720a078a35 Add SetSessionGatekeeper
This allows you to define a function which determines whether a session connection (either incoming or outgoing) is allowed based on the public key.
2019-06-11 10:52:21 +01:00
3b6c726a3c Fix bug where MTU was ignored by sessions, resulting in default 1280 2019-05-29 19:11:12 +01:00
78eb40cbad Record session uptime (purely for the admin socket) 2019-05-29 12:59:36 +01:00
0059baf36c add a newConn function that returns a pointer to a Conn with atomics properly initialized 2019-04-26 18:07:57 -05:00