On Fri, Sep 21, 2012 at 09:25:43PM +0200, Julian Scheel wrote:
> Hi,
> 
> I wonder if there is a way to drain the internal buffer of a bufferevent? 
> Actually I use a bufferevent to write data into a socket. But it can happen 
> that the socket is not accepting data for a while, which obviously lets the 
> bufferevents internal buffer grow. Now I'd like to set a maximum buffer size, 
> so that I can ensure that even when the socket is blocked for a longer period 
> the application won't eat up all available memory.
> I tried to do a evbuffer_drain on the evbuffer returned by 
> bufferevent_get_output(), but this simply seems to have no effect. The buffer 
> size remains unchanged, no matter how many bytes I try to drain out.
> Is there any way to achieve what I want to do with libevent?


When you call evbuffer_drain() it doesn't free() resources, it basically
just resets the pointer back to the start of the buffer.

It sounds like you may want to keep a seperate evbuffer you allocate
yourself, if something actually needs the data you can call
bufferevent_write_buffer(bev, yourevbuffer). Otherwise you can keep
track of how big it is, and if it gets too big for you, call
evbuffer_free() and immediately allocate a new one. 
***********************************************************************
To unsubscribe, send an e-mail to majord...@freehaven.net with
unsubscribe libevent-users    in the body.

Reply via email to