summaryrefslogtreecommitdiff
path: root/nuttx/net/recvfrom.c
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2007-11-27 19:19:30 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2007-11-27 19:19:30 +0000
commit2a9b51de584c89c6a2dcb85cafb74424a47545cd (patch)
tree414e720883d4373d9a95fda398bdd4f799cc79b4 /nuttx/net/recvfrom.c
parent20c3067ff452e4e4604e11ec37479c50a4444de8 (diff)
downloadpx4-nuttx-2a9b51de584c89c6a2dcb85cafb74424a47545cd.tar.gz
px4-nuttx-2a9b51de584c89c6a2dcb85cafb74424a47545cd.tar.bz2
px4-nuttx-2a9b51de584c89c6a2dcb85cafb74424a47545cd.zip
Fixed missing logic in readahead buffer logic
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@409 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/net/recvfrom.c')
-rw-r--r--nuttx/net/recvfrom.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/nuttx/net/recvfrom.c b/nuttx/net/recvfrom.c
index cb6cc88be..af28635f7 100644
--- a/nuttx/net/recvfrom.c
+++ b/nuttx/net/recvfrom.c
@@ -369,7 +369,7 @@ static uint8 recvfrom_tcpinterrupt(struct uip_driver_s *dev,
{
/* If new data is available, then complete the read action. */
- if (uip_newdata_event(flags))
+ if ((flags & UIP_NEWDATA) != 0)
{
/* Copy the data from the packet */
@@ -391,6 +391,7 @@ static uint8 recvfrom_tcpinterrupt(struct uip_driver_s *dev,
* Don't allow any further TCP call backs.
*/
+ conn->data_flags = 0;
conn->data_private = NULL;
conn->data_event = NULL;
@@ -418,6 +419,7 @@ static uint8 recvfrom_tcpinterrupt(struct uip_driver_s *dev,
/* Stop further callbacks */
+ conn->data_flags = 0;
conn->data_private = NULL;
conn->data_event = NULL;
@@ -443,6 +445,7 @@ static uint8 recvfrom_tcpinterrupt(struct uip_driver_s *dev,
nvdbg("TCP timeout\n");
+ conn->data_flags = 0;
conn->data_private = NULL;
conn->data_event = NULL;
@@ -543,7 +546,7 @@ static void recvfrom_udpinterrupt(struct uip_driver_s *dev,
{
/* If new data is available, then complete the read action. */
- if (uip_newdata_event(flags))
+ if ((flags & UIP_NEWDATA) != 0)
{
/* Copy the data from the packet */
@@ -860,6 +863,7 @@ static ssize_t tcp_recvfrom(FAR struct socket *psock, FAR void *buf, size_t len,
/* Set up the callback in the connection */
conn = (struct uip_conn *)psock->s_conn;
+ conn->data_flags = UIP_NEWDATA|UIP_CLOSE|UIP_ABORT|UIP_TIMEDOUT;
conn->data_private = (void*)&state;
conn->data_event = recvfrom_tcpinterrupt;
@@ -873,6 +877,7 @@ static ssize_t tcp_recvfrom(FAR struct socket *psock, FAR void *buf, size_t len,
/* Make sure that no further interrupts are processed */
+ conn->data_flags = 0;
conn->data_private = NULL;
conn->data_event = NULL;
}