[or-cvs] [tor/master 04/38] Add bufferevent versions of connection_write/fetch_to/from_buf.

nickm at torproject.org nickm at torproject.org
Mon Sep 27 20:50:58 UTC 2010


Author: Nick Mathewson <nickm at torproject.org>
Date: Fri, 31 Jul 2009 11:59:39 -0400
Subject: Add bufferevent versions of connection_write/fetch_to/from_buf.
Commit: 076025476ae7facae4c4fcc6211f1faaa615589f

---
 src/or/connection.c |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/src/or/connection.c b/src/or/connection.c
index cf3e9f3..861e0c6 100644
--- a/src/or/connection.c
+++ b/src/or/connection.c
@@ -2609,7 +2609,11 @@ connection_read_to_buf(connection_t *conn, int *max_to_read, int *socket_error)
 int
 connection_fetch_from_buf(char *string, size_t len, connection_t *conn)
 {
-  return fetch_from_buf(string, len, conn->inbuf);
+  IF_HAS_BUFFEREVENT(conn, {
+    return bufferevent_read(conn->bufev, string, len);
+  }) ELSE_IF_NO_BUFFEREVENT {
+    return fetch_from_buf(string, len, conn->inbuf);
+  }
 }
 
 /** Return conn-\>outbuf_flushlen: how many bytes conn wants to flush
@@ -2858,6 +2862,14 @@ _connection_write_to_buf_impl(const char *string, size_t len,
   if (conn->marked_for_close && !conn->hold_open_until_flushed)
     return;
 
+  IF_HAS_BUFFEREVENT(conn, {
+      if (bufferevent_write(conn->bufev, string, len)<0) {
+        /* XXXX mark for close? */
+        log_warn(LD_NET, "bufferevent_write failed! That shouldn't happen.");
+      }
+      return;
+  });
+
   old_datalen = buf_datalen(conn->outbuf);
   if (zlib) {
     dir_connection_t *dir_conn = TO_DIR_CONN(conn);
-- 
1.7.1




More information about the tor-commits mailing list