Commit Graph
37 Commits
Author SHA1 Message Date
Henrik Rydgård a0873e5b0e Enable HTTPS on Linux, through naett's libcurl backend
naett has had a complete libcurl backend all along; we just never built it,
so Linux ran with HTTPS_NOT_AVAILABLE. That means no homebrew store over
HTTPS, and RetroAchievements talking to plain http://retroachievements.org.

libcurl is loaded with dlopen rather than linked, the same way we handle the
Vulkan loader, so it stays a soft dependency: we need the curl headers at
build time, but a build made here still starts on a machine without libcurl
installed - it just reports HTTPS as unavailable, exactly like today. Distro
packagers get the behavior they'd expect either way, and certificate
validation comes free from the system CA store.

New net::HTTPSAvailable() answers "did that work", and SDLMain folds it into
SYSPROP_SUPPORTS_HTTPS, which everything downstream already degrades on.

Four fixes to the backend itself, all noted in ext/naett/README-ppsspp.md:

- panic() called exit(1) on a pipe or curl_multi_perform failure. Taking the
  emulator down because a download failed isn't acceptable - the backend now
  disables itself and requests complete with naettGenericError.
- CURLINFO_RESPONSE_CODE writes a long into res->code, which is an int. Eight
  bytes into four, getting away with it only because the next field absorbs
  the zeroes.
- curl_easy_setopt is varargs and wants a long for these options; int literals
  and int variables are UB on LP64.
- naettPlatformCloseResponse called through a null function pointer when
  libcurl was missing. Found by testing that path, which segfaulted.

CI needs libcurl4-openssl-dev (curl-dev on Alpine) or it would quietly keep
building without HTTPS.
2026-09-02 17:42:04 +02:00
Henrik Rydgård 2096df52f5 Vendor naett in-tree, de-amalgamated
naett has been a submodule pinned at v0.3.3; upstream has had no commits since
April 2024, and we want to carry local changes (next up: a libcurl-backed HTTPS
path for Linux). It's ~1500 lines of MIT C, smaller than several things we
already vendor, so bring it in-tree and drop the submodule.

