Fix up behavior of never-defered callbacks a little

This commit is contained in:
Nick Mathewson 2009-12-22 15:52:02 -05:00
parent 5846bf6cdd
commit 390e056152
3 changed files with 6 additions and 8 deletions

View File

@ -333,6 +333,7 @@ evbuffer_run_callbacks(struct evbuffer *buffer, int running_deferred)
struct evbuffer_cb_info info;
size_t new_size;
uint32_t mask, masked_val;
int clear = 1;
if (running_deferred) {
mask = EVBUFFER_CB_NODEFER|EVBUFFER_CB_ENABLED;
@ -340,6 +341,8 @@ evbuffer_run_callbacks(struct evbuffer *buffer, int running_deferred)
} else if (buffer->deferred_cbs) {
mask = EVBUFFER_CB_NODEFER|EVBUFFER_CB_ENABLED;
masked_val = EVBUFFER_CB_NODEFER|EVBUFFER_CB_ENABLED;
/* Don't zero-out n_add/n_del, since */
clear = 0;
} else {
mask = EVBUFFER_CB_ENABLED;
masked_val = EVBUFFER_CB_ENABLED;

View File

@ -36,6 +36,9 @@ extern "C" {
#include "util-internal.h"
#include "defer-internal.h"
/* Experimental cb flag: "never deferred" */
#define EVBUFFER_CB_NODEFER 2
#ifdef WIN32
#include <winsock2.h>
#endif
@ -59,11 +62,6 @@ struct evbuffer_cb_entry {
void *cbarg;
/** Currently set flags on this callback. */
ev_uint32_t flags;
#if 0
/** Size of the evbuffer before this callback was suspended, or 0
if this callback is not suspended. */
size_t size_before_suspend;
#endif
};
struct bufferevent;

View File

@ -610,9 +610,6 @@ int evbuffer_remove_cb(struct evbuffer *buffer, evbuffer_cb_func cb, void *cbarg
* should not be invoked. */
#define EVBUFFER_CB_ENABLED 1
/* Experimental cb flag: "never deferred" */
#define EVBUFFER_CB_NODEFER 2
/** Change the flags that are set for a callback on a buffer by adding more.
@param buffer the evbuffer that the callback is watching.