author | spiralman <spiralman> | 2002-07-25 16:38:22 (UTC) |
---|---|---|
committer | spiralman <spiralman> | 2002-07-25 16:38:22 (UTC) |
commit | 11170a8b8c1a2755cb7d9416ea99fc5067d0c53d (patch) (unidiff) | |
tree | 0e2ea513139dfd146e8fe8f96f8fb791d2382e17 /noncore/net/ubrowser/httpcomm.cpp | |
parent | 8895e9bd55244f32f12ff619e020a23afac44808 (diff) | |
download | opie-11170a8b8c1a2755cb7d9416ea99fc5067d0c53d.zip opie-11170a8b8c1a2755cb7d9416ea99fc5067d0c53d.tar.gz opie-11170a8b8c1a2755cb7d9416ea99fc5067d0c53d.tar.bz2 |
removed infinite loop with chunked encoding
fixed generation of context for http requests (QTextBrowser still ignores them)
chunked encoding still misses large portions of data...
Diffstat (limited to 'noncore/net/ubrowser/httpcomm.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/net/ubrowser/httpcomm.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/noncore/net/ubrowser/httpcomm.cpp b/noncore/net/ubrowser/httpcomm.cpp index 54f7acf..b086b58 100644 --- a/noncore/net/ubrowser/httpcomm.cpp +++ b/noncore/net/ubrowser/httpcomm.cpp | |||
@@ -146,24 +146,25 @@ void HttpComm::incoming() | |||
146 | //case 0=need to read chunk length | 146 | //case 0=need to read chunk length |
147 | case 0: | 147 | case 0: |
148 | j = tempQString.find('\n'); | 148 | j = tempQString.find('\n'); |
149 | sclength = tempQString; | 149 | sclength = tempQString; |
150 | sclength.truncate(j); | 150 | sclength.truncate(j); |
151 | clength = sclength.toUInt(0, 16); | 151 | clength = sclength.toUInt(0, 16); |
152 | printf("HttpComm::Incoming: chunk length: %d\n", clength); | 152 | printf("HttpComm::Incoming: chunk length: %d\n", clength); |
153 | //end of data | 153 | //end of data |
154 | if(clength==0) | 154 | if(clength==0) |
155 | { | 155 | { |
156 | processBody(); | 156 | processBody(); |
157 | done=true; | 157 | done=true; |
158 | return; | ||
158 | } | 159 | } |
159 | //still more, but it hasnt been recieved yet | 160 | //still more, but it hasnt been recieved yet |
160 | if(ba <= j) | 161 | if(ba <= j) |
161 | { | 162 | { |
162 | status=1; | 163 | status=1; |
163 | done=true; | 164 | done=true; |
164 | break; | 165 | break; |
165 | } | 166 | } |
166 | //still more data waiting | 167 | //still more data waiting |
167 | else | 168 | else |
168 | { | 169 | { |
169 | done=false; | 170 | done=false; |
@@ -185,25 +186,25 @@ void HttpComm::incoming() | |||
185 | printf("HttpComm::incoming: start new body piece 1: \n"); | 186 | printf("HttpComm::incoming: start new body piece 1: \n"); |
186 | printf("%s", newTQstring.latin1() ); | 187 | printf("%s", newTQstring.latin1() ); |
187 | printf("HttpComm::incoming: end new body piece 1.\n"); | 188 | printf("HttpComm::incoming: end new body piece 1.\n"); |
188 | status=0; | 189 | status=0; |
189 | j=clength-bRead; | 190 | j=clength-bRead; |
190 | done=false; | 191 | done=false; |
191 | // break; | 192 | // break; |
192 | } | 193 | } |
193 | //the chunk extends beyond the current data; | 194 | //the chunk extends beyond the current data; |
194 | else | 195 | else |
195 | { | 196 | { |
196 | body+=tempQString; | 197 | body+=tempQString; |
197 | bRead+=ba; | 198 | bRead+=tempQString.length(); |
198 | printf("HttpComm::incoming: start new body piece 2: \n"); | 199 | printf("HttpComm::incoming: start new body piece 2: \n"); |
199 | printf("%s", tempQString.latin1() ); | 200 | printf("%s", tempQString.latin1() ); |
200 | printf("HttpComm::incoming: end new body piece 2.\n"); | 201 | printf("HttpComm::incoming: end new body piece 2.\n"); |
201 | done=true; | 202 | done=true; |
202 | status=2; | 203 | status=2; |
203 | // break; | 204 | // break; |
204 | } | 205 | } |
205 | break; | 206 | break; |
206 | //just got data in, continue reading chunk | 207 | //just got data in, continue reading chunk |
207 | case 2: | 208 | case 2: |
208 | //the current data extends beyond the end of the chunk | 209 | //the current data extends beyond the end of the chunk |
209 | if(bRead + tempQString.length() > clength) | 210 | if(bRead + tempQString.length() > clength) |
@@ -215,25 +216,25 @@ void HttpComm::incoming() | |||
215 | printf("HttpComm::incoming: start new body piece 3: \n"); | 216 | printf("HttpComm::incoming: start new body piece 3: \n"); |
216 | printf("%s", newTQstring.latin1() ); | 217 | printf("%s", newTQstring.latin1() ); |
217 | printf("HttpComm::incoming: end new body piece 3.\n"); | 218 | printf("HttpComm::incoming: end new body piece 3.\n"); |
218 | status=0; | 219 | status=0; |
219 | j=clength-bRead; | 220 | j=clength-bRead; |
220 | done=false; | 221 | done=false; |
221 | // break; | 222 | // break; |
222 | } | 223 | } |
223 | //the chunk extends beyond the current data; | 224 | //the chunk extends beyond the current data; |
224 | else | 225 | else |
225 | { | 226 | { |
226 | body+=tempQString; | 227 | body+=tempQString; |
227 | bRead+=ba; | 228 | bRead+=tempQString.length(); |
228 | printf("HttpComm::incoming: start new body piece 4: \n"); | 229 | printf("HttpComm::incoming: start new body piece 4: \n"); |
229 | printf("%s", tempQString.latin1() ); | 230 | printf("%s", tempQString.latin1() ); |
230 | printf("HttpComm::incoming: end new body piece 4.\n"); | 231 | printf("HttpComm::incoming: end new body piece 4.\n"); |
231 | done=true; | 232 | done=true; |
232 | status=2; | 233 | status=2; |
233 | // break; | 234 | // break; |
234 | } | 235 | } |
235 | break; | 236 | break; |
236 | } | 237 | } |
237 | printf("HttpComm::incoming: chunked encoding: bRead: %d\n", bRead); | 238 | printf("HttpComm::incoming: chunked encoding: bRead: %d\n", bRead); |
238 | } | 239 | } |
239 | } | 240 | } |
@@ -270,26 +271,28 @@ void HttpComm::parseHeader() | |||
270 | { | 271 | { |
271 | printf("HttpComm::parseHeader: using chunked encoding\n"); | 272 | printf("HttpComm::parseHeader: using chunked encoding\n"); |
272 | chunked = true; | 273 | chunked = true; |
273 | status=0; | 274 | status=0; |
274 | } | 275 | } |
275 | } | 276 | } |
276 | 277 | ||
277 | printf("HttpConn::parseHeader: content-length: %d\n", length); | 278 | printf("HttpConn::parseHeader: content-length: %d\n", length); |
278 | } | 279 | } |
279 | 280 | ||
280 | void HttpComm::processBody() | 281 | void HttpComm::processBody() |
281 | { | 282 | { |
283 | printf("HttpComm::processBody: processing body\n"); | ||
282 | //printf("HttpComm::processBody: start body\n\n"); | 284 | //printf("HttpComm::processBody: start body\n\n"); |
283 | //printf("%s", body.latin1()); | 285 | //printf("%s", body.latin1()); |
284 | //printf("HttpComm::processBody: end body\n"); | 286 | //printf("HttpComm::processBody: end body\n"); |
285 | 287 | ||
286 | int lastSlash = file.findRev('/'); | 288 | int lastSlash = file.findRev('/'); |
287 | 289 | ||
288 | QString end = file; | 290 | QString end = file; |
289 | end.truncate(lastSlash-1); | 291 | end.truncate(lastSlash+1); |
290 | QString context("http://"+host+':'+portS+end); | 292 | QString context("http://"+host+':'+portS+end); |
293 | printf("HttpComm::processBody: context: %s\n", context.latin1() ); | ||
291 | 294 | ||
292 | browser->setTextFormat(RichText); | 295 | browser->setTextFormat(RichText); |
296 | browser->mimeSourceFactory()->setFilePath(context); | ||
293 | browser->setText(body, context); | 297 | browser->setText(body, context); |
294 | printf("%s\n", context.latin1() ); | ||
295 | } | 298 | } |