summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2007-11-20 21:55:06 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2007-11-20 21:55:06 +0000
commitab97d30ecb919fdc582b287f6ed195f56f8b940a (patch)
tree15db36e30fe30075661d8ba3b420f56af529a68d
parent78dd0de872d9bef518f3ef395b4913197e1b2077 (diff)
downloadnuttx-ab97d30ecb919fdc582b287f6ed195f56f8b940a.tar.gz
nuttx-ab97d30ecb919fdc582b287f6ed195f56f8b940a.tar.bz2
nuttx-ab97d30ecb919fdc582b287f6ed195f56f8b940a.zip
Fix TCP list managment bug
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@392 42af7a65-404d-4744-a932-0658087f49c3
-rw-r--r--nuttx/ChangeLog1
-rw-r--r--nuttx/Documentation/NuttX.html3
-rw-r--r--nuttx/net/uip/uip-tcpconn.c2
-rw-r--r--nuttx/netutils/webserver/httpd.c4
-rw-r--r--nuttx/netutils/webserver/httpd.h15
5 files changed, 20 insertions, 5 deletions
diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog
index e0316a37a..6543fbad9 100644
--- a/nuttx/ChangeLog
+++ b/nuttx/ChangeLog
@@ -232,4 +232,5 @@
* Add strcat() and strncat()
* Integrated uIP micro webserver
+ * Corrected a serious bug in TCP queue management
diff --git a/nuttx/Documentation/NuttX.html b/nuttx/Documentation/NuttX.html
index d277aaa2b..2bee653cd 100644
--- a/nuttx/Documentation/NuttX.html
+++ b/nuttx/Documentation/NuttX.html
@@ -8,7 +8,7 @@
<tr align="center" bgcolor="#e4e4e4">
<td>
<h1><big><font color="#3c34ec"><i>NuttX RTOS</i></font></big></h1>
- <p>Last Updated: November 19, 2007</p>
+ <p>Last Updated: November 20, 2007</p>
</td>
</tr>
</table>
@@ -693,6 +693,7 @@ Other memory:
* Add strcat() and strncat()
* Integrated uIP micro webserver
+ * Corrected a serious bug in TCP queue management
</pre></ul>
<table width ="100%">
diff --git a/nuttx/net/uip/uip-tcpconn.c b/nuttx/net/uip/uip-tcpconn.c
index 952db8774..96849d926 100644
--- a/nuttx/net/uip/uip-tcpconn.c
+++ b/nuttx/net/uip/uip-tcpconn.c
@@ -304,7 +304,7 @@ void uip_tcpfree(struct uip_conn *conn)
{
/* Remove the connection from the active list */
- dq_rem(&conn->node, &g_free_tcp_connections);
+ dq_rem(&conn->node, &g_active_tcp_connections);
}
/* Release any read-ahead buffers attached to the connection */
diff --git a/nuttx/netutils/webserver/httpd.c b/nuttx/netutils/webserver/httpd.c
index 4564a7652..1f360c1ab 100644
--- a/nuttx/netutils/webserver/httpd.c
+++ b/nuttx/netutils/webserver/httpd.c
@@ -469,7 +469,7 @@ static void *httpd_handler(void *arg)
if (pstate)
{
/* Loop processing each HTTP command */
- do
+// do
{
/* Re-initialize the thread state structure */
@@ -480,7 +480,7 @@ static void *httpd_handler(void *arg)
ret = httpd_cmd(pstate);
}
- while (ret == OK);
+// while (ret == OK);
/* End of command processing -- Clean up and exit */
diff --git a/nuttx/netutils/webserver/httpd.h b/nuttx/netutils/webserver/httpd.h
index 031d90187..7e70ccd41 100644
--- a/nuttx/netutils/webserver/httpd.h
+++ b/nuttx/netutils/webserver/httpd.h
@@ -54,9 +54,22 @@
****************************************************************************/
#define HTTPD_FS_STATISTICS 1
-#define HTTPD_IOBUFFER_SIZE UIP_TCP_MSS
+
+/* For efficiency reasons, the size of the IO buffer should be a multiple
+ * of the TCP MSS value. Also, the current design requires that the IO
+ * buffer be sufficiently large to contain the entire GET request.
+ */
+
+#define HTTPD_IOBUFFER_SIZE (3*UIP_TCP_MSS)
+
+/* this is the maximum size of a file path */
+
#define HTTPD_MAX_FILENAME 20
+/* As threads are created to handle each request, a stack must be allocated
+ * for the thread. Use a default if the user provided no stacksize.
+ */
+
#ifndef CONFIG_EXAMPLES_UIP_HTTPDSTACKSIZE
# define CONFIG_EXAMPLES_UIP_HTTPDSTACKSIZE 4096
#endif