actually receive multiple different kinds of events

Nick Mathewson nickm at freehaven.net
Fri Mar 25 05:50:51 UTC 2005


On Thu, Mar 24, 2005 at 09:03:22PM -0500, Geoffrey Goodell wrote:
> see attached

This patch is incorrect.  It will break in two ways:

> --- control.c.orig	2005-03-24 20:58:17.000000000 -0500
> +++ control.c	2005-03-24 20:59:16.000000000 -0500
> @@ -174,7 +174,6 @@
>    connection_t **conns;
>    int n_conns, i;
>  
> -  global_event_mask = 0;
>    get_connection_array(&conns, &n_conns);
>    for (i = 0; i < n_conns; ++i) {
>      if (conns[i]->type == CONN_TYPE_CONTROL &&

This will make global_event_mask contain every event that every
controller was ever interested in: no good!

> @@ -267,7 +266,7 @@
>    for (i = 0; i < n_conns; ++i) {
>      if (conns[i]->type == CONN_TYPE_CONTROL &&
>          conns[i]->state == CONTROL_CONN_STATE_OPEN &&
> -        conns[i]->event_mask & (1<<event)) {
> +        global_event_mask & (1<<event)) {

This will make every controller receive every event that any
controller is interested in.

I think you might be confused about the semantics of SETEVENTS: it
takes a list of all the events that the controller is currently
interested in: events not listed are cleared.  I've updated
control-spec.txt to reflect this.

yrs,
-- 
Nick Mathewson
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 652 bytes
Desc: not available
URL: <http://lists.torproject.org/pipermail/tor-dev/attachments/20050325/913200cb/attachment.pgp>


More information about the tor-dev mailing list