Commit Graph

115 Commits

Author SHA1 Message Date
name e696b18187 format using goimports 2023-03-07 17:09:18 +08:00
Andy Wang 91106f3c49
Prevent terminal msg from being overwritten to later concurrent writes 2021-01-12 20:59:30 +00:00
Andy Wang a643402e11
Remove redundant lazy allocation 2020-12-31 23:53:22 +00:00
Andy Wang b4d65d8a0e
Use sync.Map for lock free pickRandConn 2020-12-29 19:53:14 +00:00
Andy Wang 8ab0c2d96b
Redo the implementation of switchboard and remove the need for connId 2020-12-29 14:24:54 +00:00
Andy Wang 8dd4ae4bef
Better conform message data length to TLS standards 2020-12-29 00:16:24 +00:00
Andy Wang 439b7f0eb3
Improve encapsulation 2020-12-28 12:15:01 +00:00
Andy Wang 415523f10a
Refactor obfuscate and deobfuscate functions to reduce a layer of indirection 2020-12-26 00:49:36 +00:00
Andy Wang 2f17841f85
Use Compare-And-Swap for atomic booleans indicating session and switchboard closed 2020-12-25 23:16:57 +00:00
Andy Wang 4f34e69006
Use pooled buffer for session closing frame 2020-12-24 13:42:22 +00:00
Andy Wang 881f6e6f9d
Use sync.Pool for obfuscation buffer 2020-12-24 11:35:29 +00:00
Andy Wang 0209bcd977
Fix race condition in steam closing. Fall back to temp buffer allocation 2020-12-23 22:33:01 +00:00
Andy Wang 5c5e9f8c14
Prevent unnecessary allocation in stream closing 2020-12-23 17:28:28 +00:00
Andy Wang 35f41424c9
Use default hashmap to store streams. Avoid allocating a stream object on receiving every single frame 2020-12-22 20:21:40 +00:00
Andy Wang ff503b06a8
Only allocate and copy frame object into sorter heap when necessary (out of order frame) 2020-12-22 19:39:13 +00:00
Andy Wang 5a3f63f101
Reduce allocation of frame objects on receiving data 2020-12-22 14:45:29 +00:00
Andy Wang 104117cafb
Fix one instance of not accessing recvBuf via the getter 2020-12-22 14:32:41 +00:00
Andy Wang 4bc80af9a1
Lazily allocate stream receiving buffer 2020-12-22 14:12:00 +00:00
Andy Wang 42f36b94d3
Achieve zero allocation when writing data through stream 2020-12-22 13:16:48 +00:00
Andy Wang 0473d71bea
Fix overflow in padding length calculation 2020-12-19 20:49:21 +00:00
Andy Wang 61b1031da6
Reduce code duplication in session closing 2020-12-06 10:50:45 +00:00
Andy Wang c0040f20c3
Use time.AfterFunc for session inactivity timeout to reduce goroutine count 2020-12-05 21:38:16 +00:00
Andy Wang 39c06a6e1d
Update comment 2020-12-04 22:27:24 +00:00
Andy Wang 0f6e0d37b5 Rename constants to camel case 2020-10-21 16:42:24 +01:00
Andy Wang 11cfeb4fa3 Improve comments 2020-10-21 16:37:32 +01:00
Andy Wang 735975ef88 Fix typo and remove redundant benchmark 2020-10-21 15:53:39 +01:00
Andy Wang 651854904f Improve comments 2020-10-21 00:54:36 +01:00
Andy Wang e141323c9d Fix obfsBuf being too small on closing frame 2020-10-18 21:37:41 +01:00
Andy Wang f8f02bfc43 Parameterise session inactivity timeout 2020-10-18 15:51:57 +01:00
Andy Wang 0fc27d747e Reduce unnecessary allocation size on stream closing 2020-10-18 15:37:14 +01:00
Andy Wang c7c3f7706d Refactor for clarity and add comments 2020-10-18 14:42:47 +01:00
Andy Wang 3e133090f0 Give more descriptive names to multiplex objects 2020-10-15 22:51:36 +01:00
Andy Wang 9887649b88 Refactor Singleplexing 2020-10-15 21:32:38 +01:00
Andy Wang 1c8903f249 Log repeat stream closing on Debug level 2020-04-20 23:54:41 +01:00
Andy Wang 4a81683e44 Code cleanup and move stuff around 2020-04-14 14:14:51 +01:00
Andy Wang 53c0c6bafe Explicitly allow buf overlap in obfs 2020-04-13 22:48:28 +01:00
Andy Wang e03080d3ba Lock stream sending in all cases 2020-04-13 16:39:19 +01:00
Andy Wang c8368bcc7e Implement stream ReadFrom (flimsy) 2020-04-12 23:01:30 +01:00
Andy Wang f05cc19dbc Assign connId only when needed 2020-04-12 12:51:00 +01:00
Andy Wang 14787a7057 Implement stream WriteTo 2020-04-12 12:43:24 +01:00
Andy Wang 783d016a29 Fix a race on closing stream 2020-04-12 01:35:17 +01:00
Andy Wang 58e0797578 Synchronise stream.Write 2020-04-12 01:34:21 +01:00
Andy Wang 008fd8f0a3 Lazy allocation 2020-04-12 00:49:49 +01:00
Andy Wang e9243a2e9f Framing in Stream.Write to prevent silent short write 2020-04-10 18:48:36 +01:00
Andy Wang a51d45f41a Avoid unnecessary pass by pointer 2020-04-10 16:09:05 +01:00
Andy Wang e41394c83c Set frame size limit through multiplexer 2020-04-09 16:37:46 +01:00
Andy Wang 7bfae8accd Refactor client side transport (breaks server) 2020-04-08 20:53:09 +01:00
Andy Wang 2dc7c6d6e1 Correct switchboard valve's scope 2020-04-08 15:15:08 +01:00
Andy Wang e52daf1a39 Set defaults properly 2020-04-08 15:13:49 +01:00
Andy Wang 545164a300 Make send/receive buffer sizes configurable 2020-04-08 15:07:35 +01:00