diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2009-08-15 17:19:08 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2009-08-15 17:19:08 +0000 |
commit | ce2e2a11b0b2b403abdbcdc4bfb34b940560f002 (patch) | |
tree | 58c3a343d971217bc77c1a2611e9222baceeffb5 | |
parent | caa1841f02bb351aa368db8f1877db0812b47920 (diff) | |
download | px4-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
-rw-r--r-- | nuttx/net/recvfrom.c | 12 |
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; } |