Browse Source

last minute fix: don't early-flush non-tls streams
e.g., this breaks directory service


svn:r1033

Roger Dingledine 21 years ago
parent
commit
f00dc6fe1e
2 changed files with 3 additions and 3 deletions
  1. 2 2
      src/or/connection.c
  2. 1 1
      src/or/directory.c

+ 2 - 2
src/or/connection.c

@@ -530,8 +530,8 @@ void connection_write_to_buf(const char *string, int len, connection_t *conn) {
  * push data out as soon as we know there's enough for a tls record, so
  * during periods of high load we won't read the entire megabyte from
  * input before pushing any data out. */
-/* We follow the same algorithm for non-tls streams, because hey, why not. */
-  if(conn->outbuf_flushlen < MIN_TLS_FLUSHLEN &&
+  if(connection_speaks_cells(conn) &&
+     conn->outbuf_flushlen < MIN_TLS_FLUSHLEN &&
      conn->outbuf_flushlen+len >= MIN_TLS_FLUSHLEN) {
     len -= (MIN_TLS_FLUSHLEN - conn->outbuf_flushlen);
     conn->outbuf_flushlen = MIN_TLS_FLUSHLEN;

+ 1 - 1
src/or/directory.c

@@ -261,7 +261,7 @@ int connection_dir_finished_flushing(connection_t *conn) {
       log_fn(LOG_INFO,"Finished writing server response. Closing.");
       return -1; /* kill it */
     default:
-      log_fn(LOG_WARN,"BUG: called in unexpected state.");
+      log_fn(LOG_WARN,"BUG: called in unexpected state %d.", conn->state);
       return -1;
   }
   return 0;