summaryrefslogtreecommitdiff
path: root/nuttx/netutils/thttpd/thttpd.c
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2009-08-16 14:29:08 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2009-08-16 14:29:08 +0000
commitcd37198d4a42c141d51c6b0608a22a25d6d4d6f0 (patch)
tree1ddfc4c41f787e1081cf2c60712499d3c50f51ba /nuttx/netutils/thttpd/thttpd.c
parent76cb110245eb7c55eb7c01226f0d2c3a9bed645f (diff)
downloadpx4-nuttx-cd37198d4a42c141d51c6b0608a22a25d6d4d6f0.tar.gz
px4-nuttx-cd37198d4a42c141d51c6b0608a22a25d6d4d6f0.tar.bz2
px4-nuttx-cd37198d4a42c141d51c6b0608a22a25d6d4d6f0.zip
Fix errors in handle_send
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2024 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/netutils/thttpd/thttpd.c')
-rw-r--r--nuttx/netutils/thttpd/thttpd.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/nuttx/netutils/thttpd/thttpd.c b/nuttx/netutils/thttpd/thttpd.c
index bf0f27de4..fe109938e 100644
--- a/nuttx/netutils/thttpd/thttpd.c
+++ b/nuttx/netutils/thttpd/thttpd.c
@@ -474,11 +474,16 @@ static void handle_send(struct connect_s *conn, struct timeval *tv)
ndbg("File read error: %d\n", errno);
goto errout_clear_connection;
}
+ nvdbg("Read %d bytes, buflen %d\n", nread, hc->buflen);
/* Send the buffer */
if (hc->buflen > 0)
{
+ /* httpd_write does not return until all bytes have been sent
+ * (or an error occurs).
+ */
+
nwritten = httpd_write(hc->conn_fd, hc->buffer, hc->buflen);
if (nwritten < 0)
{
@@ -495,21 +500,27 @@ static void handle_send(struct connect_s *conn, struct timeval *tv)
/* And update how much of the file we wrote */
- conn->offset += nread;
- conn->hc->bytes_sent += nread;
+ conn->offset += nwritten;
+ conn->hc->bytes_sent += nwritten;
+ nvdbg("Wrote %d bytes\n", nwritten);
}
/* Are we done? */
+ nvdbg("offset: %d end_offset: %d bytes_sent: %d\n",
+ conn->offset, conn->end_offset, conn->hc->bytes_sent);
+
if (conn->offset >= conn->end_offset)
{
/* This connection is finished! */
+ nvdbg("Finish connection\n");
finish_connection(conn, tv);
- return;
}
+ return;
errout_clear_connection:
+ ndbg("Clear connection\n");
clear_connection(conn, tv);
return;
}