From 295bf51f3f9716d696477d7b674e58fc4cefe188 Mon Sep 17 00:00:00 2001 From: patacongo Date: Tue, 20 Nov 2007 21:55:06 +0000 Subject: [PATCH] Fix TCP list managment bug git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@392 42af7a65-404d-4744-a932-0658087f49c3 --- ChangeLog | 1 + Documentation/NuttX.html | 3 ++- net/uip/uip-tcpconn.c | 2 +- netutils/webserver/httpd.c | 4 ++-- netutils/webserver/httpd.h | 15 ++++++++++++++- 5 files changed, 20 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index e0316a37a9..6543fbad91 100644 --- a/ChangeLog +++ b/ChangeLog @@ -232,4 +232,5 @@ * Add strcat() and strncat() * Integrated uIP micro webserver + * Corrected a serious bug in TCP queue management diff --git a/Documentation/NuttX.html b/Documentation/NuttX.html index d277aaa2b9..2bee653cd0 100644 --- a/Documentation/NuttX.html +++ b/Documentation/NuttX.html @@ -8,7 +8,7 @@

NuttX RTOS

-

Last Updated: November 19, 2007

+

Last Updated: November 20, 2007

@@ -693,6 +693,7 @@ Other memory: * Add strcat() and strncat() * Integrated uIP micro webserver + * Corrected a serious bug in TCP queue management diff --git a/net/uip/uip-tcpconn.c b/net/uip/uip-tcpconn.c index 952db87742..96849d9262 100644 --- a/net/uip/uip-tcpconn.c +++ b/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/netutils/webserver/httpd.c b/netutils/webserver/httpd.c index 4564a76521..1f360c1abc 100644 --- a/netutils/webserver/httpd.c +++ b/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/netutils/webserver/httpd.h b/netutils/webserver/httpd.h index 031d90187c..7e70ccd41a 100644 --- a/netutils/webserver/httpd.h +++ b/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