]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
hs-v2: Add deprecation warning for service
authorDavid Goulet <dgoulet@torproject.org>
Wed, 1 Jul 2020 14:53:30 +0000 (10:53 -0400)
committerNick Mathewson <nickm@torproject.org>
Wed, 7 Oct 2020 12:38:23 +0000 (08:38 -0400)
If at least one service is configured as a version 2, a log warning is emitted
once and only once.

Closes #40003

Signed-off-by: David Goulet <dgoulet@torproject.org>
changes/ticket40003 [new file with mode: 0644]
src/feature/rend/rendservice.c

diff --git a/changes/ticket40003 b/changes/ticket40003
new file mode 100644 (file)
index 0000000..240f464
--- /dev/null
@@ -0,0 +1,3 @@
+  o Deprecated features (onion service v2):
+    - Add deprecation warning for onion service version 2. Tor now logs a
+      warning once if a version 2 service is configured. Closes ticket 40003.
index c96ecec30819f869c5eb12e91ff1964650b0015b..eaf0432a7da15f0e0fcab98e9405b6618b4db6fa 100644 (file)
@@ -130,6 +130,22 @@ static smartlist_t *rend_service_list = NULL;
  * service on config reload. */
 static smartlist_t *rend_service_staging_list = NULL;
 
+/** Helper: log the deprecation warning for version 2 only once. */
+static void
+log_once_deprecation_warning(void)
+{
+  static bool logged_once = false;
+  if (!logged_once) {
+    log_warn(LD_REND, "DEPRECATED: Onion service version 2 are deprecated. "
+             "Please use version 3 which is the default now. "
+             "Currently, version 2 is planned to be obsolete in "
+             "the Tor version 0.4.6 stable series.");
+    logged_once = true;
+  }
+}
+/** Macro to make it very explicit that we are warning about deprecation. */
+#define WARN_ONCE_DEPRECATION() log_once_deprecation_warning()
+
 /* Like rend_get_service_list_mutable, but returns a read-only list. */
 static const smartlist_t*
 rend_get_service_list(const smartlist_t* substitute_service_list)
@@ -731,6 +747,9 @@ rend_config_service(const config_line_t *line_,
   tor_assert(options);
   tor_assert(config);
 
+  /* We are about to configure a version 2 service. Warn of deprecation. */
+  WARN_ONCE_DEPRECATION();
+
   /* Use the staging service list so that we can check then do the pruning
    * process using the main list at the end. */
   if (rend_service_staging_list == NULL) {