From: Nick Mathewson Date: Fri, 31 Jul 2009 15:59:39 +0000 (-0400) Subject: Add bufferevent versions of connection_write/fetch_to/from_buf. X-Git-Tag: tor-0.2.3.1-alpha~362^2~34 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=076025476ae7facae4c4fcc6211f1faaa615589f;p=thirdparty%2Ftor.git Add bufferevent versions of connection_write/fetch_to/from_buf. --- diff --git a/src/or/connection.c b/src/or/connection.c index cf3e9f3c5a..861e0c6231 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);