diff --git a/changes/bug3700 b/changes/bug3700 new file mode 100644 index 0000000000..cef7296ad0 --- /dev/null +++ b/changes/bug3700 @@ -0,0 +1,6 @@ + o Minor bugfixes: + - Get rid of a harmless warning that could happen on relays running + with bufferevents. The warning was caused by someone doing an http + request to a relay's orport. Also don't warn for a few related + non-errors. Fixes bug 3700; bugfix on 0.2.3.1-alpha. + diff --git a/src/common/tortls.c b/src/common/tortls.c index 21f2c5072b..455603030f 100644 --- a/src/common/tortls.c +++ b/src/common/tortls.c @@ -273,6 +273,22 @@ tor_tls_log_one_error(tor_tls_t *tls, unsigned long err, addr = tls ? tls->address : NULL; + /* Some errors are known-benign, meaning they are the fault of the other + * side of the connection. The caller doesn't know this, so override the + * priority for those cases. */ + switch (ERR_GET_REASON(err)) { + case SSL_R_HTTP_REQUEST: + case SSL_R_HTTPS_PROXY_REQUEST: + case SSL_R_RECORD_LENGTH_MISMATCH: + case SSL_R_RECORD_TOO_LARGE: + case SSL_R_UNKNOWN_PROTOCOL: + case SSL_R_UNSUPPORTED_PROTOCOL: + severity = LOG_INFO; + break; + default: + break; + } + msg = (const char*)ERR_reason_error_string(err); lib = (const char*)ERR_lib_error_string(err); func = (const char*)ERR_func_error_string(err);