summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2008-02-21 15:39:26 +0000
committerNick Mathewson <nickm@torproject.org>2008-02-21 15:39:26 +0000
commite18ee2a2abc9ee5dca56e1744babfb7d5733d32d (patch)
treed729006de05a43df82a5d950ce173b161aeb8d3d
parent41eca067a1123772b1b9cb57534be788fc0e2f89 (diff)
downloadtor-e18ee2a2abc9ee5dca56e1744babfb7d5733d32d.tar.gz
tor-e18ee2a2abc9ee5dca56e1744babfb7d5733d32d.zip
r14357@31-33-219: nickm | 2008-02-21 10:39:11 -0500
Fix bug-handling code for unhandled write errors, so that it does not try to flush any data on the failed connection. Bugfix on 0.1.2.x. svn:r13655
-rw-r--r--ChangeLog3
-rw-r--r--src/or/main.c5
2 files changed, 4 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index c78300f640..c394661c28 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -69,6 +69,9 @@ Changes in version 0.2.0.20-?? - 2008-02-??
so it doesn't return failure when any authority disappears.
- Even though the man page said that "TrackHostExits ." should
work, nobody had ever implemented it. Bugfix on 0.1.0.x.
+ - Alter the code that tries to recover from unhandled write
+ errors, to not try to flush onto a socket that's given us
+ unhandled errors. Bugfix on 0.1.2.x.
o Code simplifications and refactoring:
- Remove the tor_strpartition function: its logic was confused,
diff --git a/src/or/main.c b/src/or/main.c
index 313c33f06a..7b8448ea1d 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -500,10 +500,7 @@ conn_write_callback(int fd, short events, void *_conn)
edge_conn->end_reason = END_STREAM_REASON_INTERNAL;
conn->edge_has_sent_end = 1;
}
- /* XXX020rc do we need a close-immediate here, so we don't try to
- * flush? -NM
- * Yes, we do, since it broke in an unexpected way. This should be
- * safe to do since I don't think this codepath ever gets called. -RD */
+ connection_close_immediate(conn); /* So we don't try to flush. */
connection_mark_for_close(conn);
}
}