* \param[in] attr Endpoint attributes
* \param[out] epp Pointer to the descriptor of newly created endpoint
*
- * \return Zero on success, -1 on error and sets errno appropriately.
+ * \return Non-negative number on success, -1 on error and sets errno appropriately.
*
*/
int fwp_send_endpoint_create(unsigned int node,
goto err;
}
+#if 0
+ /* TODO: Allow using connect if it is specified in attr */
if (connect(fwp_epoint->sockd,
(struct sockaddr*) &fwp_epoint->peer.addr,
fwp_epoint->peer.addrlen)) {
FWP_DEBUG("FWp connect error\n");
goto err;
}
-
+#endif
FWP_DEBUG("FWP Send endpoint created.\n");
#ifdef FWP_WITHOUT_CONTNEGT
* \param[in] attr Endpoint attributes
* \param[out] epointdp Pointer to the descriptor of newly created endpoint
*
- * \return Zero on success, -1 on error and errno is set.
+ * \return Non-negative number on success, -1 on error and errno is set.
*/
int fwp_receive_endpoint_create(unsigned int port,
fwp_endpoint_attr_t *attr,
fwp_epoint->port = ntohs(addr->sin_port);
FWP_DEBUG("Recv port= %d\n",ntohs(addr->sin_port));
*epp = fwp_epoint;
- return 0;
+ return fwp_epoint->sockd;
err:
fwp_endpoint_destroy(fwp_epoint);
- return errno;
+ return -1;
}
/**
FWP_DEBUG("Prepare to receive tcp data\n");
peer->addrlen = sizeof(struct sockaddr_in);
- len = _fwp_recvfrom(ep->c_sockd[i], buffer,
- buffer_size,0, peer);
+ len = recvfrom(ep->c_sockd[i], buffer, buffer_size, 0,
+ (struct sockaddr*)&peer->addr, &peer->addrlen);
if (len < 0) /* Error */
return len;
}*/
if (ep->attr.reliability == FWP_EPOINT_BESTEFFORT) {
- len = _fwp_recvfrom(ep->sockd, buffer,
- buffer_size, 0, peer);
-
+ len = recvfrom(ep->sockd, buffer, buffer_size, 0,
+ (struct sockaddr*)&peer->addr, &peer->addrlen);
*from = addr->sin_addr.s_addr;
return len;
}
iov.iov_base = (void*)data;
iov.iov_len = size;
+ msg.msg_name = &ep->peer.addr;
+ msg.msg_namelen = ep->peer.addrlen;
msg.msg_iov = &iov;
msg.msg_iovlen = 1;
if (!ep->vres)
return FRSH_ERR_NOT_BOUND;
- if (fwp_vres_consume_budget(ep->vres, size, false) == 0)
+ ret = fwp_vres_consume_budget(ep->vres, size, false);
+ if (ret == 0)
ret = fwp_endpoint_do_send(ep, msg, size);
- else
+ else if (ret == 1)
ret = fwp_vres_enqueue(ep->vres, ep, msg, size);
return ret;
}