On Wed, Jan 30, 2013 at 7:38 PM, John Dunn <john_d...@qscaudio.com> wrote: > I have a socket server which allocates memory for each connection. If there's > an error on the socket it's easy for me to delete any memory associated with > the connection. I also need to shutdown the eventbase from another thread > which needs to close the listener socket, close all currently open > connections and delete all memory associated with each connection. > > If I call event_base_loopbreak and event_base_free to shutdown my event loop > the loop breaks but it doesn't close any outstanding connections or give me a > chance to delete memory associated with each connection. I am setting > BEV_OPT_CLOSE_ON_FREE so I assume that the issue is that the bufferedevents > are not getting freed when the event_base is. Is there any libevent > functionality that would help or do I need to maintain a parallel data > structure of current connections so I can call event_free() on each of them? > event_base_foreach_event seems almost like the correct thing but the > documentation explicitly says to not modify the events - I'm guessing that > includes calling event_free(). >
Right; there is no global list of all allocated bufferevents. If you need a way to walk over all bufferevents, you'll need to implement one yourself. It's generally not hard -- just create a linked list of them in whatever associated data structure you're giving them. -- Nick *********************************************************************** To unsubscribe, send an e-mail to majord...@freehaven.net with unsubscribe libevent-users in the body.