Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of HTTP_SERVER by
Revision 7:184c6f1ace94, committed 2016-11-28
- Comitter:
- aktk
- Date:
- Mon Nov 28 08:27:42 2016 +0000
- Parent:
- 6:4eb469f51570
- Child:
- 8:b013075de2e4
- Commit message:
- fix a bug
Changed in this revision
| HTTP_SERVER.cpp | Show annotated file Show diff for this revision Revisions of this file |
| handlers/Filehandler.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/HTTP_SERVER.cpp Sat Nov 26 19:15:20 2016 +0000
+++ b/HTTP_SERVER.cpp Mon Nov 28 08:27:42 2016 +0000
@@ -137,15 +137,17 @@
if(msger.setHeaderField("Connection", "keep-alive"))printf("(HTTP_SERVER)buffer over flow @ ResponseMessenger");
} else {
if(msger.setStatusLine(404, "NOT FOUND"))printf("(HTTP_SERVER)buffer over flow @ ResponseMessenger");
- if(msger.setHeaderField("Connection", "close"))printf("(HTTP_SERVER)buffer over flow @ ResponseMessenger");
+ if(msger.setHeaderField("Connection", "Close"))printf("(HTTP_SERVER)buffer over flow @ ResponseMessenger");
DEBUG_PRINT_LINE("(HTTP_SERVER) NOT FOUND\r\n");
}
- if( strcmp(fhandl.getSuffix(), "htm" ) ||
- strcmp(fhandl.getSuffix(), "HTM" ) ||
- strcmp(fhandl.getSuffix(), "html") ||
- strcmp(fhandl.getSuffix(), "HTML")) {
+ if( !strcmp(fhandl.getSuffix(), "htm" ) ||
+ !strcmp(fhandl.getSuffix(), "HTM" ) ||
+ !strcmp(fhandl.getSuffix(), "html") ||
+ !strcmp(fhandl.getSuffix(), "HTML")) {
if(msger.setHeaderField("Content-Type", "text/html"))printf("(HTTP_SERVER)buffer over flow @ ResponseMessenger");
- } else if (strcmp(fhandl.getSuffix(), "ico" ) ) {
+ } else if(!strcmp(fhandl.getSuffix(), "js" )){
+ if(msger.setHeaderField("Content-Type", "text/javascript"))printf("(HTTP_SERVER)buffer over flow @ ResponseMessenger");
+ } else if (!strcmp(fhandl.getSuffix(), "ico" ) ) {
if(msger.setHeaderField("Content-Type", "image/png"))printf("(HTTP_SERVER)buffer over flow @ ResponseMessenger");
} else {
msger.setStatusLine(406, "not acceptable");
@@ -154,104 +156,34 @@
// Connection timeout field
if(msger.setHeaderField("Keep-Alive", "timeouit=15"))printf("(HTTP_SERVER)buffer over flow @ ResponseMessenger");
- // Define behaviour of server according to Request Header lines
- // Apply request header field to response header field
- char* field_Connection = NULL;
- char* field_Upgrade = NULL;
- char* field_Sec_WebSocket_Key = NULL;
- char* field_Sec_WebSocket_Version = NULL;
- char* field_Origin = NULL;
- do {
- //Analyze the header feilds
- header_field_name = strtok(NULL, ":");
- header_field_name++;
- header_field_val = strtok(NULL, "\r\n");
- header_field_val++;
-
- if(header_field_name - 1 != NULL) {
- if(!strcmp(header_field_name, "Connection")) {
- field_Connection = header_field_val;
- } else if(!strcmp(header_field_name, "Upgrade")) {
- field_Upgrade = header_field_val;
- } else if(!strcmp(header_field_name, "Sec-WebSocket-Key") ) {
- field_Sec_WebSocket_Key = header_field_val;
- } else if(!strcmp(header_field_name, "Sec-WebSocket-Version") ) {
- field_Sec_WebSocket_Version = header_field_val;
- } else if(!strcmp(header_field_name, "Origin") ) {
- field_Origin = header_field_val;
- }
- } else {
- break;
- }
-#ifdef DEBUG
- printf("(HTTP_SERVER) *header_field_name adr: %d %s\r\n", header_field_name - 1, header_field_name);
- printf("(HTTP_SERVER) header_field_val adr: %d %s\r\n", header_field_val - 1, header_field_val);
-#endif
- } while(1);
-
- // if the request is to switching to the WebSocket Server
- if(!strcmp(field_Connection, "Upgrade")) {
- if( !strcmp(field_Upgrade, "websocket") &&
- field_Sec_WebSocket_Key != NULL &&
- !strcmp(field_Sec_WebSocket_Version, "13") &&
- field_Origin != NULL) {
- DEBUG_PRINT_LINE("(HTTP_SERVER) Communication Protocol will be Upgraded to Websocket! \r\n");
- /*
- if(ws.isValid()){
- ...//calcurate the key
- msger.resetHeader();
- msger.setStatusLine(101, "Switching Protocols");
- if(msger.msger.setHeaderField("Connection", "Upgrade")) printf("(HTTP_SERVER)buffer over flow@ResposeMessenger");
- if(msger.msger.setHeaderField("Upgrade", "websocket")) printf("(HTTP_SERVER)buffer over flow@ResposeMessenger");
- if(msger.msger.setHeaderField("Sec-WebSocket-Accept", ...)) printf("(HTTP_SERVER)buffer over flow@ResposeMessenger");
- if(msger.msger.setHeaderField("Access-Control-Allow-Origin", "*")) printf("(HTTP_SERVER)buffer over flow@ResposeMessenger");
- }
- else goto AAA;
- */
- } else {
- //AAA:
- DEBUG_PRINT_LINE("(HTTP_SERVER) Communication Protocol won't be Upgraded.\r\n");
- msger.setStatusLine(426, "Upgrade Required");
- if(msger.setHeaderField("Connection", "Close"))printf("(HTTP_SERVER)buffer over flow @ ResponseMessenger");
- }
- }
-
-
-#ifdef DEBUG
- //printf("status code : %d\r\n", status_code);
- //printf("content type: %s\r\n", content_type);
-#endif
-
// send response
msger.sendHTTPResponse(tcpcon, fhandl);
//file close
-#ifdef DEBUG
- if(
-#endif
- fhandl.close()
-#ifndef DEBUG
- ;
-#endif
-#ifdef DEBUG
- == 0)
- printf("(HTTP_SERVER) file has closed\r\n");
+ if( fhandl.close()== 0)
+ DEBUG_PRINT_LINE("(HTTP_SERVER) file has closed\r\n");
else if(EOF)
- printf("(HTTP_SERVER) failed to close the file\r\n");
-#endif
+ DEBUG_PRINT_LINE("(HTTP_SERVER) failed to close the file\r\n");
+
+ msger.resetHeader();
+ printf("(HTTP_SERVER) echo back done.\r\n");
+ }
+ if (httpmethod == NULL) {
+ msger.sendHTTPResponse(tcpcon);
msger.resetHeader();
printf("(HTTP_SERVER) echo back done.\r\n");
}
- if (strcmp(httpmethod, NULL) == 0 ) {
- msger.sendHTTPResponse(tcpcon);
- }
printf("(HTTP_SERVER) Response to Request has done\r\n");
+ //
+ //
+ //
}
printf("(HTTP_SERVER) close connection.\r\ntcp server is listening...\r\n");
tcpcon.close();
- //tcpsvr.close();
led2 = false;
}
+ tcpsvr.close();
+ listening_flag = false;
led1 = false;
return 0;
}
\ No newline at end of file
--- a/handlers/Filehandler.cpp Sat Nov 26 19:15:20 2016 +0000
+++ b/handlers/Filehandler.cpp Mon Nov 28 08:27:42 2016 +0000
@@ -25,10 +25,11 @@
{
FILE *tmp;
- printf("\r\nfp: %d@FileHandler::open\r\n", fp);
+ printf("\r\n"
+ "fp: %d@FileHandler::open\r\n", fp);
if (fullpath != NULL) free(fullpath);
fullpath = (char*)malloc(sizeof(char) * (strlen("/local/") + strlen(arg_filepath) + strlen("index.htm") + 1));
- printf("\r\nfp: %d@FileHandler::open\r\n", fp);
+ printf("fp: %d@FileHandler::open\r\n", fp);
// Path formatting
if (arg_filepath[0] == '/') {
@@ -81,12 +82,12 @@
int FileHandler::close()
{
int tmp;
-
- if(fp != NULL){
+
+ if(fp != NULL) {
tmp = fclose(fp);
fp = NULL;
return tmp;
- } else{
+ } else {
return 1;
}
}
