don't mark_for_close again when the destroy arrives after the end cell

svn:r1211
This commit is contained in:
Roger Dingledine 2004-03-03 07:24:53 +00:00
parent 3c71d09402
commit dbdd2eaa2a

View File

@ -92,6 +92,8 @@ int connection_edge_process_inbuf(connection_t *conn) {
int connection_edge_destroy(uint16_t circ_id, connection_t *conn) { int connection_edge_destroy(uint16_t circ_id, connection_t *conn) {
assert(conn->type == CONN_TYPE_AP || conn->type == CONN_TYPE_EXIT); assert(conn->type == CONN_TYPE_AP || conn->type == CONN_TYPE_EXIT);
if(conn->marked_for_close)
return 0; /* already marked; probably got an 'end' */
log_fn(LOG_INFO,"CircID %d: At an edge. Marking connection for close.", log_fn(LOG_INFO,"CircID %d: At an edge. Marking connection for close.",
circ_id); circ_id);
conn->has_sent_end = 1; /* we're closing the circuit, nothing to send to */ conn->has_sent_end = 1; /* we're closing the circuit, nothing to send to */