From 036384fd8eaf83354ed59abec1c9816abd82528c Mon Sep 17 00:00:00 2001 From: Roger Dingledine Date: Wed, 22 Dec 2004 02:55:26 +0000 Subject: [PATCH] respond to an 009 XXX svn:r3201 --- src/or/connection.c | 2 +- src/or/main.c | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/or/connection.c b/src/or/connection.c index 217482a3cc..d6d7bd168d 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -942,7 +942,7 @@ static int connection_read_to_buf(connection_t *conn, int *max_to_read) { result = read_to_buf(conn->s, at_most, conn->inbuf, &conn->inbuf_reached_eof); -// log(LOG_DEBUG,"connection_read_to_buf(): read_to_buf returned %d.",read_result); +// log_fn(LOG_DEBUG,"read_to_buf returned %d.",read_result); if (result < 0) return -1; diff --git a/src/or/main.c b/src/or/main.c index e9b77a6ab2..1c2779066f 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -252,6 +252,17 @@ static void conn_read(int i) { /* XXX Post 0.0.9, we should rewrite this whole if statement; * something sane may result. Nick suspects that the || below * should be a &&. + * + * No, it should remain a ||. Here's why: when we reach the end + * of a read bucket, we stop reading on a conn. We don't want to + * read any more bytes on it, until we're allowed to resume reading. + * So if !connection_is_reading, then return right then. Also, if + * poll() said nothing (true because the if above), and there's + * nothing pending, then also return because nothing to do. + * + * If poll *does* have something to say, even though + * !connection_is_reading, then we want to handle it in connection.c + * to make it stop reading for next time, else we loop. */ if (!connection_is_reading(conn) || !connection_has_pending_tls_data(conn))