]> rtime.felk.cvut.cz Git - frescor/frsh-forb.git/blobdiff - src/forb/src/proto_inet.c
forb: Fix incorrect parameter of forb_peer_put()
[frescor/frsh-forb.git] / src / forb / src / proto_inet.c
index 39ff70e4437c1b6b53ef7d5f970d682cae554105..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,13 +418,18 @@ 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;
 }
 
+#ifndef CONFIG_FORB_PROTO_INET_DEFAULT
 static ssize_t
 inet_broadcast(forb_port_t *port, const void *buf, size_t len)
 {
@@ -439,6 +445,7 @@ inet_broadcast(forb_port_t *port, const void *buf, size_t len)
                     (struct sockaddr*)&addr, sizeof(addr));
        return ret;
 }
+#endif
 
 static void
 inet_peer_destroy(forb_peer_t *peer)
@@ -491,7 +498,9 @@ static const forb_proto_t proto_inet = {
        .peer_destroy = inet_peer_destroy,
        .send = inet_send,
        .recv = inet_recv,
+#ifndef CONFIG_FORB_PROTO_INET_DEFAULT
        .broadcast = inet_broadcast,
+#endif
        .serialize_addr = inet_serialize_addr,
        .deserialize_addr = inet_deserialize_addr,
        .addr2str = inet_addr2str,