4
0
mirror of https://github.com/cwinfo/yggdrasil-go.git synced 2025-07-11 11:56:28 +00:00
Commit Graph

53 Commits

Author SHA1 Message Date
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
5d5486049b add Conn.ReadNoCopy and Conn.WriteNoCopy that transfer ownership of a slice instead of copying, have Read and Write use the NoCopy versions under the hood and just manage copying as needed 2019-08-04 15:53:34 -05:00
6da5802ae5 don't block forever in Write if the session is cancelled, cleanup Conn.Read slightly 2019-08-04 02:08:47 -05:00
72ed541bf3 a little cleanup to Conn functions 2019-08-03 22:07:38 -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
853054eb62 Merge pull request #475 from Arceliar/misc
Misc
2019-07-29 20:24:49 +01:00
b66bea813b rename a couple of things and move a PutBytes so it happens sooner 2019-07-27 18:23:55 -05:00
9e118884d4 remove some commented code 2019-07-27 18:12:06 -05:00
e0a3055c2f get rid of session workers, new util.PutBytes/GetBytes logic 2019-07-27 18:10:32 -05:00
de1005e4fa Various API changes and simplifications to fix mobile builds 2019-07-27 15:00:09 +01:00
cf3ebe04a7 have Conn use Cancellation instead of manually setting up timers 2019-07-17 21:37:45 -05:00
5301207480 fix possible unsafe memory use in Conn.Read 2019-07-17 18:25:38 -05:00
307b24d8cb Fix Conn.Read/Conn.Write behavior after Conn.Close, get rid of second TUN/TAP conn reader goroutine, no longer use deadlines 2019-07-17 21:42:17 +01:00
747b50bb7c Try to improve handling of timeouts 2019-07-17 11:13:53 +01:00
86c30a1fc4 fix another panic from a send on a closed session worker channel, from races between Conn.Read/Write/Close 2019-07-01 18:55:07 -05:00
d39428735d recover if we try to send to a closed session worker due to a race between a Conn.Write call and a Conn.Close call 2019-06-29 18:50:21 -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
784acba823 I think this fixes the concurrent map read/write panic 2019-06-29 12:14:44 -05:00
e88bef35c0 get rid of old buffered session packets 2019-06-28 20:02:58 -05:00
5df110ac79 make Dial block until the search finishes, and use it as such 2019-06-28 18:42:31 -05:00
29a0f8b572 some minor refactoring to dht callbacks and searches, work in progress 2019-06-25 19:31:29 -05:00
4b56849b08 fix issue with sessions dying and never being fixed 2019-06-10 22:09:12 -05:00
1addf08ccd don't have Conn.Read return an error for temorary crypto failures from e.g. out of order packets, just drop the packet and keep blocking until there's usable traffic 2019-05-31 17:51:01 -05:00
9e086e70f0 Don't indefinitely block TUN/TAP reader goroutine when a conn error happens 2019-05-30 12:44:47 +01:00
0096d1ae3e Re-add ICMPv6 packet too big handling 2019-05-29 20:16:17 +01:00
5ea864869a don't spam searches for unused connections. todo: timeout old connections somehow 2019-05-23 20:27:52 -05:00
6469e39ff1 workaround to random timeouts 2019-04-26 22:42:05 -05:00
5d323861f0 properly fix the memory errors, it was caused by a function returning and PutBytes-ing a buffer before a worker had a chance to decrypt the buffer, so it would GetBytes the same buffer by dumb luck and then get an illegal overlap 2019-04-26 22:21:31 -05:00
01ea6d3d80 somehow this doesn't seem to deadlock or crash from buffer reuse (util.PutBytes), but I have no idea why it was doing that before and not now 2019-04-26 21:49:11 -05:00
15051b0a3c Add deadline timers, keep searches alive until they complete (or the conn is closed) to keep Write from blocking forever 2019-04-26 19:31:47 -05: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
d7a1c04748 It works, sort of, amazingly 2019-04-22 23:58:59 +01:00
e1a2d666bf Clean up router, tweaks 2019-04-22 23:12:13 +01:00
6e528799e9 Conn Read/Write operations will block while search completes 2019-04-22 22:38:37 +01:00
ea8948f378 TUN/TAP addr/subnet to Conn mappings, other fixes 2019-04-22 20:06:39 +01:00
9778f5d2b8 Fix search behaviour on closed Conns, various other fixes 2019-04-22 15:00:19 +01:00
47eb2fc47f Break deadlock by creating session recv queue when session is created instead of repointing at search completion, also make expired atomic 2019-04-22 11:20:35 +01:00
5dada3952c use a session worker to try to avoid mutex hell. compiles, but incomplete and doesn't work yet 2019-04-21 20:38:14 -05:00
0b8f5b5dda Tweaks 2019-04-21 12:28:46 +01:00
781cd7571f Fix race on tun conns, but still deadlocks if more than one connection is opened 2019-04-21 12:00:31 +01:00
79bcfbf175 Change some mutexes to atomics, change conns map to pointers, sort of works but seems to deadlock very easily 2019-04-21 11:50:41 +01:00
62621f2960 Some tweaks 2019-04-20 20:22:58 +01:00
d01662c1fb Try to convert TUN/TAP to use new yggdrasil.Conn, search masks are still broken 2019-04-20 16:32:27 +01:00
f3e742a297 Squash a whole load of races (and mutex half the world) 2019-04-20 11:53:38 +01:00
24281d4049 Fix Read, update sample 2019-04-19 23:47:11 +01:00
e31b914e38 Improve errors and handling of expired sessions 2019-04-19 23:30:43 +01:00
aac88adbed Listen-Accept-Read-Write pattern now works, amazingly 2019-04-19 22:57:52 +01:00
27b78b925d Move mutexes around 2019-04-19 21:23:15 +01:00
e3eadba4b7 Protect session nonces with mutexes, modify sent/received bytes atomically 2019-04-19 20:10:41 +01:00