mirror of
https://github.com/librespeed/speedtest.git
synced 2026-08-04 06:39:45 +00:00
fix upload: check HTTP status in xhr.onload, expand IIS docs
- speedtest_worker.js: moved HTTP status check from xhr.upload.onload (body sent, response may not be available) to xhr.onload (full HTTP transaction complete, xhr.status is reliable). - doc.md: added full IIS web.config example with maxAllowedContentLength.
This commit is contained in:
parent
1b3c0ac9c4
commit
2afc380e19
2 changed files with 23 additions and 15 deletions
11
doc.md
11
doc.md
|
|
@ -72,7 +72,16 @@ Apache:
|
|||
LimitRequestBody 134217728
|
||||
```
|
||||
|
||||
IIS: Set `maxAllowedContentLength` in `web.config`.
|
||||
IIS: Add the following to `web.config` (value is in bytes):
|
||||
```xml
|
||||
<system.webServer>
|
||||
<security>
|
||||
<requestFiltering>
|
||||
<requestLimits maxAllowedContentLength="134217728" />
|
||||
</requestFiltering>
|
||||
</security>
|
||||
</system.webServer>
|
||||
```
|
||||
|
||||
__Important:__ The speed test needs write permissions in the installation folder!
|
||||
|
||||
|
|
|
|||
|
|
@ -502,20 +502,9 @@ function ulTest(done) {
|
|||
prevLoaded = event.loaded;
|
||||
}.bind(this);
|
||||
xhr[i].upload.onload = function() {
|
||||
// check HTTP status - non-2xx means server rejected the request (e.g. 413 body too large)
|
||||
if (xhr[i].status >= 200 && xhr[i].status < 300) {
|
||||
// this stream sent all the garbage data, start again
|
||||
tverb("ul stream finished " + i);
|
||||
testStream(i, 0);
|
||||
} else {
|
||||
tverb("ul stream failed with HTTP " + xhr[i].status + " " + i);
|
||||
if (settings.xhr_ignoreErrors === 0) failed = true; //abort
|
||||
try {
|
||||
xhr[i].abort();
|
||||
} catch (e) {}
|
||||
delete xhr[i];
|
||||
if (settings.xhr_ignoreErrors === 1) testStream(i, 0); //restart stream
|
||||
}
|
||||
// this stream sent all the garbage data, start again
|
||||
tverb("ul stream finished " + i);
|
||||
testStream(i, 0);
|
||||
}.bind(this);
|
||||
xhr[i].upload.onerror = function() {
|
||||
tverb("ul stream failed " + i);
|
||||
|
|
@ -526,6 +515,16 @@ function ulTest(done) {
|
|||
delete xhr[i];
|
||||
if (settings.xhr_ignoreErrors === 1) testStream(i, 0); //restart stream
|
||||
}.bind(this);
|
||||
xhr[i].onload = function() {
|
||||
// check HTTP status after full response is available
|
||||
if (xhr[i].status >= 200 && xhr[i].status < 300) return;
|
||||
tverb("ul stream failed with HTTP " + xhr[i].status + " " + i);
|
||||
if (settings.xhr_ignoreErrors === 0) failed = true; //abort
|
||||
try {
|
||||
xhr[i].abort();
|
||||
} catch (e) {}
|
||||
delete xhr[i];
|
||||
}.bind(this);
|
||||
// send xhr
|
||||
xhr[i].open("POST", settings.url_ul + url_sep(settings.url_ul) + (settings.mpot ? "cors=true&" : "") + "r=" + Math.random(), true); // random string to prevent caching
|
||||
try {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue