-
Notifications
You must be signed in to change notification settings - Fork 724
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ChangeLog: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/blob/main/projects/browser/Bundle-Data/Docs-TBB/ChangeLog.txt?ref_type=heads PR: 278851 Reported by: freebsd@sysctl.cz (maintainer)
- Loading branch information
Showing
6 changed files
with
144 additions
and
32 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
104 changes: 104 additions & 0 deletions
104
www/tor-browser/files/patch-toolkit_components_processtools_procinfo__bsd.c
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
diff --git toolkit/components/processtools/ProcInfo_bsd.cpp toolkit/components/processtools/ProcInfo_bsd.cpp | ||
index a6ff4881940c..f041ed5e50ce 100644 | ||
--- toolkit/components/processtools/ProcInfo_bsd.cpp | ||
+++ toolkit/components/processtools/ProcInfo_bsd.cpp | ||
@@ -18,6 +18,9 @@ | ||
#include <cstdio> | ||
#include <cstring> | ||
#include <unistd.h> | ||
+#ifdef __FreeBSD__ | ||
+#include <sys/user.h> | ||
+#endif | ||
|
||
namespace mozilla { | ||
|
||
@@ -50,25 +53,39 @@ ProcInfoPromise::ResolveOrRejectValue GetProcInfoSync( | ||
} | ||
for (const auto& request : aRequests) { | ||
size_t size; | ||
+#ifdef __FreeBSD__ | ||
+ int mib[4]; | ||
+ int mibsize = 4; | ||
+ mib[0] = CTL_KERN; | ||
+ mib[1] = KERN_PROC; | ||
+ mib[2] = KERN_PROC_PID | KERN_PROC_INC_THREAD; | ||
+ mib[3] = request.pid; | ||
+#else | ||
int mib[6]; | ||
+ int mibsize = 6; | ||
mib[0] = CTL_KERN; | ||
mib[1] = KERN_PROC; | ||
mib[2] = KERN_PROC_PID | KERN_PROC_SHOW_THREADS; | ||
mib[3] = request.pid; | ||
mib[4] = sizeof(kinfo_proc); | ||
mib[5] = 0; | ||
- if (sysctl(mib, 6, nullptr, &size, nullptr, 0) == -1) { | ||
+#endif | ||
+ if (sysctl(mib, mibsize, nullptr, &size, nullptr, 0) == -1) { | ||
// Can't get info for this process. Skip it. | ||
continue; | ||
} | ||
|
||
+#ifdef __FreeBSD__ | ||
+ auto procs = MakeUniqueFallible<kinfo_proc[]>(size / sizeof(kinfo_proc)); | ||
+#else | ||
mib[5] = size / sizeof(kinfo_proc); | ||
auto procs = MakeUniqueFallible<kinfo_proc[]>(mib[5]); | ||
+#endif | ||
if (!procs) { | ||
result.SetReject(NS_ERROR_OUT_OF_MEMORY); | ||
return result; | ||
} | ||
- if (sysctl(mib, 6, procs.get(), &size, nullptr, 0) == -1 && | ||
+ if (sysctl(mib, mibsize, procs.get(), &size, nullptr, 0) == -1 && | ||
errno != ENOMEM) { | ||
continue; | ||
} | ||
@@ -84,19 +101,34 @@ ProcInfoPromise::ResolveOrRejectValue GetProcInfoSync( | ||
bool found = false; | ||
for (size_t i = 0; i < size / sizeof(kinfo_proc); i++) { | ||
const auto& p = procs[i]; | ||
+#ifdef __FreeBSD__ | ||
+ if (i == 0) { | ||
+#else | ||
if (p.p_tid == -1) { | ||
+#endif | ||
// This is the process. | ||
found = true; | ||
+#ifdef __FreeBSD__ | ||
+ info.cpuTime = uint64_t(p.ki_runtime) * 1'000u; | ||
+ info.memory = (p.ki_tsize + p.ki_dsize + p.ki_ssize) * getpagesize(); | ||
+#else | ||
info.cpuTime = uint64_t(p.p_rtime_sec) * 1'000'000'000u + | ||
uint64_t(p.p_rtime_usec) * 1'000u; | ||
info.memory = | ||
(p.p_vm_tsize + p.p_vm_dsize + p.p_vm_ssize) * getpagesize(); | ||
+#endif | ||
+ | ||
} else { | ||
// This is one of its threads. | ||
ThreadInfo threadInfo; | ||
+#ifdef __FreeBSD__ | ||
+ threadInfo.tid = p.ki_tid; | ||
+ threadInfo.cpuTime = uint64_t(p.ki_runtime) * 1'000u; | ||
+#else | ||
threadInfo.tid = p.p_tid; | ||
threadInfo.cpuTime = uint64_t(p.p_rtime_sec) * 1'000'000'000u + | ||
uint64_t(p.p_rtime_usec) * 1'000u; | ||
+#endif | ||
info.threads.AppendElement(threadInfo); | ||
} | ||
} | ||
diff --git toolkit/components/processtools/moz.build toolkit/components/processtools/moz.build | ||
index b7c164c1b0ac..a41dad52c343 100644 | ||
--- toolkit/components/processtools/moz.build | ||
+++ toolkit/components/processtools/moz.build | ||
@@ -39,7 +39,7 @@ BROWSER_CHROME_MANIFESTS += ["tests/browser/browser.ini"] | ||
# Platform-specific implementations of `ProcInfo`. | ||
toolkit = CONFIG["MOZ_WIDGET_TOOLKIT"] | ||
if toolkit == "gtk" or toolkit == "android": | ||
- if CONFIG["OS_TARGET"] == "OpenBSD": | ||
+ if CONFIG["OS_TARGET"] == "FreeBSD" or CONFIG["OS_TARGET"] == "OpenBSD": | ||
UNIFIED_SOURCES += ["ProcInfo_bsd.cpp"] | ||
else: | ||
UNIFIED_SOURCES += ["ProcInfo_linux.cpp"] |
34 changes: 34 additions & 0 deletions
34
www/tor-browser/files/patch-toolkit_components_tor-launcher_TorProcess.sys.mjs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
Let geoip/geoip6 file paths be set by prefs like everything else and let | ||
the new getTorFile() deal with it. | ||
|
||
Index: toolkit/components/tor-launcher/TorProcess.sys.mjs | ||
--- toolkit/components/tor-launcher/TorProcess.sys.mjs.orig 2024-04-22 21:47:56 UTC | ||
+++ toolkit/components/tor-launcher/TorProcess.sys.mjs | ||
@@ -216,6 +216,7 @@ export class TorProcess { | ||
} | ||
|
||
this.#args = []; | ||
+ this.#args.push("--ignore-missing-torrc"); | ||
this.#args.push("-f", torrcFile.path); | ||
this.#args.push("DataDirectory", this.#dataDir.path); | ||
this.#args.push("ClientOnionAuthDir", onionAuthDir.path); | ||
@@ -230,11 +231,15 @@ export class TorProcess { | ||
// The geoip and geoip6 files are in the same directory as torrc-defaults. | ||
// TODO: Change TorFile to return the generic path to these files to make | ||
// them independent from the torrc-defaults. | ||
- const geoipFile = torrcDefaultsFile.clone(); | ||
- geoipFile.leafName = "geoip"; | ||
+ // const geoipFile = torrcDefaultsFile.clone(); | ||
+ // geoipFile.leafName = "geoip"; | ||
+ // this.#args.push("GeoIPFile", geoipFile.path); | ||
+ // const geoip6File = torrcDefaultsFile.clone(); | ||
+ // geoip6File.leafName = "geoip6"; | ||
+ // this.#args.push("GeoIPv6File", geoip6File.path); | ||
+ const geoipFile = lazy.TorLauncherUtil.getTorFile("geoip", false); | ||
+ const geoip6File = lazy.TorLauncherUtil.getTorFile("geoip6", false); | ||
this.#args.push("GeoIPFile", geoipFile.path); | ||
- const geoip6File = torrcDefaultsFile.clone(); | ||
- geoip6File.leafName = "geoip6"; | ||
this.#args.push("GeoIPv6File", geoip6File.path); | ||
} else { | ||
logger.warn( |
26 changes: 0 additions & 26 deletions
26
www/tor-browser/files/patch-toolkit_components_tor-launcher_TorProcess_sys_mjs
This file was deleted.
Oops, something went wrong.