fix some bugs; more remain

svn:r1450
This commit is contained in:
Roger Dingledine 2004-04-03 00:55:53 +00:00
parent 06c812c2de
commit bbc9484957
5 changed files with 12 additions and 8 deletions

View File

@ -334,7 +334,7 @@ circuit_t *circuit_get_newest(connection_t *conn,
* the list. * the list.
*/ */
circuit_t *circuit_get_next_by_pk_and_purpose(circuit_t *start, circuit_t *circuit_get_next_by_pk_and_purpose(circuit_t *start,
const char *digest, int purpose) const char *digest, uint8_t purpose)
{ {
circuit_t *circ; circuit_t *circ;
if (start == NULL) if (start == NULL)

View File

@ -1026,8 +1026,9 @@ void assert_connection_ok(connection_t *conn, time_t now)
} else { } else {
assert(!conn->socks_request); assert(!conn->socks_request);
} }
if(conn->type != CONN_TYPE_DIR) { if(conn->type != CONN_TYPE_DIR &&
assert(!conn->purpose); /* only used for dir types currently */ conn->type != CONN_TYPE_AP) {
assert(!conn->purpose); /* only used for dir and ap types currently */
} }
switch(conn->type) switch(conn->type)

View File

@ -817,8 +817,9 @@ int connection_ap_handshake_attach_circuit(connection_t *conn) {
/* is one already on the way? */ /* is one already on the way? */
circ = circuit_launch_new(desired_circuit_purpose, NULL); circ = circuit_launch_new(desired_circuit_purpose, NULL);
/* depending on purpose, store stuff into circ */ /* depending on purpose, store stuff into circ */
if (desired_circuit_purpose == CIRCUIT_PURPOSE_C_GENERAL || if(circ &&
desired_circuit_purpose == CIRCUIT_PURPOSE_C_ESTABLISH_REND) { (desired_circuit_purpose == CIRCUIT_PURPOSE_C_GENERAL ||
desired_circuit_purpose == CIRCUIT_PURPOSE_C_ESTABLISH_REND)) {
/* then write the service_id into circ */ /* then write the service_id into circ */
strcpy(circ->rend_query, conn->rend_query); strcpy(circ->rend_query, conn->rend_query);
} }
@ -964,6 +965,7 @@ int connection_ap_make_bridge(char *address, uint16_t port) {
} }
conn->state = AP_CONN_STATE_CIRCUIT_WAIT; conn->state = AP_CONN_STATE_CIRCUIT_WAIT;
conn->purpose = AP_PURPOSE_GENERAL;
connection_start_reading(conn); connection_start_reading(conn);
/* attaching to a dirty circuit is fine */ /* attaching to a dirty circuit is fine */

View File

@ -176,7 +176,7 @@
#define AP_PURPOSE_RENDDESC_WAIT 2 #define AP_PURPOSE_RENDDESC_WAIT 2
#define AP_PURPOSE_RENDPOINT_WAIT 3 #define AP_PURPOSE_RENDPOINT_WAIT 3
#define AP_PURPOSE_INTROPOINT_WAIT 4 #define AP_PURPOSE_INTROPOINT_WAIT 4
#define _AP_PURPOSE_MAX 3 #define _AP_PURPOSE_MAX 4
#define _DIR_CONN_STATE_MIN 1 #define _DIR_CONN_STATE_MIN 1
#define DIR_CONN_STATE_CONNECTING 1 #define DIR_CONN_STATE_CONNECTING 1
@ -699,7 +699,7 @@ circuit_t *circuit_get_by_conn(connection_t *conn);
circuit_t *circuit_get_newest(connection_t *conn, circuit_t *circuit_get_newest(connection_t *conn,
int must_be_open, uint8_t conn_purpose); int must_be_open, uint8_t conn_purpose);
circuit_t *circuit_get_next_by_pk_and_purpose(circuit_t *circuit, circuit_t *circuit_get_next_by_pk_and_purpose(circuit_t *circuit,
const char *servid, int purpose); const char *servid, uint8_t purpose);
circuit_t *circuit_get_rendezvous(const char *cookie); circuit_t *circuit_get_rendezvous(const char *cookie);
void circuit_expire_building(void); void circuit_expire_building(void);

View File

@ -9,7 +9,7 @@ void
rend_client_introcirc_is_ready(connection_t *apconn, circuit_t *circ) rend_client_introcirc_is_ready(connection_t *apconn, circuit_t *circ)
{ {
log_fn(LOG_WARN,"introcirc is ready");
} }
/* send the rendezvous cell */ /* send the rendezvous cell */
@ -18,6 +18,7 @@ rend_client_rendcirc_is_ready(connection_t *apconn, circuit_t *circ)
{ {
log_fn(LOG_WARN,"rendcirc is ready");
} }
/* bob sent us a rendezvous cell, join the circs. */ /* bob sent us a rendezvous cell, join the circs. */