I'm currently playing with libevent and there is something that I
don't understand. I've made a small echo server using bufferevent_read
and bufferevent_write. Here's the read_handler :
97 client_read(struct bufferevent *bufev, void *arg)
99 char buf[BUFLEN];
100 int n, p;
101 n = bufferevent_read(bufev, buf, BUFLEN);
102 p = bufferevent_write(bufev, buf, n);
104 logmsg(LOG_DEBUG, "client read %d bytes (%d write)", n, p);
While this code works (echo some text), bufferevent_write() always return 0 !
This is confusing, because man event(3) says :
The bufferevent_write() function can be used to write data to the file
descriptor. The data is appended to the output buffer and written to the
descriptor automatically as it becomes available for writing. The
bufferevent_read() function is used to read data from the input buffer.
-> Both functions return the amount of data written or read.