break rend_client_desc_fetched out of connection_mark_for_close

svn:r1856
This commit is contained in:
Roger Dingledine
2004-05-12 20:36:44 +00:00
parent 44aecf8628
commit 32c42a0ee2
3 changed files with 12 additions and 4 deletions
+10 -4
View File
@@ -168,6 +168,15 @@ void connection_free_all(void) {
connection_free(carray[i]);
}
void connection_about_to_close_connection(connection_t *conn)
{
if(conn->type == CONN_TYPE_DIR)
if(conn->purpose == DIR_PURPOSE_FETCH_RENDDESC)
rend_client_desc_fetched(conn->rend_query, 0);
}
/** Close the underlying socket for <b>conn</b>, so we don't try to
* flush it. Must be used in conjunction with (right before)
* connection_mark_for_close().
@@ -218,11 +227,8 @@ _connection_mark_for_close(connection_t *conn, char reason)
case CONN_TYPE_AP_LISTENER:
case CONN_TYPE_DIR_LISTENER:
case CONN_TYPE_CPUWORKER:
/* No special processing needed. */
break;
case CONN_TYPE_DIR:
if(conn->purpose == DIR_PURPOSE_FETCH_RENDDESC)
rend_client_desc_fetched(conn->rend_query, 0);
/* No special processing needed immediately. */
break;
case CONN_TYPE_OR:
/* Remember why we're closing this connection. */
+1
View File
@@ -313,6 +313,7 @@ static void conn_close_if_marked(int i) {
* flush and send destroys for all circuits on this conn
*/
circuit_about_to_close_connection(conn);
connection_about_to_close_connection(conn);
connection_remove(conn);
if(conn->type == CONN_TYPE_EXIT) {
assert_connection_edge_not_dns_pending(conn);
+1
View File
@@ -954,6 +954,7 @@ extern char *conn_type_to_string[];
connection_t *connection_new(int type);
void connection_free(connection_t *conn);
void connection_free_all(void);
void connection_about_to_close_connection(connection_t *conn);
void connection_close_immediate(connection_t *conn);
int _connection_mark_for_close(connection_t *conn, char reason);