Commit Graph

209 Commits

Author SHA1 Message Date
Andy Wang
c1f3408c2c Make key lengths explicit 2020-04-07 21:15:28 +01:00
Andy Wang
443aeecf5f Use cbeuw/connutil for connection testing 2020-04-07 20:59:32 +01:00
Andy Wang
402cfc9e25 Logging for silent connections 2020-04-05 01:15:45 +01:00
Andy Wang
8d84ebd145 Code styles 2020-04-05 00:56:43 +01:00
Andy Wang
dc262f7ca5 actually change the connId of a stream upon new assignment in send 2020-04-05 00:52:06 +01:00
Andy Wang
e9afae72f0 better stream closing error message 2020-04-05 00:51:28 +01:00
Andy Wang
5e1931a11c Ineffectual assignments 2020-04-04 16:10:43 +01:00
Andy Wang
766c27a129 Refactor if to switch case 2020-04-03 22:46:07 +01:00
Andy Wang
e33afb258a extract util testing function 2020-03-16 11:38:30 +00:00
Andy Wang
47410dbb97 add comments 2020-03-15 23:56:45 +00:00
Andy Wang
db8dd19c9d fix broken benchmarks 2020-03-15 23:55:56 +00:00
Andy Wang
517a6d6e57 Handle error and retry for Crypto.rand 2020-02-01 23:46:46 +00:00
Andy Wang
13b66f6fef Remove redundant code 2020-01-24 13:30:17 +00:00
Andy Wang
6f34229aa0 Make and add stream upon reception of all new streamIDs even if they are closing 2020-01-23 20:30:31 +00:00
Andy Wang
99fa812594 Fix pickRandConn bad loop 2020-01-22 22:17:18 +00:00
Andy Wang
3f5fdae284 Close session immediately after receiving signal 2020-01-22 21:30:30 +00:00
Andy Wang
d65aee725a Improve stream closing logic and add tests 2020-01-22 21:12:32 +00:00
Andy Wang
e7e4cd5726 Refactor frame reception processor 2020-01-09 10:22:40 +00:00
notsure2
d35472aea1 Store stream in packet receive path instead of asynchronously to fix https://github.com/cbeuw/Cloak/issues/74 2019-12-14 12:48:45 +00:00
Andy Wang
bdd5308169 Code style clean up 2019-11-08 17:06:20 +00:00
Andy Wang
fbee919f47 Use constants for Closing value 2019-11-03 20:28:43 +00:00
Andy Wang
c26be98e79 Use sync.Map in multiplex instead of manual locks 2019-11-03 12:22:12 +00:00
Andy Wang
9cab4670f4 Make buffer close non-blocking 2019-11-02 21:02:35 +00:00
Andy Wang
4c17923717 Make write error close session as well 2019-10-20 15:37:41 +01:00
Andy Wang
e2b21dae9f Fix tests 2019-10-20 15:21:31 +01:00
Andy Wang
57f0c3d20a Close session when one connection drops 2019-10-16 23:00:23 +01:00
Andy Wang
34a4805c34 Add tests 2019-10-16 23:00:11 +01:00
Andy Wang
a1b719b15f Add terminal message 2019-10-15 22:24:33 +01:00
Andy Wang
beb6568ce0 Check before passive close 2019-10-15 22:06:23 +01:00
Andy Wang
3b3cd277f8 Fix stream not closing 2019-10-15 22:06:11 +01:00
Andy Wang
67159abcf4 Add tests 2019-10-15 21:59:13 +01:00
Andy Wang
6580e38e44 Introduce a special Session closing frame 2019-10-14 15:34:14 +01:00
Andy Wang
c9318dc90b Fix potential deadlocks 2019-10-08 23:11:16 +01:00
Andy Wang
96215f116a Fix #61 2019-09-22 10:44:16 +01:00
Andy Wang
854dc422a2 Update some comments 2019-09-01 23:14:28 +01:00
Andy Wang
339b324946 Working direct WebSocket transport 2019-09-01 20:23:45 +01:00
Andy Wang
75dc91c15c Fix wrong wait type 2019-08-31 15:33:23 +01:00
Andy Wang
4861efbc50 Fix #54 2019-08-31 15:32:57 +01:00
Andy Wang
9dacb9d8fd Handle closing frame properly in datagramBuffer 2019-08-30 21:00:15 +01:00
Andy Wang
3bfaa5c1c1 Receiving a closing frame no longer returns error on Write 2019-08-30 20:50:39 +01:00
Andy Wang
0bc48a5a2e Remove redundant err checking TODO 2019-08-30 20:45:06 +01:00
Andy Wang
3f532ae065 writeFrame returns error 2019-08-30 20:43:04 +01:00
Andy Wang
a131af3439 Remove unnecessary Len check 2019-08-30 20:39:23 +01:00
Andy Wang
cfa0a97edf Rename a test set 2019-08-30 17:07:08 +01:00
Andy Wang
4fb1f55e2d Use 64bit frame Seq to prevent nonce reuse 2019-08-27 15:06:28 +01:00
Andy Wang
2006e5971a Refactor frameSorter and datagramBuffer under one interface 2019-08-22 11:48:10 +01:00
Andy Wang
c3ff3f5d1a Fix the weird nil pointer again 2019-08-21 13:14:23 +01:00
Andy Wang
bbb0d35e80 Remove conns from map once switchboard.CloseAll is called 2019-08-20 23:15:36 +01:00
Andy Wang
8b99e419b3 Check buffer length for datagramBuffer.Read() in case the datagram is larger than the buffer 2019-08-20 22:50:58 +01:00
Andy Wang
87a7684e10 More comments 2019-08-20 22:43:04 +01:00
Andy Wang
eabe113547 Add Stream Timeout 2019-08-19 23:23:41 +01:00
Andy Wang
ba467e8a32 Only store stream in map after Accept 2019-08-19 11:31:56 +01:00
Andy Wang
c8184fc1d2 Switch back to juju/ratelimit 2019-08-17 11:23:26 +01:00
Andy Wang
52796ad0b1 recvDataFromRemote returns err 2019-08-16 23:47:15 +01:00
Andy Wang
c276f504b5 Use ENUM constants for encryption methods 2019-08-16 23:44:40 +01:00
Andy Wang
e9a3c29429 Add some tests 2019-08-16 23:39:41 +01:00
Andy Wang
c1b1d5d8ba Fix accidentally removed tx qos 2019-08-14 11:56:55 +01:00
Andy Wang
44a09219f7 Experimental support for UDP 2019-08-14 11:56:55 +01:00
Andy Wang
c19c43f6e8 Server side UDP to proxy server 2019-08-14 11:56:55 +01:00
Andy Wang
c36ec04ce5 Add unordered mode 2019-08-14 11:56:55 +01:00
Andy Wang
8967819830 Fix accidentally removed tx qos 2019-08-14 10:28:08 +01:00
Qian Wang
71e48a1947 Refactor switchboard configuration and add unordered option 2019-08-12 00:48:20 +01:00
Qian Wang
cb672a99de Refactor session configuration 2019-08-12 00:22:15 +01:00
Qian Wang
abc83a9190 Potential fix to an edge case nil pointer 2019-08-09 10:36:27 +01:00
Qian Wang
ea5bb44b0a Add and edit some tests 2019-08-08 15:08:16 +01:00
Qian Wang
fc9f227ccf stream.Write now returns the correct amount of data written 2019-08-08 10:56:29 +01:00
Qian Wang
572fe8486a Rename a variable and modify a test 2019-08-07 19:08:37 +01:00
Qian Wang
586cc5ebb6 Optimise deobfs 2019-08-07 17:53:34 +01:00
Qian Wang
e3de2b9852 Fix a potential make len<0 2019-08-07 17:22:40 +01:00
Qian Wang
b7549c0664 Fix a potential nil pointer 2019-08-07 17:06:48 +01:00
Qian Wang
e244340885 Modify some tests 2019-08-07 17:06:31 +01:00
Qian Wang
d99b4009b2 Differentiate concrete types of LimitedValve and UnlimitedValve to avoid unnecessary atomic.AddUint64 since it has non-trivial overhead on embedded systems 2019-08-07 15:43:42 +01:00
Qian Wang
e7aa4cd04b Fix a stuck mutex 2019-08-07 13:59:27 +01:00
Qian Wang
81f233c226 Update obfs_test 2019-08-07 00:19:30 +01:00
Qian Wang
acb999ee64 Force aead key sizes as 32 bytes due to chacha20-poly1305 2019-08-07 00:15:55 +01:00
Qian Wang
581c2332d1 Fix obfs_test as it wasn't really testing encryptionMethod other than aes-gcm 2019-08-07 00:15:12 +01:00
Qian Wang
3002c87a49 Fix a server crashing null pointer 2019-08-06 21:04:08 +01:00
Qian Wang
3dc4c6fb3f Add more trace logs 2019-08-06 11:19:47 +01:00
Qian Wang
01036086c7 Change the frame distribution strategy so that each stream is assigned a fixed underlying TCP connection to send its frames to reduce framesorter ooo count 2019-08-05 22:14:11 +01:00
Qian Wang
fac381dbca Refactor switchboard 2019-08-05 14:33:20 +01:00
Qian Wang
d46fa74924 Refactor frame sorter 2019-08-05 13:32:53 +01:00
Qian Wang
9fcc328797 Fix a mutex deadlock 2019-08-05 13:17:02 +01:00
Qian Wang
a513663a72 Use a fork of ratelimit for unlimited bucket 2019-08-04 17:16:18 +01:00
Qian Wang
640f81461c Buffer reuse in obfs 2019-08-04 10:38:49 +01:00
Qian Wang
9fa37e327f Use exclusively salsa20 for header encryption 2019-08-03 22:05:06 +01:00
Qian Wang
57fc31a5fc Add tests 2019-08-02 23:23:54 +01:00
Qian Wang
237b9d131b Add and fix some tests 2019-08-02 20:50:08 +01:00
Qian Wang
429da0e0d9 Add unit tests 2019-08-02 18:00:27 +01:00
Qian Wang
e75c713385 Refactor session struct's obfs fields 2019-08-02 16:37:48 +01:00
Qian Wang
33f232475d Improve logging 2019-08-02 15:45:33 +01:00
Qian Wang
726a405a26 TLS1.3 2019-08-02 01:01:19 +01:00
Qian Wang
0684f5df40 Refactor payload cipher 2019-08-01 00:43:33 +01:00
Qian Wang
2735de4f96 Fix bad cryptography 2019-08-01 00:16:33 +01:00
Qian Wang
6af97e2c22 Optimise session closing 2019-07-28 23:27:59 +01:00
Qian Wang
059a222394 Use defer to unlock mutexes 2019-07-28 12:52:57 +01:00
Qian Wang
bf8d373f79 Stream optimisations 2019-07-28 11:58:45 +01:00
Qian Wang
0f9830e716 Update test 2019-07-28 11:06:15 +01:00
Qian Wang
73c0b8567e Memory optimisation 2019-07-28 00:15:27 +01:00
Qian Wang
6fc48c5dae Fix a goroutine leak 2019-07-27 21:38:08 +01:00
Qian Wang
0e08683828 Use a buffered pipe to buffer sorted data 2019-07-27 19:53:16 +01:00