summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--src/common/tortls.c6
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 <b>tls</b>. When finished, returns