projects
/
pub
/
USBasp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
AVRISP programmer project now has a more robust timeout system, allowing for a doubli...
[pub/USBasp.git]
/
Projects
/
Webserver
/
Lib
/
HTTPServerApp.c
diff --git
a/Projects/Webserver/Lib/HTTPServerApp.c
b/Projects/Webserver/Lib/HTTPServerApp.c
index
4f8490e
..
4e00952
100644
(file)
--- a/
Projects/Webserver/Lib/HTTPServerApp.c
+++ b/
Projects/Webserver/Lib/HTTPServerApp.c
@@
-100,13
+100,9
@@
void HTTPServerApp_Callback(void)
\r
if (uip_aborted() || uip_timedout() || uip_closed())
\r
{
\r
\r
if (uip_aborted() || uip_timedout() || uip_closed())
\r
{
\r
- /* Connection is being terminated for some reason - close file handle */
\r
- f_close(&AppState->HTTPServer.FileHandle);
\r
- AppState->HTTPServer.FileOpen = false;
\r
-
\r
/* Lock to the closed state so that no further processing will occur on the connection */
\r
/* Lock to the closed state so that no further processing will occur on the connection */
\r
- AppState->HTTPServer.CurrentState = WEBSERVER_STATE_Clos
ed
;
\r
- AppState->HTTPServer.NextState = WEBSERVER_STATE_Clos
ed
;
\r
+ AppState->HTTPServer.CurrentState = WEBSERVER_STATE_Clos
ing
;
\r
+ AppState->HTTPServer.NextState = WEBSERVER_STATE_Clos
ing
;
\r
}
\r
\r
if (uip_connected())
\r
}
\r
\r
if (uip_connected())
\r
@@
-148,9
+144,15
@@
void HTTPServerApp_Callback(void)
HTTPServerApp_SendData();
\r
break;
\r
case WEBSERVER_STATE_Closing:
\r
HTTPServerApp_SendData();
\r
break;
\r
case WEBSERVER_STATE_Closing:
\r
+ /* Connection is being terminated for some reason - close file handle */
\r
+ f_close(&AppState->HTTPServer.FileHandle);
\r
+ AppState->HTTPServer.FileOpen = false;
\r
+
\r
+ /* If connection is not already closed, close it */
\r
uip_close();
\r
\r
uip_close();
\r
\r
- AppState->HTTPServer.NextState = WEBSERVER_STATE_Closed;
\r
+ AppState->HTTPServer.CurrentState = WEBSERVER_STATE_Closed;
\r
+ AppState->HTTPServer.NextState = WEBSERVER_STATE_Closed;
\r
break;
\r
}
\r
}
\r
break;
\r
}
\r
}
\r
@@
-168,7
+170,7
@@
static void HTTPServerApp_OpenRequestedFile(void)
if (!(uip_newdata()))
\r
return;
\r
\r
if (!(uip_newdata()))
\r
return;
\r
\r
- char* RequestToken = strtok(AppData, " ");
\r
+ char* RequestToken
= strtok(AppData, " ");
\r
char* RequestedFileName = strtok(NULL, " ");
\r
\r
/* Must be a GET request, abort otherwise */
\r
char* RequestedFileName = strtok(NULL, " ");
\r
\r
/* Must be a GET request, abort otherwise */
\r
@@
-182,16
+184,19
@@
static void HTTPServerApp_OpenRequestedFile(void)
strncpy(AppState->HTTPServer.FileName, &RequestedFileName[1], (sizeof(AppState->HTTPServer.FileName) - 1));
\r
\r
/* Ensure filename is null-terminated */
\r
strncpy(AppState->HTTPServer.FileName, &RequestedFileName[1], (sizeof(AppState->HTTPServer.FileName) - 1));
\r
\r
/* Ensure filename is null-terminated */
\r
- AppState->HTTPServer.FileName[(sizeof(AppState->HTTPServer.FileName) - 1)] = 0x00;
\r
+ AppState->HTTPServer.FileName[sizeof(AppState->HTTPServer.FileName) - 1] = 0x00;
\r
+
\r
+ /* Determine the length of the URI so that it can be checked to see if it is a directory */
\r
+ uint8_t FileNameLen = strlen(AppState->HTTPServer.FileName);
\r
\r
/* If the URI is a directory, append the default filename */
\r
\r
/* If the URI is a directory, append the default filename */
\r
- if (AppState->HTTPServer.FileName[
strlen(AppState->HTTPServer.FileName)
- 1] == '/')
\r
+ if (AppState->HTTPServer.FileName[
FileNameLen
- 1] == '/')
\r
{
\r
{
\r
- strncpy_P(&AppState->HTTPServer.FileName[
strlen(AppState->HTTPServer.FileName)
], DefaultDirFileName,
\r
- (sizeof(AppState->HTTPServer.FileName) -
(strlen(AppState->HTTPServer.FileName) + 1)
));
\r
+ strncpy_P(&AppState->HTTPServer.FileName[
FileNameLen
], DefaultDirFileName,
\r
+ (sizeof(AppState->HTTPServer.FileName) -
FileNameLen
));
\r
\r
/* Ensure altered filename is still null-terminated */
\r
\r
/* Ensure altered filename is still null-terminated */
\r
- AppState->HTTPServer.FileName[
(sizeof(AppState->HTTPServer.FileName) - 1)
] = 0x00;
\r
+ AppState->HTTPServer.FileName[
sizeof(AppState->HTTPServer.FileName) - 1
] = 0x00;
\r
}
\r
\r
/* Try to open the file from the Dataflash disk */
\r
}
\r
\r
/* Try to open the file from the Dataflash disk */
\r
@@
-233,7
+238,7
@@
static void HTTPServerApp_SendResponseHeader(void)
if (Extension != NULL)
\r
{
\r
/* Look through the MIME type list, copy over the required MIME type if found */
\r
if (Extension != NULL)
\r
{
\r
/* Look through the MIME type list, copy over the required MIME type if found */
\r
- for (
in
t i = 0; i < (sizeof(MIMETypes) / sizeof(MIMETypes[0])); i++)
\r
+ for (
uint8_
t i = 0; i < (sizeof(MIMETypes) / sizeof(MIMETypes[0])); i++)
\r
{
\r
if (strcmp(&Extension[1], MIMETypes[i].Extension) == 0)
\r
{
\r
{
\r
if (strcmp(&Extension[1], MIMETypes[i].Extension) == 0)
\r
{
\r
@@
-251,7
+256,7
@@
static void HTTPServerApp_SendResponseHeader(void)
strcpy_P(&AppData[strlen(AppData)], DefaultMIMEType);
\r
}
\r
\r
strcpy_P(&AppData[strlen(AppData)], DefaultMIMEType);
\r
}
\r
\r
- /* Add the end-of
line terminator and end-of-headers terminator after the MIME type */
\r
+ /* Add the end-of
-
line terminator and end-of-headers terminator after the MIME type */
\r
strcpy(&AppData[strlen(AppData)], "\r\n\r\n");
\r
\r
/* Send the MIME header to the receiving client */
\r
strcpy(&AppData[strlen(AppData)], "\r\n\r\n");
\r
\r
/* Send the MIME header to the receiving client */
\r