summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2014-04-16 23:13:30 -0400
committerNick Mathewson <nickm@torproject.org>2014-04-16 23:13:30 -0400
commitc856193199151bf26208981f63ca723f9c4cf5d6 (patch)
tree497743183d28cedfd4ad53beb7d488200e61d1cd
parent74ddd5f739696749409c933f82cf3a93152da6cc (diff)
parent6ee9138576ae289c4ed726ddbb7b3f547f111f70 (diff)
downloadtor-c856193199151bf26208981f63ca723f9c4cf5d6.tar.gz
tor-c856193199151bf26208981f63ca723f9c4cf5d6.zip
Merge remote-tracking branch 'andrea/bug11304'
-rw-r--r--changes/bug113045
-rw-r--r--src/or/connection.c6
2 files changed, 11 insertions, 0 deletions
diff --git a/changes/bug11304 b/changes/bug11304
new file mode 100644
index 0000000000..2ea165f872
--- /dev/null
+++ b/changes/bug11304
@@ -0,0 +1,5 @@
+ o Bugfixes:
+ - If write_to_buf() in connection_write_to_buf_impl_() ever fails,
+ check if it's an or_connection_t and correctly call
+ connection_or_close_for_error() rather than connection_mark_for_close()
+ directly. Fixes bug #11304.
diff --git a/src/or/connection.c b/src/or/connection.c
index 0c61b0d616..2e72e6b397 100644
--- a/src/or/connection.c
+++ b/src/or/connection.c
@@ -4023,6 +4023,12 @@ connection_write_to_buf_impl_,(const char *string, size_t len,
"write_to_buf failed. Closing circuit (fd %d).", (int)conn->s);
circuit_mark_for_close(circuit_get_by_edge_conn(TO_EDGE_CONN(conn)),
END_CIRC_REASON_INTERNAL);
+ } else if (conn->type == CONN_TYPE_OR) {
+ or_connection_t *orconn = TO_OR_CONN(conn);
+ log_warn(LD_NET,
+ "write_to_buf failed on an orconn; notifying of error "
+ "(fd %d)", (int)(conn->s));
+ connection_or_close_for_error(orconn, 0);
} else {
log_warn(LD_NET,
"write_to_buf failed. Closing connection (fd %d).",