summaryrefslogtreecommitdiff
path: root/nuttx/net
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/net')
-rw-r--r--nuttx/net/recvfrom.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/nuttx/net/recvfrom.c b/nuttx/net/recvfrom.c
index e5fc27ac6..2eaba9f13 100644
--- a/nuttx/net/recvfrom.c
+++ b/nuttx/net/recvfrom.c
@@ -704,7 +704,7 @@ static void recvfrom_init(FAR struct socket *psock, FAR void *buf, size_t len,
#if defined(CONFIG_NET_UDP) || defined(CONFIG_NET_TCP)
static ssize_t recvfrom_result(int result, struct recvfrom_s *pstate)
{
- int save_errno = *get_errno_ptr(); /* In case something we do changes it */
+ int save_errno = errno; /* In case something we do changes it */
/* Release semaphore in the state structure */
@@ -896,7 +896,13 @@ static ssize_t tcp_recvfrom(FAR struct socket *psock, FAR void *buf, size_t len,
{
/* Nothing was received */
- return -EAGAIN;
+ ret = -EAGAIN;
+ }
+ else
+ {
+ /* The return value is the number of bytes read from the read-ahead buffer */
+
+ ret = state.rf_recvlen;
}
}
@@ -1091,7 +1097,7 @@ ssize_t recvfrom(int sockfd, FAR void *buf, size_t len, int flags,
return ret;
errout:
- *get_errno_ptr() = err;
+ errno = err;
return ERROR;
}