Browse Source

r18919@catbus: nickm | 2008-03-18 10:53:38 -0400
Forward-port bug 622 fix as diagnosed by lodger.


svn:r14096

Nick Mathewson 17 years ago
parent
commit
05f5d778a2
2 changed files with 5 additions and 4 deletions
  1. 3 0
      ChangeLog
  2. 2 4
      src/common/tortls.c

+ 3 - 0
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

+ 2 - 4
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