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*/
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)
{
(struct sockaddr*)&addr, sizeof(addr));
return ret;
}
+#endif
static void
inet_peer_destroy(forb_peer_t *peer)
.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,