Also drop the generated single-file amalgam (naett.c) that every build system
was compiling, and build src/*.c directly instead - otherwise the file you edit
isn't the file that gets compiled, which is a trap for anyone patching this.
example/ and testrig/ (a whole Android Studio project) are gone with it.

Two changes were needed to make the sources build on their own, both noted in
ext/naett/README-ppsspp.md along with the upstream commit:

- naett_internal.h now includes naett.h, which the amalgam pulled in first.
- naett_linux.c now includes stdio.h/stdlib.h. It calls exit/calloc/realloc/
  free/fprintf without ever including either, and only got away with it because
  naett_core.c sat above it in the concatenation.

No functional change - Linux still has HTTPS_NOT_AVAILABLE set, so it doesn't
build naett at all yet.

Rename naett to naett-lib
2026-09-02 17:35:14 +02:00
Henrik Rydgård d31b475bb2 Minor fixes in Common/Net from Nemo's writeup 2026-08-09 19:03:28 +02:00
Henrik Rydgård 3504be26b0 More DNS fixes by copilot, additionally fixed up by claude 2026-08-07 08:49:29 +02:00
Henrik Rydgård 798ba7f79d Fix some bugs in Resolve.cpp 2026-08-07 08:49:29 +02:00
Henrik Rydgård 95ce95e489 Add a new "Net" log category, do assorted cleanup 2026-06-13 14:43:59 +02:00
Henrik Rydgård 53f1f57bbc Crashfix in Resolve.cpp, fix some bad return values 2026-03-09 00:21:56 +01:00
Henrik Rydgård 3a7911407b Assorted minor cleanups 2026-01-19 15:47:40 +01:00
MMaZaHaKa aa350b3082 upd proAdhoc 2026-01-16 06:17:03 +02:00
Henrik Rydgård c686d48268 Add prototype Upload screen and a couple new icons. Some refactoring. 2025-10-27 12:20:20 +01:00
Henrik Rydgård 5e05a6d0ac Get rid of some more backward Common/Core dependencies 2025-08-06 00:16:35 +02:00
Henrik Rydgård 05b82d6ce4 Allow passing in a custom resolver to HTTPRequest and Connection. This inverts the bad dependency. 2025-08-06 00:16:34 +02:00
trigger 65d780b160 move ProcessHostnameWithInfraDNS out of sceNet 2025-07-31 13:03:57 -07:00
Henrik Rydgård 0450728399 Add a super simple session cache for direct DNS lookups.
Dont even try to download the json if dontdownloadjson is set.
2025-04-08 00:41:08 +02:00
Henrik Rydgård c5cde0f218 Remove "Secondary DNS" as a setting. 2025-01-12 17:25:57 +01:00
Henrik Rydgård 1013be090c sceNetInet: Refactor errno handling and logging, so we always see how it changes 2025-01-12 14:57:51 +01:00
Henrik Rydgård 7e476fedf4 Warning fix, buildfix, logfix 2025-01-11 00:37:36 +01:00
Henrik Rydgård 293c087577 Add a new IPV4 direct DNS lookup function. Allows us to use the configured DNS directly. 2025-01-10 21:37:36 +01:00
Henrik Rydgård 5c7ca3f972 Delete some unused structs 2025-01-10 21:18:45 +01:00
Henrik Rydgård c3aa0f7452 Centralize socket-related includes, introduce socket_errno
This resolves some weird inconsistentes and include order problems
related to errno. Needed for the next steps.
2025-01-08 12:42:45 +01:00
Henrik Rydgård 59a56d66c7 Add a "reason" argument to sleep_ms().
sleep_ms() should generally be avoided when possible. This can be used to try
to track down unnecessary sleeps by adding some logging.

This commit on its own doesn't actually add any logging.
2024-11-21 15:28:51 +01:00
Henrik Rydgård cf678a1aa6 JIT: Allow more blocks to be stored in the cache. Also, add margin to the IsFull check. 2024-10-28 17:02:03 +01:00
Henrik Rydgård 4d6905672e Bunch more linting 2024-10-10 11:57:10 +02:00
Henrik Rydgård e01ca5b057 Logging API change (refactor) (#19324)
* Rename LogType to Log

* Explicitly use the Log:: enum when logging. Allows for autocomplete when editing.

* Mac/ARM64 buildfix

* Do the same with the hle result log macros

* Rename the log names to mixed case while at it.

* iOS buildfix

* Qt buildfix attempt, ARM32 buildfix
2024-07-14 14:42:59 +02:00
Nemoumbra 7b91e0d626 Fixed the encoding of the culture-dependent DNS resolver error messages (Windows) 2023-10-23 12:04:49 +03:00
Henrik Rydgård ab6e902fea Make naett work on Android, UWP, Mac. Exclude on Linux 2023-07-21 10:28:31 +02:00
Henrik Rydgård fbd980bee6 Get basic Naett requests to work (the store works in https mode) 2023-07-21 10:28:17 +02:00
ANR2ME 171e2b5713 Added another attempt to detect GETIFADDRS availability, which is more common on newer OS 2022-01-29 05:43:07 +07:00
ANR2ME c37a58d39c We might be missing the SIOCGIFADDR 2022-01-29 05:43:06 +07:00
ANR2ME cdea71e901 Added logs for error within SIOCGIFCONF section. 2022-01-29 05:43:06 +07:00
ANR2ME 7aa3b1398e Change a confusing variable naming 2022-01-29 05:43:06 +07:00
ANR2ME 0fd1b65a78 An attempt to detects getifaddrs availability properly 2021-04-12 18:41:49 +07:00
ANR2ME 81616f84a3 Changing warning log to info log on GetIPList 2021-04-12 18:41:48 +07:00
ANR2ME ce32d14a84 Added additional includes for GetIPList to work on Linux/Unix 2021-04-12 18:41:48 +07:00
ANR2ME 84d7d744e2 Added warning log for testing purpose on GetIPList function 2021-04-12 18:41:48 +07:00
Henrik Rydgård 7a63b5e69e Cleanup 2020-10-31 18:32:43 +01:00
Henrik Rydgård 4f43cff5ca Move fileutil, net, image loaders, ui to Common. (#13506)
* Move and rename file_util/fd_util to Common/File/FileUtil and DirListing

Let's also move net while we're at it.

Move the ZIM/PNG loaders over to Common.

Move the UI framework into Common

iOS buildfix

* Buildfix

* Buildfixes

* Apple buildfix

* This typo again..

* UWP buildfix

* Fix build of PPSSPPQt, such as it is (it's not in good condition...)

* Guess what? Another buildfix.
2020-10-04 20:48:47 +02:00