Revert "Upgrade to 2.1.8-stable (2017-01-22)." and "Probably Mac build fix?"

This reverts commits 2a572d125a91a4aafd3ad8ce87259fc640fa0763 and
af241a5c8c2cde0fab7d7d563276c1095b00e3b4, which break tombstoned.

Bug: http://b/64543673
Test: manual + treehugger
diff --git a/evbuffer-internal.h b/evbuffer-internal.h
index cf4bddc..f9dcc06 100644
--- a/evbuffer-internal.h
+++ b/evbuffer-internal.h
@@ -24,17 +24,15 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
-#ifndef EVBUFFER_INTERNAL_H_INCLUDED_
-#define EVBUFFER_INTERNAL_H_INCLUDED_
+#ifndef _EVBUFFER_INTERNAL_H_
+#define _EVBUFFER_INTERNAL_H_
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 #include "event2/event-config.h"
-#include "evconfig-private.h"
 #include "event2/util.h"
-#include "event2/event_struct.h"
 #include "util-internal.h"
 #include "defer-internal.h"
 
@@ -43,7 +41,7 @@
  * arguments. */
 #define EVBUFFER_CB_NODEFER 2
 
-#ifdef _WIN32
+#ifdef WIN32
 #include <winsock2.h>
 #endif
 #include <sys/queue.h>
@@ -51,7 +49,7 @@
 /* Minimum allocation for a chain.  We define this so that we're burning no
  * more than 5% of each allocation on overhead.  It would be nice to lose even
  * less space, though. */
-#if EVENT__SIZEOF_VOID_P < 8
+#if _EVENT_SIZEOF_VOID_P < 8
 #define MIN_BUFFER_SIZE	512
 #else
 #define MIN_BUFFER_SIZE	1024
@@ -61,7 +59,7 @@
  * when bytes are added to or removed from the evbuffer. */
 struct evbuffer_cb_entry {
 	/** Structures to implement a doubly-linked queue of callbacks */
-	LIST_ENTRY(evbuffer_cb_entry) next;
+	TAILQ_ENTRY(evbuffer_cb_entry) next;
 	/** The callback function to invoke when this callback is called.
 	    If EVBUFFER_CB_OBSOLETE is set in flags, the cb_obsolete field is
 	    valid; otherwise, cb_func is valid. */
@@ -108,7 +106,7 @@
 	 * tried to invoke callbacks. */
 	size_t n_del_for_cb;
 
-#ifndef EVENT__DISABLE_THREAD_SUPPORT
+#ifndef _EVENT_DISABLE_THREAD_SUPPORT
 	/** A lock used to mediate access to this buffer. */
 	void *lock;
 #endif
@@ -127,7 +125,7 @@
 	 * overflows when we have mutually recursive callbacks, and for
 	 * serializing callbacks in a single thread. */
 	unsigned deferred_cbs : 1;
-#ifdef _WIN32
+#ifdef WIN32
 	/** True iff this buffer is set up for overlapped IO. */
 	unsigned is_overlapped : 1;
 #endif
@@ -135,7 +133,7 @@
 	ev_uint32_t flags;
 
 	/** Used to implement deferred callbacks. */
-	struct event_base *cb_queue;
+	struct deferred_cb_queue *cb_queue;
 
 	/** A reference count on this evbuffer.	 When the reference count
 	 * reaches 0, the buffer is destroyed.	Manipulated with
@@ -143,24 +141,24 @@
 	 * evbuffer_free. */
 	int refcnt;
 
-	/** A struct event_callback handle to make all of this buffer's callbacks
+	/** A deferred_cb handle to make all of this buffer's callbacks
 	 * invoked from the event loop. */
-	struct event_callback deferred;
+	struct deferred_cb deferred;
 
 	/** A doubly-linked-list of callback functions */
-	LIST_HEAD(evbuffer_cb_queue, evbuffer_cb_entry) callbacks;
+	TAILQ_HEAD(evbuffer_cb_queue, evbuffer_cb_entry) callbacks;
 
 	/** The parent bufferevent object this evbuffer belongs to.
 	 * NULL if the evbuffer stands alone. */
 	struct bufferevent *parent;
 };
 
-#if EVENT__SIZEOF_OFF_T < EVENT__SIZEOF_SIZE_T
+#if _EVENT_SIZEOF_OFF_T < _EVENT_SIZEOF_SIZE_T
 typedef ev_ssize_t ev_misalign_t;
 #define EVBUFFER_CHAIN_MAX ((size_t)EV_SSIZE_MAX)
 #else
 typedef ev_off_t ev_misalign_t;
-#if EVENT__SIZEOF_OFF_T > EVENT__SIZEOF_SIZE_T
+#if _EVENT_SIZEOF_OFF_T > _EVENT_SIZEOF_SIZE_T
 #define EVBUFFER_CHAIN_MAX EV_SIZE_MAX
 #else
 #define EVBUFFER_CHAIN_MAX ((size_t)EV_SSIZE_MAX)
@@ -186,8 +184,8 @@
 
 	/** Set if special handling is required for this chain */
 	unsigned flags;
-#define EVBUFFER_FILESEGMENT	0x0001  /**< A chain used for a file segment */
-#define EVBUFFER_SENDFILE	0x0002	/**< a chain used with sendfile */
+#define EVBUFFER_MMAP		0x0001	/**< memory in buffer is mmaped */
+#define EVBUFFER_SENDFILE	0x0002	/**< a chain used for sendfile */
 #define EVBUFFER_REFERENCE	0x0004	/**< a chain with a mem reference */
 #define EVBUFFER_IMMUTABLE	0x0008	/**< read-only chain */
 	/** a chain that mustn't be reallocated or freed, or have its contents
@@ -198,11 +196,6 @@
 	/** a chain that should be freed, but can't be freed until it is
 	 * un-pinned. */
 #define EVBUFFER_DANGLING	0x0040
-	/** a chain that is a referenced copy of another chain */
-#define EVBUFFER_MULTICAST	0x0080
-
-	/** number of references to this chain */
-	int refcnt;
 
 	/** Usually points to the read-write memory belonging to this
 	 * buffer allocated as part of the evbuffer_chain allocation.
@@ -213,67 +206,21 @@
 	unsigned char *buffer;
 };
 
-/** callback for a reference chain; lets us know what to do with it when
- * we're done with it. Lives at the end of an evbuffer_chain with the
- * EVBUFFER_REFERENCE flag set */
+/* this is currently used by both mmap and sendfile */
+/* TODO(niels): something strange needs to happen for Windows here, I am not
+ * sure what that is, but it needs to get looked into.
+ */
+struct evbuffer_chain_fd {
+	int fd;	/**< the fd associated with this chain */
+};
+
+/** callback for a reference buffer; lets us know what to do with it when
+ * we're done with it. */
 struct evbuffer_chain_reference {
 	evbuffer_ref_cleanup_cb cleanupfn;
 	void *extra;
 };
 
-/** File segment for a file-segment chain.  Lives at the end of an
- * evbuffer_chain with the EVBUFFER_FILESEGMENT flag set.  */
-struct evbuffer_chain_file_segment {
-	struct evbuffer_file_segment *segment;
-#ifdef _WIN32
-	/** If we're using CreateFileMapping, this is the handle to the view. */
-	HANDLE view_handle;
-#endif
-};
-
-/* Declared in event2/buffer.h; defined here. */
-struct evbuffer_file_segment {
-	void *lock; /**< lock prevent concurrent access to refcnt */
-	int refcnt; /**< Reference count for this file segment */
-	unsigned flags; /**< combination of EVBUF_FS_* flags  */
-
-	/** What kind of file segment is this? */
-	unsigned can_sendfile : 1;
-	unsigned is_mapping : 1;
-
-	/** The fd that we read the data from. */
-	int fd;
-	/** If we're using mmap, this is the raw mapped memory. */
-	void *mapping;
-#ifdef _WIN32
-	/** If we're using CreateFileMapping, this is the mapping */
-	HANDLE mapping_handle;
-#endif
-	/** If we're using mmap or IO, this is the content of the file
-	 * segment. */
-	char *contents;
-	/** Position of this segment within the file. */
-	ev_off_t file_offset;
-	/** If we're using mmap, this is the offset within 'mapping' where
-	 * this data segment begins. */
-	ev_off_t mmap_offset;
-	/** The length of this segment. */
-	ev_off_t length;
-	/** Cleanup callback function */
-	evbuffer_file_segment_cleanup_cb cleanup_cb;
-	/** Argument to be pass to cleanup callback function */
-	void *cleanup_cb_arg;
-};
-
-/** Information about the multicast parent of a chain.  Lives at the
- * end of an evbuffer_chain with the EVBUFFER_MULTICAST flag set.  */
-struct evbuffer_multicast_parent {
-	/** source buffer the multicast parent belongs to */
-	struct evbuffer *source;
-	/** multicast parent for this chain */
-	struct evbuffer_chain *parent;
-};
-
 #define EVBUFFER_CHAIN_SIZE sizeof(struct evbuffer_chain)
 /** Return a pointer to extra data allocated along with an evbuffer. */
 #define EVBUFFER_CHAIN_EXTRA(t, c) (t *)((struct evbuffer_chain *)(c) + 1)
