aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/or/connection.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/src/or/connection.c b/src/or/connection.c
index 88d6fde15..624a387a1 100644
--- a/src/or/connection.c
+++ b/src/or/connection.c
@@ -494,19 +494,15 @@ void connection_write_to_buf(const char *string, int len, connection_t *conn) {
if(!len || conn->marked_for_close)
return;
- if( (!connection_speaks_cells(conn)) ||
- (!connection_state_is_open(conn)) ||
- (options.LinkPadding == 0) ) {
- /* connection types other than or, or or not in 'open' state, should flush immediately */
- /* also flush immediately if we're not doing LinkPadding, since otherwise it will never flush */
- connection_start_writing(conn);
- conn->outbuf_flushlen += len;
- }
-
if(write_to_buf(string, len, conn->outbuf) < 0) {
log_fn(LOG_WARN,"write_to_buf failed. Closing connection (fd %d).", conn->s);
conn->marked_for_close = 1;
+ return;
}
+
+ /* XXX if linkpadding, this only applies to conns that aren't open OR connections */
+ connection_start_writing(conn);
+ conn->outbuf_flushlen += len;
}
connection_t *connection_exact_get_by_addr_port(uint32_t addr, uint16_t port) {