| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -309,46 +309,49 @@ int HttpClient::responseStatusCode() | |||
| 309 | 309 | if (available()) | |
| 310 | 310 | { | |
| 311 | 311 | c = read(); | |
| 312 | - switch(iState) | ||
| 312 | + if (c != -1) | ||
| 313 | 313 | { | |
| 314 | - case eRequestSent: | ||
| 315 | - // We haven't reached the status code yet | ||
| 316 | - if ( (*statusPtr == '*') || (*statusPtr == c) ) | ||
| 314 | + switch(iState) | ||
| 317 | 315 | { | |
| 318 | - // This character matches, just move along | ||
| 319 | - statusPtr++; | ||
| 320 | - if (*statusPtr == '\0') | ||
| 316 | + case eRequestSent: | ||
| 317 | + // We haven't reached the status code yet | ||
| 318 | + if ( (*statusPtr == '*') || (*statusPtr == c) ) | ||
| 321 | 319 | { | |
| 322 | - // We've reached the end of the prefix | ||
| 323 | - iState = eReadingStatusCode; | ||
| 320 | + // This character matches, just move along | ||
| 321 | + statusPtr++; | ||
| 322 | + if (*statusPtr == '\0') | ||
| 323 | + { | ||
| 324 | + // We've reached the end of the prefix | ||
| 325 | + iState = eReadingStatusCode; | ||
| 326 | + } | ||
| 324 | 327 | } | |
| 325 | - } | ||
| 326 | - else | ||
| 327 | - { | ||
| 328 | - return HTTP_ERROR_INVALID_RESPONSE; | ||
| 329 | - } | ||
| 330 | - break; | ||
| 331 | - case eReadingStatusCode: | ||
| 332 | - if (isdigit(c)) | ||
| 333 | - { | ||
| 334 | - // This assumes we won't get more than the 3 digits we | ||
| 335 | - // want | ||
| 336 | - iStatusCode = iStatusCode*10 + (c - '0'); | ||
| 337 | - } | ||
| 338 | - else | ||
| 339 | - { | ||
| 340 | - // We've reached the end of the status code | ||
| 341 | - // We could sanity check it here or double-check for ' ' | ||
| 342 | - // rather than anything else, but let's be lenient | ||
| 343 | - iState = eStatusCodeRead; | ||
| 344 | - } | ||
| 345 | - break; | ||
| 346 | - case eStatusCodeRead: | ||
| 347 | - // We're just waiting for the end of the line now | ||
| 348 | - break; | ||
| 349 | - }; | ||
| 350 | - // We read something, reset the timeout counter | ||
| 351 | - timeoutStart = millis(); | ||
| 328 | + else | ||
| 329 | + { | ||
| 330 | + return HTTP_ERROR_INVALID_RESPONSE; | ||
| 331 | + } | ||
| 332 | + break; | ||
| 333 | + case eReadingStatusCode: | ||
| 334 | + if (isdigit(c)) | ||
| 335 | + { | ||
| 336 | + // This assumes we won't get more than the 3 digits we | ||
| 337 | + // want | ||
| 338 | + iStatusCode = iStatusCode*10 + (c - '0'); | ||
| 339 | + } | ||
| 340 | + else | ||
| 341 | + { | ||
| 342 | + // We've reached the end of the status code | ||
| 343 | + // We could sanity check it here or double-check for ' ' | ||
| 344 | + // rather than anything else, but let's be lenient | ||
| 345 | + iState = eStatusCodeRead; | ||
| 346 | + } | ||
| 347 | + break; | ||
| 348 | + case eStatusCodeRead: | ||
| 349 | + // We're just waiting for the end of the line now | ||
| 350 | + break; | ||
| 351 | + }; | ||
| 352 | + // We read something, reset the timeout counter | ||
| 353 | + timeoutStart = millis(); | ||
| 354 | + } | ||
| 352 | 355 | } | |
| 353 | 356 | else | |
| 354 | 357 | { | |
@@ -430,6 +433,7 @@ bool HttpClient::endOfBodyReached() | |||
| 430 | 433 | ||
| 431 | 434 | int HttpClient::read() | |
| 432 | 435 | { | |
| 436 | + #if 0 // Fails on WiFi because multi-byte read seems to be broken | ||
| 433 | 437 | uint8_t b[1]; | |
| 434 | 438 | int ret = read(b, 1); | |
| 435 | 439 | if (ret == 1) | |
@@ -440,6 +444,19 @@ int HttpClient::read() | |||
| 440 | 444 | { | |
| 441 | 445 | return -1; | |
| 442 | 446 | } | |
| 447 | + #else | ||
| 448 | + int ret = iClient->read(); | ||
| 449 | + if (ret >= 0) | ||
| 450 | + { | ||
| 451 | + if (endOfHeadersReached() && iContentLength > 0) | ||
| 452 | + { | ||
| 453 | + // We're outputting the body now and we've seen a Content-Length header | ||
| 454 | + // So keep track of how many bytes are left | ||
| 455 | + iBodyLengthConsumed++; | ||
| 456 | + } | ||
| 457 | + } | ||
| 458 | + return ret; | ||
| 459 | + #endif | ||
| 443 | 460 | } | |
| 444 | 461 | ||
| 445 | 462 | int HttpClient::read(uint8_t *buf, size_t size) | |
| Back | FazBrowse Home | New Git URL |
0 commit comments