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;
/* 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))