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.
Dependents: HTTPClient_IFTTT_Maker_post_HelloWorld
Fork of HTTPClient by
Diff: HTTPClient.cpp
- Revision:
- 14:2744e0c0e527
- Parent:
- 13:be61104f4e91
- Child:
- 15:5ad07f90e895
--- a/HTTPClient.cpp Sun Aug 05 16:12:10 2012 +0000
+++ b/HTTPClient.cpp Tue Aug 28 15:55:32 2012 +0000
@@ -355,34 +355,44 @@
if( recvChunked )
{
//Read chunk header
- crlfPos=0;
- for(crlfPos++; crlfPos < trfLen - 2; crlfPos++)
+ bool foundCrlf;
+ do
{
- if( buf[crlfPos] == '\r' && buf[crlfPos + 1] == '\n' )
- {
- break;
- }
- }
- if(crlfPos >= trfLen - 2) //Try to read more
- {
- if( trfLen < CHUNK_SIZE )
+ foundCrlf = false;
+ crlfPos=0;
+ buf[trfLen]=0;
+ if(trfLen >= 2)
{
- size_t newTrfLen;
- ret = recv(buf + trfLen, 0, CHUNK_SIZE - trfLen - 1, &newTrfLen);
- trfLen += newTrfLen;
- CHECK_CONN_ERR(ret);
- continue;
+ for(; crlfPos < trfLen - 2; crlfPos++)
+ {
+ if( buf[crlfPos] == '\r' && buf[crlfPos + 1] == '\n' )
+ {
+ foundCrlf = true;
+ break;
+ }
+ }
}
- else
+ if(!foundCrlf) //Try to read more
{
- PRTCL_ERR();
+ if( trfLen < CHUNK_SIZE )
+ {
+ size_t newTrfLen;
+ ret = recv(buf + trfLen, 0, CHUNK_SIZE - trfLen - 1, &newTrfLen);
+ trfLen += newTrfLen;
+ CHECK_CONN_ERR(ret);
+ continue;
+ }
+ else
+ {
+ PRTCL_ERR();
+ }
}
- }
+ } while(!foundCrlf);
buf[crlfPos] = '\0';
int n = sscanf(buf, "%x", &readLen);
if(n!=1)
{
- ERR("Could not read chunk length");
+ ERR("Could not read chunk length -- crlfpos == %d & got %s", crlfPos, buf);
PRTCL_ERR();
}
@@ -429,7 +439,7 @@
{
size_t newTrfLen;
//Read missing chars to find end of chunk
- ret = recv(buf, 2 - trfLen, CHUNK_SIZE, &newTrfLen);
+ ret = recv(buf + trfLen, 2 - trfLen, CHUNK_SIZE - trfLen - 1, &newTrfLen);
CHECK_CONN_ERR(ret);
trfLen += newTrfLen;
}
