mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-11 13:43:47 +01:00
Log OpenSSL errors coming from bufferevent_openssl
This commit is contained in:
parent
50d77ad4b6
commit
4cfa6fbaca
@ -224,36 +224,46 @@ ssl_state_to_string(int ssl_state)
|
|||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
tor_tls_log_one_error(tor_tls_t *tls, unsigned long err,
|
||||||
|
int severity, int domain, const char *doing)
|
||||||
|
{
|
||||||
|
const char *state = NULL, *addr;
|
||||||
|
const char *msg, *lib, *func;
|
||||||
|
int st;
|
||||||
|
|
||||||
|
st = (tls && tls->ssl) ? tls->ssl->state : -1;
|
||||||
|
state = (st>=0)?ssl_state_to_string(st):"---";
|
||||||
|
|
||||||
|
addr = tls ? tls->address : NULL;
|
||||||
|
|
||||||
|
msg = (const char*)ERR_reason_error_string(err);
|
||||||
|
lib = (const char*)ERR_lib_error_string(err);
|
||||||
|
func = (const char*)ERR_func_error_string(err);
|
||||||
|
if (!msg) msg = "(null)";
|
||||||
|
if (!lib) lib = "(null)";
|
||||||
|
if (!func) func = "(null)";
|
||||||
|
if (doing) {
|
||||||
|
log(severity, domain, "TLS error while %s%s%s: %s (in %s:%s:%s)",
|
||||||
|
doing, addr?" with ":"", addr?addr:"",
|
||||||
|
msg, lib, func, state);
|
||||||
|
} else {
|
||||||
|
log(severity, domain, "TLS error%s%s: %s (in %s:%s:%s)",
|
||||||
|
addr?" with ":"", addr?addr:"",
|
||||||
|
msg, lib, func, state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** Log all pending tls errors at level <b>severity</b>. Use
|
/** Log all pending tls errors at level <b>severity</b>. Use
|
||||||
* <b>doing</b> to describe our current activities.
|
* <b>doing</b> to describe our current activities.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
tls_log_errors(tor_tls_t *tls, int severity, int domain, const char *doing)
|
tls_log_errors(tor_tls_t *tls, int severity, int domain, const char *doing)
|
||||||
{
|
{
|
||||||
const char *state = NULL;
|
|
||||||
int st;
|
|
||||||
unsigned long err;
|
unsigned long err;
|
||||||
const char *msg, *lib, *func, *addr;
|
|
||||||
addr = tls ? tls->address : NULL;
|
|
||||||
st = (tls && tls->ssl) ? tls->ssl->state : -1;
|
|
||||||
while ((err = ERR_get_error()) != 0) {
|
while ((err = ERR_get_error()) != 0) {
|
||||||
msg = (const char*)ERR_reason_error_string(err);
|
tor_tls_log_one_error(tls, err, severity, domain, doing);
|
||||||
lib = (const char*)ERR_lib_error_string(err);
|
|
||||||
func = (const char*)ERR_func_error_string(err);
|
|
||||||
if (!state)
|
|
||||||
state = (st>=0)?ssl_state_to_string(st):"---";
|
|
||||||
if (!msg) msg = "(null)";
|
|
||||||
if (!lib) lib = "(null)";
|
|
||||||
if (!func) func = "(null)";
|
|
||||||
if (doing) {
|
|
||||||
log(severity, domain, "TLS error while %s%s%s: %s (in %s:%s:%s)",
|
|
||||||
doing, addr?" with ":"", addr?addr:"",
|
|
||||||
msg, lib, func, state);
|
|
||||||
} else {
|
|
||||||
log(severity, domain, "TLS error%s%s: %s (in %s:%s:%s)",
|
|
||||||
addr?" with ":"", addr?addr:"",
|
|
||||||
msg, lib, func, state);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1050,6 +1050,14 @@ connection_or_handle_event_cb(struct bufferevent *bufev, short event,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (event & BEV_EVENT_ERROR) {
|
||||||
|
unsigned long err;
|
||||||
|
while ((err = bufferevent_get_openssl_error(bufev))) {
|
||||||
|
tor_tls_log_one_error(conn->tls, err, LOG_WARN, LD_OR,
|
||||||
|
"handshaking (with bufferevent)");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
connection_handle_event_cb(bufev, event, arg);
|
connection_handle_event_cb(bufev, event, arg);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user