From c1eec7aae52af93d5c763859e4b8dab8e780e329 Mon Sep 17 00:00:00 2001 From: Niels Provos Date: Sat, 26 Aug 2006 04:32:31 +0000 Subject: [PATCH] allow both read and write callbacks for bufferevents to be NULL svn:r227 --- evbuffer.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/evbuffer.c b/evbuffer.c index 7bd8d49a..1cd39cf3 100644 --- a/evbuffer.c +++ b/evbuffer.c @@ -136,7 +136,8 @@ bufferevent_readcb(int fd, short event, void *arg) } /* Invoke the user callback - must always be called last */ - (*bufev->readcb)(bufev, bufev->cbarg); + if (bufev->readcb != NULL) + (*bufev->readcb)(bufev, bufev->cbarg); return; reschedule: @@ -183,7 +184,8 @@ bufferevent_writecb(int fd, short event, void *arg) * Invoke the user callback if our buffer is drained or below the * low watermark. */ - if (EVBUFFER_LENGTH(bufev->output) <= bufev->wm_write.low) + if (bufev->writecb != NULL && + EVBUFFER_LENGTH(bufev->output) <= bufev->wm_write.low) (*bufev->writecb)(bufev, bufev->cbarg); return; @@ -203,6 +205,9 @@ bufferevent_writecb(int fd, short event, void *arg) * The read callback is invoked whenever we read new data. * The write callback is invoked whenever the output buffer is drained. * The error callback is invoked on a write/read error or on EOF. + * + * Both read and write callbacks maybe NULL. The error callback is not + * allowed to be NULL and have to be provided always. */ struct bufferevent *