diff --git a/src/or/or.h b/src/or/or.h index dcaea39d17..3510ab0421 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3508,8 +3508,8 @@ typedef struct rend_intro_point_t { /** (Service side only) A digestmap recording the INTRODUCE2 cells * this intro point's circuit has received. Each key is the digest * of the RSA-encrypted part of a received INTRODUCE2 cell; each - * value is a pointer to the time_t at which the cell was - * received. */ + * value is a pointer to the time_t at which the cell was received. + * This digestmap is used to prevent replay attacks. */ digestmap_t *accepted_intro_rsa_parts; /** (Service side only) The time at which this intro point was first diff --git a/src/or/rendservice.c b/src/or/rendservice.c index 2aa02f9e05..2c54f3059d 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -89,8 +89,12 @@ typedef struct rend_service_t { * up-to-date. */ time_t next_upload_time; /**< Scheduled next hidden service descriptor * upload time. */ - /** Map from digests of Diffie-Hellman values INTRODUCE2 to time_t of when - * they were received; used to prevent replays. */ + /** Map from digests of Diffie-Hellman values INTRODUCE2 to time_t + * of when they were received. Clients may send INTRODUCE1 cells + * for the same rendezvous point through two or more different + * introduction points; when they do, this digestmap keeps us from + * launching multiple simultaneous attempts to connect to the same + * rend point. */ digestmap_t *accepted_intro_dh_parts; /** Time at which we last removed expired values from * accepted_intro_dh_parts. */