else
fwp_epoint->attr = fwp_epoint_attr_default;
- addr = (struct sockaddr_in *)&(fwp_epoint->peer.addr);
+ addr = (struct sockaddr_in *) &(fwp_epoint->peer.addr);
addr->sin_family = AF_INET;
/* TODO: set listen interface, maybe through config struct*/
addr->sin_addr.s_addr = INADDR_ANY;
goto err;
}
- listen(fwp_epoint->sockd, fwp_epoint->attr.max_connections);
+ if (listen(fwp_epoint->sockd, fwp_epoint->attr.max_connections)){
+ perror("Error on listen call\n");
+ goto err;
+ }
FD_ZERO(&fwp_epoint->fdset);
/*add listen socket */
bzero(fwp_epoint->c_sockd, fwp_epoint->attr.max_connections);
fwp_epoint->nr_connections = 0;
- FWP_DEBUG("Receive endpoint\n");
-
+ FWP_DEBUG("Reliable receive endpoint port=%d created.\n",
+ fwp_epoint->port);
} else {
if ((fwp_epoint->sockd = socket(PF_INET, SOCK_DGRAM,
IPPROTO_UDP)) < 0) {
FWP_ERROR("Bind error: %s", strerror(errno));
goto err;
}
+ FWP_DEBUG("Best-Effort receive endpoint port=%d created.\n",
+ fwp_epoint->port);
}
/*if (setsockopt(epoint->sockd, SOL_SOCKET, SO_RCVBUF,
getsockname(fwp_epoint->sockd, (struct sockaddr*)&fwp_epoint->peer.addr,
&fwp_epoint->peer.addrlen);
- FWP_DEBUG("Receive endpoint port=%d created.\n", fwp_epoint->port);
*epoint = fwp_epoint;
return 0;
err:
fwp_endpoint_destroy(fwp_epoint);
- return -1;
+ return errno;
}
/**
return 0;
}
-int fwp_receive_endpoint_accept(fwp_endpoint_d_t epointd)
+static int fwp_receive_endpoint_accept(fwp_endpoint_t *fwp_epoint)
{
int csockd;
- fwp_endpoint_t *fwp_epoint = epointd;
+// fwp_endpoint_t *fwp_epoint = epointd;
fwp_sockaddr_t peer;
int i;
if (fwp_epoint->nr_connections == fwp_epoint->attr.max_connections)
return -1;
+ peer.addrlen = sizeof(struct sockaddr_in);
csockd = accept(fwp_epoint->sockd, (struct sockaddr*)peer.addr,
&peer.addrlen);
-
+
+ if (csockd < 0) {
+ perror("Error on accept\n");
+ return errno;
+ }
+
FWP_DEBUG("New connection accepted\n");
/* find free place */
i = 0;
FWP_DEBUG("Index = %d\n", i);
fwp_epoint->nr_connections++;
+ FWP_DEBUG("before\n");
FD_SET(csockd, &fwp_epoint->fdset);
+ FWP_DEBUG("SET fdset\n");
return 0;
}
continue;
}
+ peer->addrlen = sizeof(struct sockaddr_in);
len = _fwp_recvfrom(fwp_epoint->c_sockd[i], buffer,
buffer_size,0, peer);
}
if (FD_ISSET(fwp_epoint->sockd, &fdset)) { /* is it listen socket? */
- fwp_receive_endpoint_accept(endpoint);
+ fwp_receive_endpoint_accept(fwp_epoint);
+ FWP_DEBUG("After accepted\n");
continue;
}