aboutsummaryrefslogtreecommitdiff
path: root/src/or/cpuworker.c
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2006-06-12 11:59:19 +0000
committerRoger Dingledine <arma@torproject.org>2006-06-12 11:59:19 +0000
commit87e3800dfc0adcd6cb4e57e693072fd2d07217b1 (patch)
treec9988cf7d2ab2ddbb686487b750ebba30ce45880 /src/or/cpuworker.c
parentd90d4b4c9061d0e16f354d8b64cf54b750752e00 (diff)
downloadtor-87e3800dfc0adcd6cb4e57e693072fd2d07217b1.tar.gz
tor-87e3800dfc0adcd6cb4e57e693072fd2d07217b1.zip
Finally solve the "closing wedged cpuworkers" bug. Woo.
This happened when we got two create cells in a row from the same TLS connection. It would hand one to the cpuworker, and then immediately handle the second one -- after it had registered that the first one was busy, but before it had updated the timestamp that we use to decide how *long* it's been busy. svn:r6606
Diffstat (limited to 'src/or/cpuworker.c')
-rw-r--r--src/or/cpuworker.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c
index 29fd992f62..c86753fb58 100644
--- a/src/or/cpuworker.c
+++ b/src/or/cpuworker.c
@@ -476,6 +476,10 @@ assign_to_cpuworker(connection_t *cpuworker, uint8_t question_type,
tag_pack(tag, circ->p_conn->addr, circ->p_conn->port, circ->p_circ_id);
cpuworker->state = CPUWORKER_STATE_BUSY_ONION;
+ /* touch the lastwritten timestamp, since that's how we check to
+ * see how long it's been since we asked the question, and sometimes
+ * we check before the first call to connection_handle_write(). */
+ cpuworker->timestamp_lastwritten = time(NULL);
num_cpuworkers_busy++;
connection_write_to_buf((char*)&question_type, 1, cpuworker);