48 Commits

Author SHA1 Message Date
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