From 05e1606d0395e27aae5017c045d46c601b6a3c20 Mon Sep 17 00:00:00 2001 From: vvaltman Date: Sun, 21 Sep 2014 13:41:10 +0400 Subject: [PATCH] Fixes for listening socket --- loop.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/loop.c b/loop.c index e1a4417..5bc51d9 100644 --- a/loop.c +++ b/loop.c @@ -633,11 +633,12 @@ static void event_incoming (struct bufferevent *bev, short what, void *_arg) { close (ev->fd); bufferevent_free (bev); ev->bev = 0; - ev->refcnt --; + if (!--ev->refcnt) { free (ev); } } } static void accept_incoming (evutil_socket_t efd, short what, void *arg) { + vlogprintf (E_WARNING, "Accepting incoming connection\n"); unsigned clilen; struct sockaddr_in cli_addr; int fd = accept (sfd, (struct sockaddr *)&cli_addr, &clilen); @@ -682,7 +683,7 @@ int loop (void) { #endif if (sfd >= 0) { - struct event *ev = event_new (tgl_state.ev_base, sfd, EV_READ, accept_incoming, 0); + struct event *ev = event_new (tgl_state.ev_base, sfd, EV_READ | EV_PERSIST, accept_incoming, 0); event_add (ev, 0); } update_prompt ();