]> granicus.if.org Git - libevent/commitdiff
allow both read and write callbacks for bufferevents to be NULL
authorNiels Provos <provos@gmail.com>
Sat, 26 Aug 2006 04:32:31 +0000 (04:32 +0000)
committerNiels Provos <provos@gmail.com>
Sat, 26 Aug 2006 04:32:31 +0000 (04:32 +0000)
svn:r227

evbuffer.c

index 7bd8d49a3da661d3be3a02dda3d6461f5bdc3e00..1cd39cf3cbd9a6130313714c5975451acc9db3f3 100644 (file)
@@ -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 *