mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
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
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -701,6 +701,10 @@ assign_to_dnsworker(connection_t *exitconn)
|
||||
tor_free(dnsconn->address);
|
||||
dnsconn->address = tor_strdup(exitconn->address);
|
||||
dnsconn->state = DNSWORKER_STATE_BUSY;
|
||||
/* 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(). */
|
||||
dnsconn->timestamp_lastwritten = time(NULL);
|
||||
num_dnsworkers_busy++;
|
||||
|
||||
len = strlen(dnsconn->address);
|
||||
|
||||
Reference in New Issue
Block a user