summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2007-11-07 16:37:08 +0000
committerNick Mathewson <nickm@torproject.org>2007-11-07 16:37:08 +0000
commit0e993e6008aa0c0c5fc932bc0b84a46a9c681315 (patch)
tree735bbed65c5b59e3c40939e8c821be8925ca8192
parent7b826f8fe47f20d784f42bb3f04c4597635c801f (diff)
downloadtor-0e993e6008aa0c0c5fc932bc0b84a46a9c681315.tar.gz
tor-0e993e6008aa0c0c5fc932bc0b84a46a9c681315.zip
r16523@catbus: nickm | 2007-11-07 11:35:49 -0500
Improve "tls error. breaking" message a little. svn:r12411
-rw-r--r--ChangeLog1
-rw-r--r--src/common/tortls.c20
-rw-r--r--src/common/tortls.h2
-rw-r--r--src/or/connection.c3
4 files changed, 25 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 6bf665e6b3..c2b2939532 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -66,6 +66,7 @@ Changes in version 0.2.0.10-alpha - 2007-11-0?
an accepted-but-discarded descriptor upload. Partially implements
fix for bug 535.
- Make the "not enough dir info yet" message better.
+ - Make the log message for "tls error. breaking." more useful.
o Minor features (bridges):
- If bridge users set UpdateBridgesFromAuthority, but the digest
diff --git a/src/common/tortls.c b/src/common/tortls.c
index 4b46f9d9d2..5b902c9e9a 100644
--- a/src/common/tortls.c
+++ b/src/common/tortls.c
@@ -145,6 +145,26 @@ tor_errno_to_tls_error(int e)
#endif
}
+/** DOCDOC */
+const char *
+tor_tls_err_to_string(int err)
+{
+ if (err >= 0)
+ return "[Not an error.]";
+ switch (err) {
+ case TOR_TLS_ERROR_MISC: return "misc error";
+ case TOR_TLS_ERROR_IO: return "unexpected close";
+ case TOR_TLS_ERROR_CONNREFUSED: return "connection refused";
+ case TOR_TLS_ERROR_CONNRESET: return "connection reset";
+ case TOR_TLS_ERROR_NO_ROUTE: return "host unreachable";
+ case TOR_TLS_ERROR_TIMEOUT: return "connection timed out";
+ case TOR_TLS_CLOSE: return "closed";
+ case TOR_TLS_WANTREAD: return "want to read";
+ case TOR_TLS_WANTWRITE: return "want to write";
+ default: return "(unknown error code)";
+ }
+}
+
#define CATCH_SYSCALL 1
#define CATCH_ZERO 2
diff --git a/src/common/tortls.h b/src/common/tortls.h
index 3a58cc2795..d30a154fa2 100644
--- a/src/common/tortls.h
+++ b/src/common/tortls.h
@@ -21,6 +21,7 @@ typedef struct tor_tls_t tor_tls_t;
/* Possible return values for most tor_tls_* functions. */
#define _MIN_TOR_TLS_ERROR_VAL -9
#define TOR_TLS_ERROR_MISC -9
+/* Rename to unexpected close or something. XXX020 */
#define TOR_TLS_ERROR_IO -8
#define TOR_TLS_ERROR_CONNREFUSED -7
#define TOR_TLS_ERROR_CONNRESET -6
@@ -45,6 +46,7 @@ typedef struct tor_tls_t tor_tls_t;
#define TOR_TLS_RANDOM_LEN 32
#define TOR_TLS_IS_ERROR(rv) ((rv) < TOR_TLS_CLOSE)
+const char *tor_tls_err_to_string(int err);
void tor_tls_free_all(void);
int tor_tls_context_new(crypto_pk_env_t *rsa,
diff --git a/src/or/connection.c b/src/or/connection.c
index 382802e3f3..0dd2f9e43d 100644
--- a/src/or/connection.c
+++ b/src/or/connection.c
@@ -1917,7 +1917,8 @@ connection_read_to_buf(connection_t *conn, int *max_to_read)
conn->address);
return result;
CASE_TOR_TLS_ERROR_ANY:
- log_info(LD_NET,"tls error. breaking (nickname %s, address %s).",
+ log_info(LD_NET,"tls error [%s]. breaking (nickname %s, address %s).",
+ tor_tls_err_to_string(result),
or_conn->nickname ? or_conn->nickname : "not set",
conn->address);
return result;