The lib with which to make LPC1768 a simple HTTP server. This have not yet implemented. fopen() DOESN'T WORK after EthernetInterface::connect() is called as using mbed-os 5.4~. See also https://os.mbed.com/questions/80658/HardFault-occurs-when-fopen-is-called-af/ or https://github.com/ARMmbed/mbed-os/issues/6578 and https://github.com/ARMmbed/mbed-os/issues/6624

Fork of HTTP_SERVER by Akifumi Takahashi

Revision:
5:dedbaa9c633b
Parent:
4:b551799053c6
Child:
6:4eb469f51570
--- a/HTTP_SERVER.cpp	Sat Nov 26 18:30:33 2016 +0000
+++ b/HTTP_SERVER.cpp	Sat Nov 26 18:54:10 2016 +0000
@@ -91,6 +91,7 @@
                 case 0:
                     printf("(HTTP_SERVER) recieved buffer is empty.\r\n");
                     msger.setStatusLine(400, "No Request");
+                    if(msger.setHeaderField("Connection", "close"))printf("(HTTP_SERVER)buffer over flow @ ResponseMessenger");
                     httpmethod    = NULL;
                     filepath      = NULL;
                     http_ver      = NULL;
@@ -98,6 +99,7 @@
                 case -1:
                     printf("(HTTP_SERVER) failed to read data from client.\r\n");
                     msger.setStatusLine(500, "Internal Server Error");
+                    if(msger.setHeaderField("Connection", "close"))printf("(HTTP_SERVER)buffer over flow @ ResponseMessenger");
                     httpmethod    = NULL;
                     filepath      = NULL;
                     http_ver      = NULL;
@@ -131,26 +133,26 @@
                 fhandl.open(filepath,"rb");
                 if(fhandl.arrival()) {
                     msger.setStatusLine(200, "OK");
-                    if(msger.setHeaderField("Content-Length", fhandl.getFileSize()))printf("buffer over flow");
-                    if(msger.setHeaderField("Connection", "keep-alive"))printf("buffer over flow");
+                    if(msger.setHeaderField("Content-Length", fhandl.getFileSize()))printf("(HTTP_SERVER)buffer over flow @ ResponseMessenger");
+                    if(msger.setHeaderField("Connection", "keep-alive"))printf("(HTTP_SERVER)buffer over flow @ ResponseMessenger");
                 } else {
-                    if(msger.setStatusLine(404, "NOT FOUND"))printf("buffer over flow");
-                    if(msger.setHeaderField("Connection", "close"))printf("buffer over flow");
+                    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");
                     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(msger.setHeaderField("Content-Type", "text/html"))printf("buffer over flow");
+                    if(msger.setHeaderField("Content-Type", "text/html"))printf("(HTTP_SERVER)buffer over flow @ ResponseMessenger");
                 } else if (strcmp(fhandl.getSuffix(), "ico" )  ) {
-                    if(msger.setHeaderField("Content-Type", "image/png"))printf("buffer over flow");
+                    if(msger.setHeaderField("Content-Type", "image/png"))printf("(HTTP_SERVER)buffer over flow @ ResponseMessenger");
                 } else {
                     msger.setStatusLine(406, "not acceptable");
                 }
 
                 //  Connection timeout field
-                if(msger.setHeaderField("Keep-Alive", "timeouit=15"))printf("buffer over flow");
+                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
@@ -188,29 +190,30 @@
                 } while(1);
 
                 //  if the request is to switching to the WebSocket Server
-                if(     !strcmp(field_Connection, "Upgrade")        &&
-                        !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");
+                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");
                     }
-                    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("buffer over flow");
                 }