summaryrefslogtreecommitdiff
path: root/bufferevent.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2010-10-08 00:59:02 -0400
committerNick Mathewson <nickm@torproject.org>2010-10-14 10:55:04 -0400
commitac27eb827655b344a08207bf92a0c25da94ac7eb (patch)
tree832118570254f7f5555da3fa2b2d7ae87d2ea128 /bufferevent.c
parent34d64f8a347147aa5a6ac222f302e12b142a8f2e (diff)
downloadlibevent-ac27eb827655b344a08207bf92a0c25da94ac7eb.tar.gz
Correct logic on disabling underlying bufferevents when disabling a filter
Previously, whenever writing was disabled on a bufferevent_filter (or a filtering SSL bufferevent), we would stop writing on the underlying bufferevent. This would make for trouble, though, since if you implemented common patterns like "stop writing once data X has been flushed", your bufferevent filter would disable the underlying bufferevent after the data was flushed to the underlying bufferevent, but before actually having it written to the network. Now, we have filters leave their underlying bufferevents enabled for reading and writing for reading and writing immediately. They are not disabled, unless the user wants to disable them, which is now allowed. To handle the case where we want to choke reading on the underlying bufferevent because the filter no longer wants to read, we use bufferevent_suspend_read(). This is analogous to the way that we use bufferevent_suspend_write() to suspend writing on a filtering bufferevent when the underlying bufferevent's output buffer has hit its high watermark.
Diffstat (limited to 'bufferevent.c')
-rw-r--r--bufferevent.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/bufferevent.c b/bufferevent.c
index 2ae42fba..e5369ece 100644
--- a/bufferevent.c
+++ b/bufferevent.c
@@ -60,7 +60,7 @@
#include "util-internal.h"
void
-bufferevent_suspend_read(struct bufferevent *bufev, short what)
+bufferevent_suspend_read(struct bufferevent *bufev, bufferevent_suspend_flags what)
{
struct bufferevent_private *bufev_private =
EVUTIL_UPCAST(bufev, struct bufferevent_private, bev);
@@ -72,7 +72,7 @@ bufferevent_suspend_read(struct bufferevent *bufev, short what)
}
void
-bufferevent_unsuspend_read(struct bufferevent *bufev, short what)
+bufferevent_unsuspend_read(struct bufferevent *bufev, bufferevent_suspend_flags what)
{
struct bufferevent_private *bufev_private =
EVUTIL_UPCAST(bufev, struct bufferevent_private, bev);
@@ -84,7 +84,7 @@ bufferevent_unsuspend_read(struct bufferevent *bufev, short what)
}
void
-bufferevent_suspend_write(struct bufferevent *bufev, short what)
+bufferevent_suspend_write(struct bufferevent *bufev, bufferevent_suspend_flags what)
{
struct bufferevent_private *bufev_private =
EVUTIL_UPCAST(bufev, struct bufferevent_private, bev);
@@ -96,7 +96,7 @@ bufferevent_suspend_write(struct bufferevent *bufev, short what)
}
void
-bufferevent_unsuspend_write(struct bufferevent *bufev, short what)
+bufferevent_unsuspend_write(struct bufferevent *bufev, bufferevent_suspend_flags what)
{
struct bufferevent_private *bufev_private =
EVUTIL_UPCAST(bufev, struct bufferevent_private, bev);