From: Michal Sojka Date: Sat, 19 Feb 2011 14:59:15 +0000 (+0100) Subject: forb: Free "new_peers" on destroy X-Git-Url: http://rtime.felk.cvut.cz/gitweb/frescor/frsh-forb.git/commitdiff_plain/6b310e9cda2fbaa4b5a1ed4545acf50d338b7884?hp=bc2fe8748a2c3ddfbfc7340c6caeabc2c9c346b8 forb: Free "new_peers" on destroy The so called new_peers were not freed and their sockets were not closed. We are fixing it now. --- diff --git a/src/forb/src/port.c b/src/forb/src/port.c index 0c54c400..637c22e3 100644 --- a/src/forb/src/port.c +++ b/src/forb/src/port.c @@ -177,6 +177,8 @@ void forb_destroy_port(forb_port_t *port) forb_peer_disconnected(peer); forb_peer_put(peer); } + if (port->new_peer) + forb_peer_put(port->new_peer); if (port->desc.proto->port_destroy) { port->desc.proto->port_destroy(port); diff --git a/src/forb/src/proto_inet.c b/src/forb/src/proto_inet.c index f53043ba..e82e1582 100644 --- a/src/forb/src/proto_inet.c +++ b/src/forb/src/proto_inet.c @@ -417,9 +417,13 @@ static int inet_port_destroy(forb_port_t * port) { struct inet_port *pd = port->desc.proto_priv; + forb_peer_t *peer; close(pd->epoll_fd); close(pd->udp_socket); close(pd->listen_socket); + ul_list_for_each_cut(inet_port_new_peer, pd, peer) { + forb_peer_put(peer); + } forb_free(pd); return 0; }