@@ -300,21 +247,21 @@
 	} while (0)
 
 /** Increase the reference count of buf by one. */
-void evbuffer_incref_(struct evbuffer *buf);
+void _evbuffer_incref(struct evbuffer *buf);
 /** Increase the reference count of buf by one and acquire the lock. */
-void evbuffer_incref_and_lock_(struct evbuffer *buf);
+void _evbuffer_incref_and_lock(struct evbuffer *buf);
 /** Pin a single buffer chain using a given flag. A pinned chunk may not be
  * moved or freed until it is unpinned. */
-void evbuffer_chain_pin_(struct evbuffer_chain *chain, unsigned flag);
+void _evbuffer_chain_pin(struct evbuffer_chain *chain, unsigned flag);
 /** Unpin a single buffer chain using a given flag. */
-void evbuffer_chain_unpin_(struct evbuffer_chain *chain, unsigned flag);
+void _evbuffer_chain_unpin(struct evbuffer_chain *chain, unsigned flag);
 /** As evbuffer_free, but requires that we hold a lock on the buffer, and
  * releases the lock before freeing it and the buffer. */
-void evbuffer_decref_and_unlock_(struct evbuffer *buffer);
+void _evbuffer_decref_and_unlock(struct evbuffer *buffer);
 
 /** As evbuffer_expand, but does not guarantee that the newly allocated memory
  * is contiguous.  Instead, it may be split across two or more chunks. */
-int evbuffer_expand_fast_(struct evbuffer *, size_t, int);
+int _evbuffer_expand_fast(struct evbuffer *, size_t, int);
 
 /** Helper: prepares for a readv/WSARecv call by expanding the buffer to
  * hold enough memory to read 'howmuch' bytes in possibly noncontiguous memory.
@@ -322,7 +269,7 @@
  * extent, and *chainp to point to the first chain that we'll try to read into.
  * Returns the number of vecs used.
  */
-int evbuffer_read_setup_vecs_(struct evbuffer *buf, ev_ssize_t howmuch,
+int _evbuffer_read_setup_vecs(struct evbuffer *buf, ev_ssize_t howmuch,
     struct evbuffer_iovec *vecs, int n_vecs, struct evbuffer_chain ***chainp,
     int exact);
 
@@ -335,17 +282,12 @@
  * See note in buffer_iocp's launch_write function */
 
 /** Set the parent bufferevent object for buf to bev */
-void evbuffer_set_parent_(struct evbuffer *buf, struct bufferevent *bev);
+void evbuffer_set_parent(struct evbuffer *buf, struct bufferevent *bev);
 
-void evbuffer_invoke_callbacks_(struct evbuffer *buf);
-
-
-int evbuffer_get_callbacks_(struct evbuffer *buffer,
-    struct event_callback **cbs,
-    int max_cbs);
+void evbuffer_invoke_callbacks(struct evbuffer *buf);
 
 #ifdef __cplusplus
 }
 #endif
 
-#endif /* EVBUFFER_INTERNAL_H_INCLUDED_ */
+#endif /* _EVBUFFER_INTERNAL_H_ */