diff options
author | Nick Mathewson <nickm@torproject.org> | 2008-02-05 23:20:49 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2008-02-05 23:20:49 +0000 |
commit | 12071df6c88415e60c990f230dcb67635431aafa (patch) | |
tree | 161c07b560b5e3464ce99ba98fe29c944a7ba8c7 /src/or/or.h | |
parent | ff9bd0fd3a0acd38e495a3ff7c85011b51c9fcb6 (diff) | |
download | tor-12071df6c88415e60c990f230dcb67635431aafa.tar tor-12071df6c88415e60c990f230dcb67635431aafa.tar.gz |
r17930@catbus: nickm | 2008-02-05 18:20:40 -0500
Initial attempts to track down bug 600, and refactor possibly offending code. 1) complain early if circuit state is set to OPEN when an onionskin is pending. 2) refactor onionskin field into one only used when n_conn is pending, and a separate onionskin field waiting for attention by a cpuworker. This might even fix the bug. More likely, it will make it fail with a more useful core.
svn:r13394
Diffstat (limited to 'src/or/or.h')
-rw-r--r-- | src/or/or.h | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/or/or.h b/src/or/or.h index a82c44be4..6041e84c7 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -1775,11 +1775,10 @@ typedef struct circuit_t { * more. */ int deliver_window; - /** For storage while passing to cpuworker (state - * CIRCUIT_STATE_ONIONSKIN_PENDING), or while n_conn is pending + /** For storage while n_conn is pending * (state CIRCUIT_STATE_OR_WAIT). When defined, it is always * length ONIONSKIN_CHALLENGE_LEN. */ - char *onionskin; + char *n_conn_onionskin; time_t timestamp_created; /**< When was this circuit created? */ time_t timestamp_dirty; /**< When the circuit was first used, or 0 if the @@ -2979,8 +2978,9 @@ void cpuworkers_rotate(void); int connection_cpu_finished_flushing(connection_t *conn); int connection_cpu_reached_eof(connection_t *conn); int connection_cpu_process_inbuf(connection_t *conn); -int assign_to_cpuworker(connection_t *cpuworker, uint8_t question_type, - void *task); +int assign_onionskin_to_cpuworker(connection_t *cpuworker, + or_circuit_t *circ, + char *onionskin); /********************************* directory.c ***************************/ @@ -3398,8 +3398,8 @@ void nt_service_set_state(DWORD state); /********************************* onion.c ***************************/ -int onion_pending_add(or_circuit_t *circ); -or_circuit_t *onion_next_task(void); +int onion_pending_add(or_circuit_t *circ, char *onionskin); +or_circuit_t *onion_next_task(char **onionskin_out); void onion_pending_remove(or_circuit_t *circ); int onion_skin_create(crypto_pk_env_t *router_key, |