Cameron Gutman
77c5d5c282
Tune SO_RCVBUF logic
...
- Calculate desired SO_RCVBUF by packet size for the video socket
- Use the OS default SO_RCVBUF for audio and STUN sockets
2023-07-25 18:30:19 -05:00
Cameron Gutman
be1a48e856
Treat WSA_IO_PENDING as a receive timeout
2023-02-13 20:20:44 -06:00
Sunguk Lee
c6d68d9e87
vita: Reduce TCPv4_MSS to 512 to avoid setsockopt error
...
`setsockopt` with 536 returned EINVAL error.
SCE would use simple value for limit
2022-01-24 22:19:09 -06:00
Sunguk Lee
4a4a23c7c4
vita: Replace select to poll
...
now newlib support [this][1]
[1]: https://github.com/vitasdk/newlib/pull/70
2022-01-24 22:16:59 -06:00
Mariotaku
5ed9a6508a
Fixed build issue with MinGW ( #64 )
2021-09-16 01:30:47 -05:00
Cameron Gutman
2660a05084
Fix GCC build
2021-07-01 22:28:17 -05:00
Cameron Gutman
52250b4815
Use O_NONBLOCK for platforms without support for FIONBIO
2021-07-01 22:15:26 -05:00
Cameron Gutman
c00f4e15ae
Use poll() instead of SO_RCVTIMEO for RTSP timeout support
...
poll() is more portable than SO_RCVTIMEO
2021-07-01 22:10:46 -05:00
GaryOderNichts
e5b39af6a5
some Wii U changes
2021-06-05 01:59:58 +02:00
GaryOderNichts
0c66a50e2d
Wii U platform support
2021-06-04 21:36:54 +02:00
Cameron Gutman
122ce4a568
Enable SO_RCVTIMEO for RTP sockets on Windows
2021-05-25 20:38:30 -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
252a50bb75
Disable WSAECONNRESET errors for UDP sockets on Windows
2021-04-28 20:37:20 -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
3979dbd082
Allow compilation on OSes without IPv6 support
2021-04-17 23:40:36 -05:00
Cameron Gutman
a64af8d8cf
Fix unused variable warning on NaCl
2021-01-09 20:08:22 -06:00
Cameron Gutman
5f9f7ce407
Code cleanup: use stdbool.h
2020-11-30 20:38:13 -06:00
Cameron Gutman
f15582a090
Update pollSockets() fallback for Vita compatibility
2020-10-22 17:20:07 -05:00
Cameron Gutman
dbedf938d4
Don't require linking to wlanapi.dll
...
This is not always available on Windows Server
2020-09-08 18:26:36 -07:00
Cameron Gutman
128c1503f2
Don't perform the connection test in resolveHostName() for single addresses unless required
2020-09-06 17:11:14 -07:00
Cameron Gutman
6ca0b93809
Ignore ICMP Port Unreachable messages on our UDP sockets
...
These messages can falsely indicate failure in cases where the UDP socket
for audio or video hasn't opened yet when we start to send our PING packets.
It is also problematic when sending STUN requests to multiple IP addresses.
If one returns an ICMP Port Unreachable, it can cause us to fail the entire set
of requests even when other IP addresses do respond.
2020-09-06 14:04:57 -07:00
Cameron Gutman
38fe65f8bd
Remove unused variable
2020-08-29 21:09:35 -07:00
Cameron Gutman
a89fcb8a46
Always use the test port
2020-08-29 19:14:53 -07:00
Cameron Gutman
9064d4931f
Add createSocket() helper to reduce code duplication
2020-08-29 18:54:11 -07:00
Cameron Gutman
5ddd53e17f
Enable media streaming mode for 802.11 WLAN interfaces on Windows
2020-08-11 22:12:58 -07:00
Cameron Gutman
117a7c637f
Switch to poll() to be safe against stack corruption from exceeding FD_SETSIZE
...
Fortunately, the fd_set definition is not prone to stack corruption on Windows,
because FD_SETSIZE is the maximum number of sockets in a fd_set, not
the maximum value socket file descriptor that can be stored in a fd_set.
https://beesbuzz.biz/code/5739-The-problem-with-select-vs-poll
2020-07-26 20:27:58 -07:00
Cameron Gutman
e938d84cdb
Use TCP_NOOPT to restrict MSS on BSD-based OSes
2019-12-01 15:22:18 -08:00
Cameron Gutman
ceab64c46b
Use IP_PMTUDISC_DONT to clamp MSS on Windows
2019-12-01 15:00:21 -08:00
Cameron Gutman
52f489bc46
Fix RTSP handshake errors on networks with broken PMTUD
2019-11-30 21:19:56 -06:00
Sunguk Lee
021a1b23e9
vita: Enable nonblock TCP socket
2019-11-04 02:47:41 +09:00
Cameron Gutman
25528671d2
Fix error value on control stream and RTSP handshake failure
2019-11-02 21:28:05 -07:00
Cameron Gutman
197594f38c
Add platform helper function to set socket non-blocking mode
2019-11-02 19:16:46 -07:00
Cameron Gutman
ea135be05a
Only test TCP ports if the hostname resolves to multiple addresses
2019-10-12 19:09:28 -07:00
Sunguk Lee
a5c1054742
vita: Remove more vita specific branches
2019-10-05 20:07:41 +09:00
Sunguk Lee
787700ca50
vita: Use getaddrinfo
instead gethostbyname
2019-08-14 01:25:04 +09:00
Cameron Gutman
25dfbcfd41
Implement isPrivateNetworkAddress() for IPv6
2019-07-15 00:16:17 -07:00
Cameron Gutman
639ff18dbb
Allow automatic detection of remote streaming
2018-11-21 20:52:50 -08:00
Cameron Gutman
396b02a94d
Test each address returned in the getaddrinfo() call and stop blindly preferring IPv4
...
Fixes NAT64 on iOS 12 and probably other obscure configurations
2018-11-16 00:37:38 -08:00
Cameron Gutman
d9210a6a9a
Fix buffer overflow when connecting to an IPv4 address
2018-11-16 00:30:36 -08:00
Cameron Gutman
9396f6c528
Move resolveHostName() into PlatformSockets.c
2018-10-26 17:02:45 -07:00
Cameron Gutman
feb46b978e
Handle EINTR to fix streaming with GDB attached
2018-08-10 15:51:17 -07:00
Cameron Gutman
219d87486e
Check for both EWOULDBLOCK and EAGAIN for OSes where those values differ
2018-07-21 16:12:38 -07:00
Cameron Gutman
6e7965f013
Use SO_RCVTIMEO to avoid the overhead of an extra syscall per packet
2018-07-16 00:46:40 -07:00
Cameron Gutman
eaf3355c96
Reduce socket read timeout to 100 ms to allow LiStopConnection() to complete faster
2017-05-21 10:29:00 -07:00
Sunguk Lee
ba27e97698
Add vita environment ( #22 )
...
* vita: initial port
* vita: implement events, enable input thread
* vita: gethostbyname
* vita: Enable audio
* vita: Fix thread crash on discoonect process
* vita: Handle cannot create thread
* vita: now use newlib's socket apis
* vita: Refactoring for moonlight-stream/moonlight-common-c
* Fix review things
https://github.com/moonlight-stream/moonlight-common-c/pull/22#pullrequestreview-2436093
- vita may not support IPv6; so add LC_ASSERT them.
- define inet_ntop to sceNetInetNtop
- guard about failure of sceKernelCreateMutex or sceKernelCreateCond
- remove meanless macros
https://github.com/moonlight-stream/moonlight-common-c/pull/22#pullrequestreview-2444677
- !*mutex to *mutex
- remove useless LC_ASSERT then change to use inet_ntop
in vita system not defined `sockaddr_in6`, so just use `sockaddr_in` instead this.
https://github.com/moonlight-stream/moonlight-common-c/pull/22#pullrequestreview-2445642
- define sin6_addr
2016-10-05 16:43:33 -07:00
Cameron Gutman
dddcba217b
Try progressively lower receive buffer sizes until one is accepted
2016-05-08 12:10:04 -04:00
Cameron Gutman
48a5d63045
Reorganize the folder structure and delete the Xcode build files
2016-03-31 07:22:03 -04:00