Browse Source

Merge remote-tracking branch 'origin/maint-0.2.2'

Conflicts:
	src/or/command.c
Nick Mathewson 12 years ago
parent
commit
212c3acd42
2 changed files with 11 additions and 0 deletions
  1. 5 0
      changes/bug4299
  2. 6 0
      src/or/command.c

+ 5 - 0
changes/bug4299

@@ -0,0 +1,5 @@
+  o Major bugfix:
+    - Do not process cells on a marked-for-close connection. We previously
+      avoided this by not calling read handlers on marked connections, but
+      that's not adequate for the case when cells are very small. Fixes
+      bug 4299; bugfix on 0.2.0.20-rc which first made small cells possible.

+ 6 - 0
src/or/command.c

@@ -148,6 +148,9 @@ command_process_cell(cell_t *cell, or_connection_t *conn)
 #define PROCESS_CELL(tp, cl, cn) command_process_ ## tp ## _cell(cl, cn)
 #endif
 
+  if (conn->_base.marked_for_close)
+    return;
+
   /* Reject all but VERSIONS and NETINFO when handshaking. */
   /* (VERSIONS should actually be impossible; it's variable-length.) */
   if (handshaking && cell->command != CELL_VERSIONS &&
@@ -230,6 +233,9 @@ command_process_var_cell(var_cell_t *cell, or_connection_t *conn)
   }
 #endif
 
+  if (conn->_base.marked_for_close)
+    return;
+
   switch (conn->_base.state)
   {
     case OR_CONN_STATE_OR_HANDSHAKING_V2: