683 Commits

Author SHA1 Message Date
Cameron Gutman
431e188b07 Allow the input queue to drain before terminating the thread
This ensures any final input messages (like key ups) make it to the host
2021-05-15 22:01:50 -05:00
Cameron Gutman
71c9ff0d91 Elide the wait if the queue head is already non-null 2021-05-15 21:31:45 -05:00
Cameron Gutman
edf1838708 Expose RTT information from ENet 2021-05-15 13:58:54 -05:00
Cameron Gutman
5feb3b6f90 Dynamically adjust wait time to hit the next RTO 2021-05-15 12:47:20 -05:00
Cameron Gutman
50c0648de2 Run a full enet_host_service() rather than just enet_host_flush() on send 2021-05-15 12:26:01 -05:00
Cameron Gutman
97216e1704 Wait for ENet socket readability rather than just sleeping 10 ms 2021-05-15 00:15:16 -05:00
Cameron Gutman
43eb36e17a Simplify and improve graceful disconnect logic 2021-05-14 22:36:13 -05:00
Cameron Gutman
387ff48a65 Perform a graceful disconnection if the termination was locally initiated 2021-05-14 22:06:07 -05:00
Cameron Gutman
1b3c14a792 Increase maximum input queue size 2021-05-14 21:07:14 -05:00
Cameron Gutman
132833deeb Limit RTO to 2x RTT and fix early peer timeout expiration 2021-05-14 20:44:19 -05:00
Cameron Gutman
a1a150c300 Refactor IDR/RFI requests to simplify code and fix race conditions 2021-05-14 20:41:20 -05:00
Cameron Gutman
cd62147cdf Print a warning when the input queue reaches the maximum size 2021-05-14 20:36:25 -05:00
Cameron Gutman
7743899251 Optimize LBQ to avoid unnecessary syscalls 2021-05-14 18:42:01 -05:00
Cameron Gutman
5d09d43b08 Disable RFI at 4K until the problems are understood 2021-05-06 22:17:04 -05:00
Cameron Gutman
ccaca624f3 Attempt to fix audio latency issues on some PCs 2021-05-04 10:21:41 -05:00
Cameron Gutman
65047ac0e2 Switch to VS2019 build images for CI
Requires suppressing warning C5105 caused by Windows SDK headers
2021-04-29 17:59:38 -05:00
Cameron Gutman
b0737b882d Adjust MSVC warning level 2021-04-29 17:51:20 -05:00
Mariotaku Lee
179970a0d5 Behavior changes to CMakeLists.txt
- Allows static library compilation
 - Links to MBedTLS/OpenSSL based on build option
 - Limits visibility of some defines and headers
2021-04-29 17:40:47 -05:00
Cameron Gutman
bc1b5a1b2f Fix Linux build 2021-04-29 17:40:13 -05:00
Cameron Gutman
a000f9f8b8 Validate that claimed length doesn't exceed the actual length 2021-04-29 17:26:59 -05:00
Cameron Gutman
8f371343cd Consolidate includes 2021-04-29 17:22:15 -05:00
Cameron Gutman
da68e64d9b Fix various MSVC warnings 2021-04-29 17:21:12 -05:00
Cameron Gutman
77ed77b93b Pull ENet changes from upstream 2021-04-29 09:44:32 -05:00
Cameron Gutman
252a50bb75 Disable WSAECONNRESET errors for UDP sockets on Windows 2021-04-28 20:37:20 -05:00
Cameron Gutman
7549243f40 Add the correct definition for ECONNREFUSED for Windows 2021-04-28 17:30:00 -05:00
Cameron Gutman
9c92c12fea Prevent errno.h from including incompatible error codes with Winsock codes 2021-04-28 17:29:33 -05:00
Cameron Gutman
3ae03998a2 Add retry logic for RTSP handshake connection refused error
This can happen due to a race condition between GFE completing the launch request and starting to listen on TCP 48010
2021-04-28 17:08:27 -05:00
Cameron Gutman
068f7aa9d9 Allow connection interruption during the RTSP handshake 2021-04-28 17:06:04 -05:00
Cameron Gutman
bce9f82844 Fix strict aliasing violation (and save a byteswap on each packet) 2021-04-28 17:05:41 -05:00
Cameron Gutman
fe205d838d Don't check for errors from sendto() in the ping threads 2021-04-28 17:04:44 -05:00
Cameron Gutman
83b1b17f87 Add specific logging for frames dropped completely 2021-04-27 17:39:00 -05:00
Cameron Gutman
c1befbe2a8 Improve audio resync logic to use initial receive time rather send time 2021-04-26 22:43:49 -05:00
Cameron Gutman
33c4e98152 Adjust initial audio resync drop time based on connection handshake latency 2021-04-26 21:39:36 -05:00
Cameron Gutman
7174caf5f1 Implement support for multi-FEC frames 2021-04-26 20:36:07 -05:00
Cameron Gutman
9a5dbcf31c Create a second queue for completed FEC blocks 2021-04-26 20:26:16 -05:00
Cameron Gutman
b33e9fbcde Fix list corruption on entry removal 2021-04-26 20:24:39 -05:00
Cameron Gutman
ca4019c09f Refactor FEC queue in preparation for multi-block frame support 2021-04-26 17:09:50 -05:00
Cameron Gutman
8dab1ee300 Use stdint.h types for Video.h 2021-04-26 17:08:44 -05:00
Cameron Gutman
ae92f15b0a Use SRW locks for our mutex on Windows
These avoid a kernel transition for uncontended cases
2021-04-25 15:04:12 -05:00
Cameron Gutman
13041e0323 Further optimization to avoid needless calls to EVP_aes_128_gcm() and EVP_aes_128_cbc() 2021-04-22 17:49:51 -05:00
Cameron Gutman
8354c403f4 Optimize OpenSSL backend to avoid redundant reinitialization
It is best to pass as few parameters to EVP_*Init_ex() as possible.
Passing a key, IV, or cipher will cause redundant work to happen behind
the scenes as OpenSSL doesn't check whether they have actually changed.

This avoids a malloc()/free() and redoing AES key expansion for every
message that is encrypted and decrypted.
2021-04-22 17:34:48 -05:00
Cameron Gutman
29d2cc6d5b Improve MbedTLS implementation of AES-CBC 2021-04-22 17:08:35 -05:00
Cameron Gutman
d7549cd953 Use array initializers compatible with MSVC 2021-04-22 00:32:41 -05:00
Cameron Gutman
db81f1e512 Add support for audio stream encryption
Clients must opt-in using the new encryptionFlags field
2021-04-22 00:20:17 -05:00
Cameron Gutman
55cf1f8d30 Remove unnecessary calls to EVP_CIPHER_CTX_reset()
EVP_EncryptInit_ex() and EVP_DecryptInit_ex() free the cipher state as required
2021-04-22 00:17:46 -05:00
Cameron Gutman
625ec431eb Improve AES-CBC code in preparation for audio encryption 2021-04-21 23:59:14 -05:00
Cameron Gutman
3abd3af4b2 Convert 'supportsHevc' and 'enableHdr' fields to bool type 2021-04-21 23:32:43 -05:00
Cameron Gutman
b24a71ab0b Add explicit IDR frame request packet for GFE 3.22 2021-04-21 17:52:05 -05:00
Cameron Gutman
3adacb876d Fix incorrect checks for AF_INET6 2021-04-19 23:01:17 -05:00
Cameron Gutman
221af82950 Add workaround for false GCC warning in CI 2021-04-18 00:15:27 -05:00