summaryrefslogtreecommitdiff
path: root/noncore/net/ubrowser/httpcomm.cpp
Unidiff
Diffstat (limited to 'noncore/net/ubrowser/httpcomm.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/ubrowser/httpcomm.cpp49
1 files changed, 44 insertions, 5 deletions
diff --git a/noncore/net/ubrowser/httpcomm.cpp b/noncore/net/ubrowser/httpcomm.cpp
index 51068db..54f7acf 100644
--- a/noncore/net/ubrowser/httpcomm.cpp
+++ b/noncore/net/ubrowser/httpcomm.cpp
@@ -137,5 +137,6 @@ void HttpComm::incoming()
137 if(j != 0) 137 if(j != 0)
138 { 138 {
139 tempQString.remove(0, j); 139 tempQString.remove(0, j+1);
140 printf("HttpComm::incoming: removing http header. Result: \n%s", tempQString.latin1());
140 } 141 }
141 while(!done) 142 while(!done)
@@ -150,4 +151,5 @@ void HttpComm::incoming()
150 clength = sclength.toUInt(0, 16); 151 clength = sclength.toUInt(0, 16);
151 printf("HttpComm::Incoming: chunk length: %d\n", clength); 152 printf("HttpComm::Incoming: chunk length: %d\n", clength);
153 //end of data
152 if(clength==0) 154 if(clength==0)
153 { 155 {
@@ -155,16 +157,20 @@ void HttpComm::incoming()
155 done=true; 157 done=true;
156 } 158 }
159 //still more, but it hasnt been recieved yet
157 if(ba <= j) 160 if(ba <= j)
158 { 161 {
159 status=1; 162 status=1;
160 done=true; 163 done=true;
161 // break; 164 break;
162 } 165 }
166 //still more data waiting
163 else 167 else
164 { 168 {
165 done=false; 169 done=false;
170 //remove the chunk length header
171 tempQString.remove(0,j+1);
166 } 172 }
167 bRead=0; 173 bRead=0;
168 break; 174 // break;
169 //if there is more fall through to: 175 //if there is more fall through to:
170 //chunk length just read, still more in tempQstring 176 //chunk length just read, still more in tempQstring
@@ -175,4 +181,5 @@ void HttpComm::incoming()
175 QString newTQstring = tempQString; 181 QString newTQstring = tempQString;
176 newTQstring.truncate(clength-bRead); 182 newTQstring.truncate(clength-bRead);
183 bRead+=newTQstring.length();
177 body+=newTQstring; 184 body+=newTQstring;
178 printf("HttpComm::incoming: start new body piece 1: \n"); 185 printf("HttpComm::incoming: start new body piece 1: \n");
@@ -182,5 +189,5 @@ void HttpComm::incoming()
182 j=clength-bRead; 189 j=clength-bRead;
183 done=false; 190 done=false;
184 break; 191 // break;
185 } 192 }
186 //the chunk extends beyond the current data; 193 //the chunk extends beyond the current data;
@@ -193,8 +200,40 @@ void HttpComm::incoming()
193 printf("HttpComm::incoming: end new body piece 2.\n"); 200 printf("HttpComm::incoming: end new body piece 2.\n");
194 done=true; 201 done=true;
195 break; 202 status=2;
203 // break;
204 }
205 break;
206 //just got data in, continue reading chunk
207 case 2:
208 //the current data extends beyond the end of the chunk
209 if(bRead + tempQString.length() > clength)
210 {
211 QString newTQstring = tempQString;
212 newTQstring.truncate(clength-bRead);
213 bRead+=newTQstring.length();
214 body+=newTQstring;
215 printf("HttpComm::incoming: start new body piece 3: \n");
216 printf("%s", newTQstring.latin1() );
217 printf("HttpComm::incoming: end new body piece 3.\n");
218 status=0;
219 j=clength-bRead;
220 done=false;
221 // break;
222 }
223 //the chunk extends beyond the current data;
224 else
225 {
226 body+=tempQString;
227 bRead+=ba;
228 printf("HttpComm::incoming: start new body piece 4: \n");
229 printf("%s", tempQString.latin1() );
230 printf("HttpComm::incoming: end new body piece 4.\n");
231 done=true;
232 status=2;
233 // break;
196 } 234 }
197 break; 235 break;
198 } 236 }
237 printf("HttpComm::incoming: chunked encoding: bRead: %d\n", bRead);
199 } 238 }
200 } 239 }