]> rtime.felk.cvut.cz Git - frescor/forb.git/blobdiff - src/proto_inet.c
forb: Fix incorrect parameter of forb_peer_put()
[frescor/forb.git] / src / proto_inet.c
index f53043ba81d487a6a4a5738376d92a9e9ab46bc2..e1771d11610c1b290acda68888a1842a1ce080ea 100644 (file)
@@ -366,7 +366,8 @@ inet_recv(forb_port_t *port, void *buf, size_t len)
                        if (ipeer->socket == iport->last_recv_fd) {
                                inet_port_new_peer_delete(iport, peer);
 
-                               if (port->new_peer) forb_peer_put(peer);
+                               if (port->new_peer)
+                                       forb_peer_put(port->new_peer);
 
                                /* Let the upper layer assign forb ID
                                 * to this peer according to the request*/
@@ -417,9 +418,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;
 }