summaryrefslogtreecommitdiff
path: root/nuttx/net/send.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/send.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/send.c')
-rw-r--r--nuttx/net/send.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/nuttx/net/send.c b/nuttx/net/send.c
index c0bb11fe0..69cf883ac 100644
--- a/nuttx/net/send.c
+++ b/nuttx/net/send.c
@@ -110,7 +110,7 @@ static uint8 send_interrupt(struct uip_driver_s *dev, struct uip_conn *conn, uin
* then send it now.
*/
- if (pstate->snd_state != STATE_DATA_SENT || uip_rexmit_event(flags))
+ if (pstate->snd_state != STATE_DATA_SENT || (flags & UIP_REXMIT) != 0)
{
if (pstate->snd_buflen > uip_mss(conn))
{
@@ -126,7 +126,7 @@ static uint8 send_interrupt(struct uip_driver_s *dev, struct uip_conn *conn, uin
/* Check if all data has been sent and acknowledged */
- else if (pstate->snd_state == STATE_DATA_SENT && uip_ack_event(flags))
+ else if (pstate->snd_state == STATE_DATA_SENT && (flags & UIP_ACKDATA) != 0)
{
/* Yes.. the data has been sent AND acknowledged */
@@ -152,6 +152,7 @@ static uint8 send_interrupt(struct uip_driver_s *dev, struct uip_conn *conn, uin
/* Don't allow any further call backs. */
+ conn->data_flags = 0;
conn->data_private = NULL;
conn->data_event = NULL;
@@ -169,6 +170,7 @@ static uint8 send_interrupt(struct uip_driver_s *dev, struct uip_conn *conn, uin
{
/* Stop further callbacks */
+ conn->data_flags = 0;
conn->data_private = NULL;
conn->data_event = NULL;
@@ -301,6 +303,7 @@ ssize_t send(int sockfd, const void *buf, size_t len, int flags)
/* Set up the callback in the connection */
conn = (struct uip_conn *)psock->s_conn;
+ conn->data_flags = UIP_REXMIT|UIP_ACKDATA|UIP_CLOSE|UIP_ABORT|UIP_TIMEDOUT;
conn->data_private = (void*)&state;
conn->data_event = send_interrupt;
@@ -318,6 +321,7 @@ ssize_t send(int sockfd, const void *buf, size_t len, int flags)
/* Make sure that no further interrupts are processed */
+ conn->data_flags = 0;
conn->data_private = NULL;
conn->data_event = NULL;
}