[PATCH] Fix send_control_event()
    Andre Eisenbach 
    andre at eisenbach.com
       
    Thu Nov 11 00:38:04 UTC 2004
    
    
  
Hi!
According to the new control spec document, the "EVENT" message sent to a 
UI client contains the 2-byte event code followed by event-dependent 
information.
However, according to the source code, that is not the case :D.
Attached (hopefully) is a patch against TOR 0.0.9pre5 which fixes this. 
Briefly tested with my PHP test client.
This is my first patch submission for TOR, so please let me know if this 
is ok.
Cheers,
    Andre Eisenbach <andre at eisenbach.com>
-------------- next part --------------
--- control.c.orig	2004-11-10 18:07:24.000000000 -0600
+++ control.c	2004-11-10 18:25:13.000000000 -0600
@@ -184,15 +184,24 @@ send_control_event(uint16_t event, uint1
 {
   connection_t **conns;
   int n_conns, i;
+  size_t buflen;
+  char *buf;
+
+  buflen = len + 2;
+  buf = tor_malloc_zero(buflen);
+  set_uint16(buf, htons(event));
+  memcpy(buf+2, body, len);
 
   get_connection_array(&conns, &n_conns);
   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)) {
-      send_control_message(conns[i], CONTROL_CMD_EVENT, len, body);
+      send_control_message(conns[i], CONTROL_CMD_EVENT, (uint16_t)(buflen), buf);
     }
   }
+
+  tor_free(buf); 
 }
 
 /** Called when we receive a SETCONF message: parse the body and try
    
    
More information about the tor-dev
mailing list