Ejemplo n.º 1
0
static ssize_t cftp_send_data_retry(struct cftp_descriptor *desc, const void *buff, size_t size, int retry)
{
	ssize_t sendlen;
	int ret;

	while (retry--)
	{
		sendlen = cftp_send_data(desc, buff, size);
		if (sendlen < 0)
		{
			return sendlen;
		}

		ret = cftp_can_receive(desc);
		if (ret < 0)
		{
			return ret;
		}
		else if (ret > 0)
		{
			return sendlen;
		}

		println("timeout retry = %d", retry);
	}

	return -ETIMEDOUT;
}
Ejemplo n.º 2
0
static ssize_t cftp_receive_data_timeout(struct cftp_descriptor *desc, void *buff, size_t size)
{
	int ret;

	if (desc->receive_timeout) {
		return desc->receive_timeout(desc->data, buff, size, desc->timeout_value);
	}

	ret = cftp_can_receive(desc);
	if (ret <= 0) {
		return -ETIMEDOUT;
	}

	return cftp_receive_data(desc, buff, size);
}