From 05f5d778a23b0e5e6abd256e59af3046ae9d9efa Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Tue, 18 Mar 2008 14:53:41 +0000 Subject: [PATCH] r18919@catbus: nickm | 2008-03-18 10:53:38 -0400 Forward-port bug 622 fix as diagnosed by lodger. svn:r14096 --- ChangeLog | 3 +++ src/common/tortls.c | 6 ++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 989f7603f5..1807baefe6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -28,6 +28,9 @@ Changes in version 0.2.0.22-rc - 2008-03-17 o Major bugfixes: - Make sure servers always request certificates from clients during TLS renegotiation. Reported by lodger; bugfix on 0.2.0.20-rc. + - Do not enter a CPU-eating loop when a connection is closed in the middle + of client-side TLS renegotiation. Fixes bug 622. Bug diagnosed by + lodger. o Minor bugfixes (on 0.1.2.x): - Generate "STATUS_SERVER" events rather than misspelled diff --git a/src/common/tortls.c b/src/common/tortls.c index 1352f79533..fb5fb7ee1a 100644 --- a/src/common/tortls.c +++ b/src/common/tortls.c @@ -992,8 +992,7 @@ tor_tls_renegotiate(tor_tls_t *tls) if (tls->state != TOR_TLS_ST_RENEGOTIATE) { int r = SSL_renegotiate(tls->ssl); if (r <= 0) { - return tor_tls_get_error(tls, r, CATCH_SYSCALL|CATCH_ZERO, - "renegotiating", LOG_WARN); + return tor_tls_get_error(tls, r, 0, "renegotiating", LOG_WARN); } tls->state = TOR_TLS_ST_RENEGOTIATE; } @@ -1002,8 +1001,7 @@ tor_tls_renegotiate(tor_tls_t *tls) tls->state = TOR_TLS_ST_OPEN; return TOR_TLS_DONE; } else - return tor_tls_get_error(tls, r, CATCH_SYSCALL|CATCH_ZERO, - "renegotiating handshake", LOG_INFO); + return tor_tls_get_error(tls, r, 0, "renegotiating handshake", LOG_INFO); } /** Shut down an open tls connection tls. When finished, returns