]> rtime.felk.cvut.cz Git - frescor/forb.git/commitdiff
forb: Free "new_peers" on destroy
authorMichal Sojka <sojkam1@fel.cvut.cz>
Sat, 19 Feb 2011 14:59:15 +0000 (15:59 +0100)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Sat, 19 Feb 2011 15:21:32 +0000 (16:21 +0100)
The so called new_peers were not freed and their sockets were not closed.
We are fixing it now.

src/port.c
src/proto_inet.c

index 0c54c40018096202e0fd1a25164ff926589eb1c4..637c22e3892b35081308162949355de57d8de18b 100644 (file)
@@ -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);
index f53043ba81d487a6a4a5738376d92a9e9ab46bc2..e82e1582c4f5c42fc2300b36e968de7e79f86040 100644 (file)
@@ -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;
 }