Loading src/core/crypto/onion_crypto.c +8 −0 Original line number Diff line number Diff line Loading @@ -312,6 +312,14 @@ onion_skin_server_handshake(int type, * parameters we've just negotiated */ /* NOTE! DANGER, DANGER, DANGER! Remember that this function can be run in a worker thread, and so therefore you can't access "global" state that isn't lock-protected. CAVEAT HAXX0R! */ tor_free(client_msg); } Loading src/core/mainloop/cpuworker.c +7 −4 Original line number Diff line number Diff line Loading @@ -158,6 +158,8 @@ typedef struct cpuworker_reply_t { uint8_t keys[CPATH_KEY_MATERIAL_LEN]; /** Input to use for authenticating introduce1 cells. */ uint8_t rend_auth_material[DIGEST_LEN]; /** Negotiated circuit parameters. */ circuit_params_t circ_params; } cpuworker_reply_t; typedef struct cpuworker_job_u_t { Loading Loading @@ -387,6 +389,10 @@ cpuworker_onion_handshake_replyfn(void *work_) circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_INTERNAL); goto done_processing; } /* TODO! We need to use rpl.circ_params here to initialize the congestion control parameters of the circuit. */ log_debug(LD_OR,"onionskin_answer succeeded. Yay."); done_processing: Loading Loading @@ -416,7 +422,6 @@ cpuworker_onion_handshake_threadfn(void *state_, void *work_) const create_cell_t *cc = &req.create_cell; created_cell_t *cell_out = &rpl.created_cell; struct timeval tv_start = {0,0}, tv_end; circuit_params_t params; int n; rpl.timed = req.timed; rpl.started_at = req.started_at; Loading @@ -430,7 +435,7 @@ cpuworker_onion_handshake_threadfn(void *state_, void *work_) sizeof(cell_out->reply), rpl.keys, CPATH_KEY_MATERIAL_LEN, rpl.rend_auth_material, ¶ms); &rpl.circ_params); if (n < 0) { /* failure */ log_debug(LD_OR,"onion_skin_server_handshake failed."); Loading @@ -454,8 +459,6 @@ cpuworker_onion_handshake_threadfn(void *state_, void *work_) rpl.success = 1; } // TODO: pass the parameters back up so we can initialize the cc paremeters. rpl.magic = CPUWORKER_REPLY_MAGIC; if (req.timed) { struct timeval tv_diff; Loading Loading
src/core/crypto/onion_crypto.c +8 −0 Original line number Diff line number Diff line Loading @@ -312,6 +312,14 @@ onion_skin_server_handshake(int type, * parameters we've just negotiated */ /* NOTE! DANGER, DANGER, DANGER! Remember that this function can be run in a worker thread, and so therefore you can't access "global" state that isn't lock-protected. CAVEAT HAXX0R! */ tor_free(client_msg); } Loading
src/core/mainloop/cpuworker.c +7 −4 Original line number Diff line number Diff line Loading @@ -158,6 +158,8 @@ typedef struct cpuworker_reply_t { uint8_t keys[CPATH_KEY_MATERIAL_LEN]; /** Input to use for authenticating introduce1 cells. */ uint8_t rend_auth_material[DIGEST_LEN]; /** Negotiated circuit parameters. */ circuit_params_t circ_params; } cpuworker_reply_t; typedef struct cpuworker_job_u_t { Loading Loading @@ -387,6 +389,10 @@ cpuworker_onion_handshake_replyfn(void *work_) circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_INTERNAL); goto done_processing; } /* TODO! We need to use rpl.circ_params here to initialize the congestion control parameters of the circuit. */ log_debug(LD_OR,"onionskin_answer succeeded. Yay."); done_processing: Loading Loading @@ -416,7 +422,6 @@ cpuworker_onion_handshake_threadfn(void *state_, void *work_) const create_cell_t *cc = &req.create_cell; created_cell_t *cell_out = &rpl.created_cell; struct timeval tv_start = {0,0}, tv_end; circuit_params_t params; int n; rpl.timed = req.timed; rpl.started_at = req.started_at; Loading @@ -430,7 +435,7 @@ cpuworker_onion_handshake_threadfn(void *state_, void *work_) sizeof(cell_out->reply), rpl.keys, CPATH_KEY_MATERIAL_LEN, rpl.rend_auth_material, ¶ms); &rpl.circ_params); if (n < 0) { /* failure */ log_debug(LD_OR,"onion_skin_server_handshake failed."); Loading @@ -454,8 +459,6 @@ cpuworker_onion_handshake_threadfn(void *state_, void *work_) rpl.success = 1; } // TODO: pass the parameters back up so we can initialize the cc paremeters. rpl.magic = CPUWORKER_REPLY_MAGIC; if (req.timed) { struct timeval tv_diff; Loading