Subject: [bug#65489] [PATCH] gnu: tor: Update to 0.4.8.4.

From: Michael Ford <[email-masked]>
Date: Fri, 1 Sep 2023 10:31:43 +0300

Hi Andre,

I've taken your suggestions.
Here is the updated patch.
Thanks

>From a7c754da51888f23755ba46904191bf16523fc17 Mon Sep 17 00:00:00 2001
From: fanquake <[email-masked]>
Date: Thu, 24 Aug 2023 09:47:33 +0100
Subject: [PATCH] gnu: tor: Update to 0.4.8.5.

* gnu/packages/tor.scm (tor): Update to 0.4.8.5.
* gnu/packages/tor.scm (tor)[arguments]<#:configure-flags>:
Add "--enable-gpl".
* gnu/packages/patches/tor-remove-defensive-assert.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/tor.scm (tor)[source]: Add patch to remove defensive
  assert.
---
 gnu/local.mk                                  |  1 +
 .../patches/tor-remove-defensive-assert.patch | 28 +++++++++++++++++++
 gnu/packages/tor.scm                          |  8 ++++--
 3 files changed, 34 insertions(+), 3 deletions(-)
 create mode 100644 gnu/packages/patches/tor-remove-defensive-assert.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 9b493df8d5..6a4f9dabb2 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2012,6 +2012,7 @@ dist_patch_DATA = \
   %D%/packages/patches/tofi-32bit-compat.patch \
   %D%/packages/patches/tootle-glib-object-naming.patch \
   %D%/packages/patches/tootle-reason-phrase.patch \
+  %D%/packages/patches/tor-remove-defensive-assert.patch   \
   %D%/packages/patches/transcode-ffmpeg.patch \
   %D%/packages/patches/transfig-gcc10-fno-common.patch \
   %D%/packages/patches/trytond-add-egg-modules-to-path.patch \
diff --git a/gnu/packages/patches/tor-remove-defensive-assert.patch
b/gnu/packages/patches/tor-remove-defensive-assert.patch
new file mode 100644
index 0000000000..7207ec867a
--- /dev/null
+++ b/gnu/packages/patches/tor-remove-defensive-assert.patch
@@ -0,0 +1,28 @@
+This patch removes a call to `tor_assert_nonfatal_unreached()` in
+`relay_key_is_unavailable_()` that is only called when Tor is compiled
+without relay support.
+
+Unfortunately, the non-fatal assertion causes a BUG log
+message to appear for clients when they start up without relay support
+for each CPU worker we spawn. This makes it spotting issues during
+bootstrap harder particularly for our iOS developers.
+
+Since the call sites to `get_master_identity_key()` handles `NULL`
+values already, we do not think this will be an issue later on.
+
+Reported by Benjamin Erhart (@tla) from Guardian Project.
+
+Fixes tpo/core/tor#40848.
+
+diff --git a/src/feature/relay/routerkeys.h
b/src/feature/relay/routerkeys.h
+index 7b6d80773c..b97615a9c9 100644
+--- a/src/feature/relay/routerkeys.h
++++ b/src/feature/relay/routerkeys.h
+@@ -53,7 +53,6 @@ void routerkeys_free_all(void);
+ static inline void *
+ relay_key_is_unavailable_(void)
+ {
+-  tor_assert_nonfatal_unreached();
+   return NULL;
+ }
+ #define relay_key_is_unavailable(type) \
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index 7fec88656f..44e62b63cc 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -63,18 +63,20 @@ (define-module (gnu packages tor)
 (define-public tor
   (package
     (name "tor")
-    (version "0.4.7.14")
+    (version "0.4.8.5")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://dist.torproject.org/tor-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "1y2xwrji1rvk6h0k15705yra5s74h72h2g84x02zr0338vv6gb55"))))
+               "06g1awb4piqvgxa97pyswxgjzkpj8rx3iy2jbiaygvi99b8wymv9"))
+             (patches (search-patches
"tor-remove-defensive-assert.patch"))))
     (build-system gnu-build-system)
     (arguments
      (list #:configure-flags
-           #~(list "--enable-lzma"
+           #~(list "--enable-gpl"
+                   "--enable-lzma"
                    "--enable-zstd")
            #:phases
            #~(modify-phases %standard-phases
-- 
2.42.0

On Thu, 31 Aug 2023 at 03:10, André Batista <[email-masked]> wrote:

> Hi Michael!
>
> The Tor Project has released v0.4.8.5, so I guess we can skip
> v0.4.8.4. Would you care to send a new version of your patch?
>
> Also, Tor v0.4.8.x has introduced a new PoW feature which is useful
> for Onion Service operators and users during those all too common
> DDoS attempts on the network. However, the feature is disabled by
> default because the code was GPL'd. So, in order to enable it for
> Guix users - whom I think won't have an issue with GPL code ;) -, you
> need to change the current package definition configure flags and add
> "--enable-gpl", otherwise we will be missing on this.
>
> Moreover, I'm running the tor-client package and have hit on core/tor
> issue #40848[1], since upgrading to v0.4.8.5. Apparently it's a
> pretty harmless bug assertion which Alexander Færøy solved [2] by
> just removing the bug assertion. Nonetheless, I think it's best if we
> also include that patch on Guix, otherwise there may be future
> repeated questions from guix users once they start seeing it show up
> on system logs.
>
> WDYT?
>
> Cheers!
>
> 1 - https://gitlab.torproject.org/tpo/core/tor/-/issues/40848
> 2 - https://gitlab.torproject.org/tpo/core/tor/-/merge_requests/752
>