summaryrefslogtreecommitdiff
path: root/nuttx/net
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2009-08-15 17:19:08 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2009-08-15 17:19:08 +0000
commitce2e2a11b0b2b403abdbcdc4bfb34b940560f002 (patch)
tree58c3a343d971217bc77c1a2611e9222baceeffb5 /nuttx/net
parentcaa1841f02bb351aa368db8f1877db0812b47920 (diff)
downloadpx4-nuttx-ce2e2a11b0b2b403abdbcdc4bfb34b940560f002.tar.gz
px4-nuttx-ce2e2a11b0b2b403abdbcdc4bfb34b940560f002.tar.bz2
px4-nuttx-ce2e2a11b0b2b403abdbcdc4bfb34b940560f002.zip
Fix errors in return value from non-blocking read
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2018 42af7a65-404d-4744-a932-0658087f49c3
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;
}