Browse Source

Merge remote-tracking branch 'ahf/bugs/22305'

Nick Mathewson 7 years ago
parent
commit
d9b1471303
2 changed files with 14 additions and 0 deletions
  1. 13 0
      src/or/directory.c
  2. 1 0
      src/or/directory.h

+ 13 - 0
src/or/directory.c

@@ -2356,6 +2356,7 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
      * compression method that is not allowed for anonymous connections. */
     if (anonymized_connection &&
         ! allowed_anonymous_connection_compression_method(compression)) {
+      warn_disallowed_anonymous_compression_method(compression);
       rv = -1;
       goto done;
     }
@@ -2368,6 +2369,7 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
      * differently, try that. */
     if (anonymized_connection &&
         ! allowed_anonymous_connection_compression_method(guessed)) {
+      warn_disallowed_anonymous_compression_method(guessed);
       rv = -1;
       goto done;
     }
@@ -3887,6 +3889,17 @@ allowed_anonymous_connection_compression_method(compress_method_t method)
   return 0;
 }
 
+/** Log a warning when a remote server have send us a document using a
+ * compression method that is not allowed for anonymous directory requests. */
+STATIC void
+warn_disallowed_anonymous_compression_method(compress_method_t method)
+{
+  log_fn(LOG_PROTOCOL_WARN, LD_HTTP,
+         "Received a %s HTTP response, which is not "
+         "allowed for anonymous directory requests.",
+         compression_method_get_human_name(method));
+}
+
 /** Encodes the results of parsing a consensus request to figure out what
  * consensus, and possibly what diffs, the user asked for. */
 typedef struct {

+ 1 - 0
src/or/directory.h

@@ -164,6 +164,7 @@ STATIC int handle_get_hs_descriptor_v3(dir_connection_t *conn,
 STATIC int directory_handle_command(dir_connection_t *conn);
 STATIC char *accept_encoding_header(void);
 STATIC int allowed_anonymous_connection_compression_method(compress_method_t);
+STATIC void warn_disallowed_anonymous_compression_method(compress_method_t);
 
 #endif