diff --git a/src/or/directory.c b/src/or/directory.c index f7a07a81ae..33da6e253b 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -122,7 +122,7 @@ int connection_dir_process_inbuf(connection_t *conn) { log_fn(LOG_INFO,"Empty directory. Ignoring."); free(directory); connection_mark_for_close(conn,0); - return -1; + return 0; } if(router_set_routerlist_from_directory(directory, conn->identity_pkey) < 0){ log_fn(LOG_INFO,"...but parsing failed. Ignoring."); diff --git a/src/or/main.c b/src/or/main.c index d7a10cf5f7..88fe73820d 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -176,13 +176,14 @@ static void conn_read(int i) { #ifdef MS_WINDOWS (poll_array[i].revents & POLLERR) || #endif - (connection_handle_read(conn) < 0 && !conn->marked_for_close)) - { - /* this connection is broken. remove it */ - /* XXX This shouldn't ever happen anymore. */ - log_fn(LOG_ERR,"Unhandled error on read for %s connection (fd %d); removing", - conn_type_to_string[conn->type], conn->s); - connection_mark_for_close(conn,0); + connection_handle_read(conn) < 0) { + if (!conn->marked_for_close) { + /* this connection is broken. remove it */ + /* XXX This shouldn't ever happen anymore. */ + log_fn(LOG_ERR,"Unhandled error on read for %s connection (fd %d); removing", + conn_type_to_string[conn->type], conn->s); + connection_mark_for_close(conn,0); + } } assert_connection_ok(conn, time(NULL)); } @@ -200,11 +201,13 @@ static void conn_write(int i) { assert_connection_ok(conn, time(NULL)); - if(connection_handle_write(conn) < 0 && !conn->marked_for_close) { - /* this connection is broken. remove it. */ - log_fn(LOG_ERR,"Unhandled error on read for %s connection (fd %d); removing", - conn_type_to_string[conn->type], conn->s); - connection_mark_for_close(conn,0); + if (connection_handle_write(conn) < 0) { + if (!conn->marked_for_close) { + /* this connection is broken. remove it. */ + log_fn(LOG_ERR,"Unhandled error on read for %s connection (fd %d); removing", + conn_type_to_string[conn->type], conn->s); + connection_mark_for_close(conn,0); + } } assert_connection_ok(conn, time(NULL)); }