jenkins-bot has submitted this change and it was merged.
Change subject: mw.FormDataTransport: Avoid exceptions when a chunked upload is
aborted
......................................................................
mw.FormDataTransport: Avoid exceptions when a chunked upload is aborted
We try to abort uploads if an upload is removed while it's being
uploaded. We were handling the 'abort' event incorrectly for chunked
uploads, essentially calling parseResponse() twice. The second call
would be given unexpected data, resulting in 'TypeError: Cannot read
property 'code' of undefined' being thrown. Luckily the exception was
mostly harmless, since the upload was gone anyway.
Bug: T136236
Change-Id: I0230771fd3cbf31013d4b1fa59272f69d8c0d0a9
---
M resources/transports/mw.FormDataTransport.js
1 file changed, 5 insertions(+), 6 deletions(-)
Approvals:
MarkTraceur: Looks good to me, approved
jenkins-bot: Verified
diff --git a/resources/transports/mw.FormDataTransport.js
b/resources/transports/mw.FormDataTransport.js
index 55bd7ad..da9edaf 100644
--- a/resources/transports/mw.FormDataTransport.js
+++ b/resources/transports/mw.FormDataTransport.js
@@ -47,8 +47,7 @@
* @return {XMLHttpRequest}
*/
mw.FormDataTransport.prototype.createXHR = function ( deferred ) {
- var xhr = new XMLHttpRequest(),
- transport = this;
+ var xhr = new XMLHttpRequest();
xhr.upload.addEventListener( 'progress', function ( evt ) {
var fraction;
@@ -58,10 +57,6 @@
fraction = null;
}
deferred.notify( fraction );
- }, false );
-
- xhr.addEventListener( 'abort', function ( evt ) {
- deferred.reject( transport.parseResponse( evt ) );
}, false );
return xhr;
@@ -149,6 +144,9 @@
this.xhr.addEventListener( 'error', function ( evt ) {
deferred.reject( transport.parseResponse( evt )
);
}, false );
+ this.xhr.addEventListener( 'abort', function ( evt ) {
+ deferred.reject( transport.parseResponse( evt )
);
+ }, false );
formData = this.createFormData( this.tempname );
formData.append( 'file', file );
@@ -192,6 +190,7 @@
this.xhr = this.createXHR( deferred );
this.xhr.addEventListener( 'load', deferred.resolve, false );
this.xhr.addEventListener( 'error', deferred.reject, false );
+ this.xhr.addEventListener( 'abort', deferred.reject, false );
formData = this.createFormData( this.tempname, offset );
--
To view, visit https://gerrit.wikimedia.org/r/292329
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I0230771fd3cbf31013d4b1fa59272f69d8c0d0a9
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/UploadWizard
Gerrit-Branch: master
Gerrit-Owner: Bartosz DziewoĆski <[email protected]>
Gerrit-Reviewer: MarkTraceur <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits