if (events & BEV_EVENT_ERROR) {
my_perror("Error from bufferevent");
exit(1);
- } else if (events & (BEV_EVENT_EOF | BEV_EVENT_ERROR)) {
+ } else if (events & BEV_EVENT_EOF) {
bufferevent_free(bev);
+ if (num_requests == MAX_REQUESTS) {
+ event_base_loopbreak(bufferevent_get_base(bev));
+ }
}
}
{
struct event_base *base = evconnlistener_get_base(listener);
struct bufferevent *bev = bufferevent_socket_new(base, sock,
- BEV_OPT_CLOSE_ON_FREE);
-
+ BEV_OPT_CLOSE_ON_FREE);
bufferevent_setcb(bev, server_read_cb, NULL, server_event_cb, NULL);
bufferevent_enable(bev, EV_READ|EV_WRITE);
}
start_client(base);
event_base_dispatch(base);
+
+ evconnlistener_free(listener);
+ event_base_free(base);
}
/*
bufferevent_free(bev);
num_requests++;
- if (num_requests == MAX_REQUESTS) {
- event_base_loopbreak(base);
- } else {
+ if (++num_requests < MAX_REQUESTS) {
start_client(base);
}
}