From 42b850f2b94941066c36d85b4878d6a348260b4d Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Thu, 18 Feb 2010 05:33:35 +0000 Subject: [PATCH] Use a temporary variable to hold the current URI length in the Webserver, rather than calling strlen() multiple times on an unchanged buffer. Clean up uip-split.c. --- Projects/Webserver/Lib/HTTPServerApp.c | 19 +++++++++++-------- Projects/Webserver/Lib/uIPManagement.c | 2 +- Projects/Webserver/Lib/uip/uip-split.c | 4 ---- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/Projects/Webserver/Lib/HTTPServerApp.c b/Projects/Webserver/Lib/HTTPServerApp.c index 4f8490e96c..b6277d3dbe 100644 --- a/Projects/Webserver/Lib/HTTPServerApp.c +++ b/Projects/Webserver/Lib/HTTPServerApp.c @@ -168,7 +168,7 @@ static void HTTPServerApp_OpenRequestedFile(void) if (!(uip_newdata())) return; - char* RequestToken = strtok(AppData, " "); + char* RequestToken = strtok(AppData, " "); char* RequestedFileName = strtok(NULL, " "); /* Must be a GET request, abort otherwise */ @@ -182,16 +182,19 @@ static void HTTPServerApp_OpenRequestedFile(void) strncpy(AppState->HTTPServer.FileName, &RequestedFileName[1], (sizeof(AppState->HTTPServer.FileName) - 1)); /* Ensure filename is null-terminated */ - AppState->HTTPServer.FileName[(sizeof(AppState->HTTPServer.FileName) - 1)] = 0x00; + AppState->HTTPServer.FileName[sizeof(AppState->HTTPServer.FileName) - 1] = 0x00; + + /* Determine the length of the URI so that it can be checked to see if it is a directory */ + uint8_t FileNameLen = strlen(AppState->HTTPServer.FileName); /* If the URI is a directory, append the default filename */ - if (AppState->HTTPServer.FileName[strlen(AppState->HTTPServer.FileName) - 1] == '/') + if (AppState->HTTPServer.FileName[FileNameLen - 1] == '/') { - strncpy_P(&AppState->HTTPServer.FileName[strlen(AppState->HTTPServer.FileName)], DefaultDirFileName, - (sizeof(AppState->HTTPServer.FileName) - (strlen(AppState->HTTPServer.FileName) + 1))); + strncpy_P(&AppState->HTTPServer.FileName[FileNameLen], DefaultDirFileName, + (sizeof(AppState->HTTPServer.FileName) - FileNameLen)); /* Ensure altered filename is still null-terminated */ - AppState->HTTPServer.FileName[(sizeof(AppState->HTTPServer.FileName) - 1)] = 0x00; + AppState->HTTPServer.FileName[sizeof(AppState->HTTPServer.FileName) - 1] = 0x00; } /* Try to open the file from the Dataflash disk */ @@ -233,7 +236,7 @@ static void HTTPServerApp_SendResponseHeader(void) if (Extension != NULL) { /* Look through the MIME type list, copy over the required MIME type if found */ - for (int i = 0; i < (sizeof(MIMETypes) / sizeof(MIMETypes[0])); i++) + for (uint8_t i = 0; i < (sizeof(MIMETypes) / sizeof(MIMETypes[0])); i++) { if (strcmp(&Extension[1], MIMETypes[i].Extension) == 0) { @@ -251,7 +254,7 @@ static void HTTPServerApp_SendResponseHeader(void) strcpy_P(&AppData[strlen(AppData)], DefaultMIMEType); } - /* Add the end-of line terminator and end-of-headers terminator after the MIME type */ + /* Add the end-of-line terminator and end-of-headers terminator after the MIME type */ strcpy(&AppData[strlen(AppData)], "\r\n\r\n"); /* Send the MIME header to the receiving client */ diff --git a/Projects/Webserver/Lib/uIPManagement.c b/Projects/Webserver/Lib/uIPManagement.c index 13829c56bf..bd7804e6e7 100644 --- a/Projects/Webserver/Lib/uIPManagement.c +++ b/Projects/Webserver/Lib/uIPManagement.c @@ -52,7 +52,7 @@ void uIPManagement_Init(void) { /* uIP Timing Initialization */ clock_init(); - timer_set(&ConnectionTimer, CLOCK_SECOND / 5); + timer_set(&ConnectionTimer, CLOCK_SECOND / 2); timer_set(&ARPTimer, CLOCK_SECOND * 10); /* uIP Stack Initialization */ diff --git a/Projects/Webserver/Lib/uip/uip-split.c b/Projects/Webserver/Lib/uip/uip-split.c index 9ad6b484c2..5924fabe5f 100644 --- a/Projects/Webserver/Lib/uip/uip-split.c +++ b/Projects/Webserver/Lib/uip/uip-split.c @@ -80,7 +80,6 @@ uip_split_output(void) #endif /* UIP_CONF_IPV6 */ /* Transmit the first packet. */ - /* uip_fw_output();*/ #if UIP_CONF_IPV6 tcpip_ipv6_output(); #else @@ -103,7 +102,6 @@ uip_split_output(void) BUF->len[1] = (uip_len - UIP_LLH_LEN) & 0xff; #endif /* UIP_CONF_IPV6 */ - /* uip_appdata += len1;*/ memcpy(uip_appdata, (u8_t *)uip_appdata + len1, len2); uip_add32(BUF->seqno, len1); @@ -123,12 +121,10 @@ uip_split_output(void) #endif /* UIP_CONF_IPV6 */ /* Transmit the second packet. */ - /* uip_fw_output();*/ #if UIP_CONF_IPV6 tcpip_ipv6_output(); #else RNDIS_Host_SendPacket(&Ethernet_RNDIS_Interface, uip_buf, uip_len); - //tcpip_output(); #endif /* UIP_CONF_IPV6 */ return; }