Commit Graph

46 Commits

Author SHA1 Message Date
Cameron Gutman
07c32c80f9 Use a valid port when calling connect() for local address detection
BSDs (including Darwin) don't like using port 0.
2026-02-06 22:53:54 -06:00
7mile
305993b013 fix: use UDP connect to probe local address (#121) 2026-01-29 18:52:06 -06:00
AorsiniYT
34074c9ec0 Fixes for Moonlight compatibility on the PS Vita. (#110)
* Use pthread for vita thread managment

* Add thread name to pthread and remove ipv6 from vita

* Fix inclusion of pthread.h so that it is only included on specific platforms (__vita__)

* Fix memory release in ThreadProc for psvita platform

---------

Co-authored-by: MetalfaceScout <logan.mathis@utahtech.edu>
Co-authored-by: Logan Mathis <33127568+MetalfaceScout@users.noreply.github.com>
2025-07-05 18:57:33 -05:00
Cameron Gutman
c245fe599d Use higher packet size for remote streaming over end-to-end IPv6 connection
The IPv6 spec guarantees a minimum of 1280 byte MTUs
2024-05-29 13:57:50 -04:00
Cameron Gutman
c0e3dc64a4 Add basic QoS attributes to our A/V sockets 2024-02-01 00:15:47 -06:00
zoey jodon
c104a97fa0 Add platform support for the 3DS
Prevent wildcard port binding on the 3DS
Add 3DS threading logic
Add 3DS socket logic
Bump the connection timeout to 60s for the 3DS
2024-01-18 18:30:20 -06:00
Cameron Gutman
bbf15af837 Revert "Use connected datagram sockets for audio and video"
This causes problems on multi-homed GFE and Sunshine (prior to v0.21) hosts
because audio and video data can be sent back from an address different than
the one we used as our original destination address.

This reverts commit c13f4a323f.
2023-10-26 01:15:27 -05:00
Cameron Gutman
05c3f9c754 Bind our UDP sockets to the same local address used by RTSP handshake
This means we can ensure a consistent local address for our outgoing PING
traffic to keep the UDP flows alive without having to call connect() which breaks
with multi-homed hosts on GFE and Sunshine v0.20 and earlier.
2023-10-26 01:09:26 -05:00
Cameron Gutman
8b84d17c8d Replace additional unsafe string functions 2023-10-06 17:33:37 -05:00
Cameron Gutman
c13f4a323f Use connected datagram sockets for audio and video
This ensures unwanted data from other sources is dropped and that our own source address doesn't change while streaming.
2023-09-12 23:29:05 -05:00
Cameron Gutman
d3cb8131d1 Revert "Send TCP FIN after completion of our RTSP request"
Existing servers already know how to parse our messages without this,
so we just risk breaking things with middleboxes that don't do half-closed
connections properly. We'll handle this better with encrypted RTSP.

This reverts commit 95e3e26d12.
2023-02-20 16:58:21 -06:00
Cameron Gutman
95e3e26d12 Send TCP FIN after completion of our RTSP request
This allows servers to read until a FIN, just like we do on the client.
2023-02-13 21:47:22 -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
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
Cameron Gutman
da68e64d9b Fix various MSVC warnings 2021-04-29 17:21:12 -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
c1befbe2a8 Improve audio resync logic to use initial receive time rather send time 2021-04-26 22:43:49 -05:00
Cameron Gutman
3adacb876d Fix incorrect checks for AF_INET6 2021-04-19 23:01:17 -05:00
Cameron Gutman
3979dbd082 Allow compilation on OSes without IPv6 support 2021-04-17 23:40:36 -05:00
Cameron Gutman
4b4162c1a1 Fix redefinition warning for errno.h constants on Windows 2020-11-30 20:44:46 -06:00
Cameron Gutman
5f9f7ce407 Code cleanup: use stdbool.h 2020-11-30 20:38:13 -06:00
Sunguk Lee
6195007bf3 Add missing poll header parts of the VITA 2020-10-23 11:29:02 +09: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
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
6351749039 Fix TCP connection tests on Linux and BSD 2020-07-26 20:56:39 -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
52f489bc46 Fix RTSP handshake errors on networks with broken PMTUD 2019-11-30 21:19:56 -06: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
Sunguk Lee
31a1384379 vita: Apply newlib changes
no more need to define `TCP_NODELAY` and `sockaddr_in6` parts
2019-10-05 04:43:28 +09:00
Sunguk Lee
9972440607 vita: Reduce vita custom defines 2019-08-14 01:25:08 +09:00
Cameron Gutman
6eb17a8e73 Fix build warnings 2019-02-26 23:44:10 -08:00
Sunguk Lee
d971e3bacc Revert "vita: Redefine network error codes"
This reverts commit 93707b42e9.
2019-02-17 23:58:33 +09: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
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
Sunguk Lee
93707b42e9 vita: Redefine network error codes
temporary patch until merge vitasdk/newlib#38
2018-07-22 06:01:46 +09:00
Sunguk Lee
53352c1a8e vita: No more need redefine INADDR_ANY 2018-07-22 05:54:32 +09: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
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
48a5d63045 Reorganize the folder structure and delete the Xcode build files 2016-03-31 07:22:03 -04:00