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
Attachment:
pgpvGbK9xglu9.pgp
Description: PGP signature