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.
Dependencies: EthernetInterface HttpServer TextLCD mbed-rpc mbed-rtos mbed Socket lwip-eth lwip-sys lwip
Revision 2:14b689a85306, committed 2014-03-12
- Comitter:
- yueee_yt
- Date:
- Wed Mar 12 04:39:15 2014 +0000
- Parent:
- 1:d403150d596c
- Commit message:
- bug fix
Changed in this revision
--- a/HttpServer/HTTPRequestHandler.cpp Wed Mar 12 04:29:14 2014 +0000
+++ b/HttpServer/HTTPRequestHandler.cpp Wed Mar 12 04:39:15 2014 +0000
@@ -175,8 +175,8 @@
static char line[128];
static char key[128];
static char value[128];
- int i;
char *p;
+ chunkmode=false;
req_headers_count=0;
resp_headers_count=0;
while( readLine(line, 128) > 0) { //if == 0, it is an empty line = end of headers
@@ -200,6 +200,11 @@
#endif
if(strcmp(key,"CONTENT-LENGTH")==0) {
sscanf(value,"%d",&clength);
+ } else if(strcmp(key,"TRANSFER-ENCODING")==0) {
+ for(p=&value[0]; p<(&value[0]+strlen(value)); p++) {
+ if((*p>0x60)&&(*p<0x7b))*p=*p-0x20;
+ }
+ if(strcmp(value,"CHUNKED")==0)chunkmode=true;
}
}
//TODO: Impl n==1 case (part 2 of previous header)
@@ -208,53 +213,26 @@
void HTTPRequestHandler::readReqData()
{
- static char key[128];
- static char value[128];
- int cont_length=0;
- bool chunk=false;
- char *p;
int i;
//ReadHeader
-// map< string, string >::iterator it;
-// for (it = m_reqHeaders.begin(); it != m_reqHeaders.end(); it++) {
- for (i=0; i<req_headers_count; i++) {
-// sprintf(key,"%s",(*it).first.c_str());
-// sprintf(value,"%s",(*it).second.c_str());
- sprintf(key,"%s",req_headers_key[i].c_str());
- sprintf(value,"%s",req_headers_value[i].c_str());
- for(p=&key[0]; p<(&key[0]+strlen(key)); p++) {
- if((*p>0x60)&&(*p<0x7b))*p=*p-0x20;
- }
-#ifdef _DEBUG_REQUEST_SERVER_H
- printf("+++(HTTPRequestHandler) HEADER %s\r\n",key);
-#endif
- if(strcmp(key,"CONTENT-LENGTH")==0) {
- sscanf(value,"%d",&cont_length);
- } else if(strcmp(key,"TRANSFER-ENCODING")==0) {
- for(p=&value[0]; p<(&value[0]+strlen(value)); p++) {
- if((*p>0x60)&&(*p<0x7b))*p=*p-0x20;
- }
- if(strcmp(value,"CHUNKED")==0)chunk=true;
- }
- }
#ifdef _DEBUG_REQUEST_SERVER_H
printf("+++(HTTPRequestHandler)content-length: %d \r\n",cont_length);
- if(chunk==true)printf("+++(HTTPRequestHandler)CHUNK Transfer \r\n");
+ if(chunkmode==true)printf("+++(HTTPRequestHandler)CHUNK Transfer \r\n");
else printf("+++(HTTPRequestHandler)NO CHUNK Transfer \r\n");
#endif
// m_pTCPSocketConnection->set_blocking(true,HTTP_POST_REQUEST_TIMEOUT);
char buffer[READ_SIZE+1];
- if(chunk==false) {
+ if(chunkmode==false) {
//no chunked mode
for(;;) {
- if(cont_length>READ_SIZE) {
+ if(clength>READ_SIZE) {
i=m_pTCPSocketConnection->receive(buffer,READ_SIZE);
buffer[READ_SIZE]=0x0;
m_reqData.append(string(buffer));
- cont_length-=READ_SIZE;
+ clength-=READ_SIZE;
} else {
- i=m_pTCPSocketConnection->receive(buffer, cont_length);
- buffer[cont_length]=0x0;
+ i=m_pTCPSocketConnection->receive(buffer, clength);
+ buffer[clength]=0x0;
m_reqData.append(string(buffer));
break;
}
--- a/HttpServer/HTTPRequestHandler.h Wed Mar 12 04:29:14 2014 +0000
+++ b/HttpServer/HTTPRequestHandler.h Wed Mar 12 04:39:15 2014 +0000
@@ -111,6 +111,7 @@
int readLine(char* str, int maxLen);
int clength;
+bool chunkmode;
};
#endif