[or-cvs] Log protocol errors

Nick Mathewson nickm at seul.org
Mon Sep 15 18:18:40 UTC 2003


Update of /home/or/cvsroot/src/common
In directory moria.mit.edu:/tmp/cvs-serv28103/src/common

Modified Files:
	tortls.c 
Log Message:
Log protocol errors

Index: tortls.c
===================================================================
RCS file: /home/or/cvsroot/src/common/tortls.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- tortls.c	14 Sep 2003 02:58:47 -0000	1.9
+++ tortls.c	15 Sep 2003 18:18:37 -0000	1.10
@@ -44,6 +44,17 @@
 /* These functions are declared in crypto.c but not exported. */
 EVP_PKEY *_crypto_pk_env_get_evp_pkey(crypto_pk_env_t *env);
 crypto_pk_env_t *_crypto_new_pk_env_rsa(RSA *rsa);
+char *crypto_perror(); 
+
+static void
+tls_log_error(int severity, char *doing)
+{
+  if (doing) {
+    log(severity, "TLS error while %s: %s", doing, crypto_perror());
+  } else {
+    log(severity, "TLS error: %s",crypto_perror());
+  }
+}
 
 static int
 tor_tls_get_error(tor_tls *tls, int r, int extra)
@@ -279,13 +290,15 @@
   if (r > 0)
     return r;
   err = tor_tls_get_error(tls, r, 1);
-  if (err == _TOR_TLS_SYSCALL)
+  if (err == _TOR_TLS_SYSCALL) {
+    tls_log_error(LOG_ERR, "reading");
     return TOR_TLS_ERROR;
-  else if (err == _TOR_TLS_ZERORETURN) {
+  } else if (err == _TOR_TLS_ZERORETURN) {
     tls->state = TOR_TLS_ST_CLOSED;
     return TOR_TLS_CLOSE;
   } else {
     assert(err != TOR_TLS_DONE);
+    tls_log_error(LOG_ERR, "reading");
     return err;
   }
 }
@@ -309,6 +322,8 @@
   if (err == TOR_TLS_DONE) {
     return r;
   } else {
+    if (err != TOR_TLS_WANTREAD && err != TOR_TLS_WANTWRITE) 
+      tls_log_error(LOG_ERR, "writing");
     return err;
   }  
 }
@@ -331,6 +346,8 @@
   r = tor_tls_get_error(tls,r,0);
   if (r == TOR_TLS_DONE) {
     tls->state = TOR_TLS_ST_OPEN; 
+  } else if (r != TOR_TLS_WANTREAD && r != TOR_TLS_WANTWRITE) {
+    tls_log_error(LOG_ERR, "handshaking");
   }
   return r;
 }
@@ -361,6 +378,8 @@
       } else {
 	if (err == _TOR_TLS_SYSCALL)
 	  err = TOR_TLS_ERROR;
+	if (err != TOR_TLS_WANTREAD && err != TOR_TLS_WANTWRITE) 
+	  tls_log_error(LOG_ERR, "shutting down");
 	return err;
       }
     }
@@ -391,6 +410,8 @@
       tls->state = TOR_TLS_ST_SENTCLOSE;
       /* fall through ... */
     } else {
+      if (err != TOR_TLS_WANTREAD && err != TOR_TLS_WANTWRITE) 
+	tls_log_error(LOG_ERR, "shutting down");
       return err;
     }
   } /* end loop */



More information about the tor-commits mailing list