Brion VIBBER has submitted this change and it was merged. Change subject: Further protection against corrupting css on build and sync. ......................................................................
Further protection against corrupting css on build and sync. Updated error code range comparisons based on comments. Change-Id: I47b61a143d6f02e61be4081a1036754f407ea453 --- M scripts/make-css-assets.bash M wikipedia/Data/Operations/SyncAssetsFileOp.m M wikipedia/mw-network/MWNetworkOp.h M wikipedia/mw-network/MWNetworkOp.m 4 files changed, 32 insertions(+), 10 deletions(-) Approvals: Brion VIBBER: Verified; Looks good to me, approved diff --git a/scripts/make-css-assets.bash b/scripts/make-css-assets.bash index e3a59c3..10b44f2 100755 --- a/scripts/make-css-assets.bash +++ b/scripts/make-css-assets.bash @@ -5,8 +5,8 @@ PREFIX="http://bits.wikimedia.org/en.wikipedia.org/load.php?debug=true&lang=en&only=styles&skin=vector&modules=" cd "wikipedia/assets/" && { - curl -o 'styles.css' "${PREFIX}mobile.app.pagestyles.ios" - curl -o 'abusefilter.css' "${PREFIX}mobile.app.pagestyles.ios" - curl -o 'preview.css' "${PREFIX}mobile.app.preview" + curl -L -f -o 'styles.css' "${PREFIX}mobile.app.pagestyles.ios" + curl -L -f -o 'abusefilter.css' "${PREFIX}mobile.app.pagestyles.ios" + curl -L -f -o 'preview.css' "${PREFIX}mobile.app.preview" } diff --git a/wikipedia/Data/Operations/SyncAssetsFileOp.m b/wikipedia/Data/Operations/SyncAssetsFileOp.m index 84c826d..d8c89ad 100644 --- a/wikipedia/Data/Operations/SyncAssetsFileOp.m +++ b/wikipedia/Data/Operations/SyncAssetsFileOp.m @@ -35,12 +35,11 @@ self.completionBlock = ^(){ [[MWNetworkActivityIndicatorManager sharedManager] pop]; - if(weakSelf.isCancelled){ - return; - } - - if (weakSelf.error) { - return; + if (weakSelf.isCancelled || weakSelf.error) return; + + if (weakSelf.response) { + // Make extra sure that weird responses don't get written. + if (((NSHTTPURLResponse *)weakSelf.response).statusCode != 200) return; } // If it got this far, then a refresh was needed and has completed. diff --git a/wikipedia/mw-network/MWNetworkOp.h b/wikipedia/mw-network/MWNetworkOp.h index 721785e..fabb3e6 100644 --- a/wikipedia/mw-network/MWNetworkOp.h +++ b/wikipedia/mw-network/MWNetworkOp.h @@ -31,6 +31,7 @@ @property (weak) id <NetworkOpDelegate> delegate; @property (copy) NSURLRequest *request; +@property (strong, nonatomic) NSURLResponse *response; @property (copy, readonly) NSMutableData *dataRetrieved; @property (nonatomic) NSUInteger dataRetrievedExpectedLength; diff --git a/wikipedia/mw-network/MWNetworkOp.m b/wikipedia/mw-network/MWNetworkOp.m index af37787..e7539b0 100644 --- a/wikipedia/mw-network/MWNetworkOp.m +++ b/wikipedia/mw-network/MWNetworkOp.m @@ -10,7 +10,6 @@ @property (nonatomic, assign, getter = isOperationStarted) BOOL operationStarted; @property (strong, nonatomic) NSURLConnection *connection; -@property (strong, nonatomic) NSURLResponse *response; @property (copy, readwrite) NSNumber *bytesWritten; @property (copy, readwrite) NSNumber *bytesExpectedToWrite; @@ -184,6 +183,29 @@ self.response = response; } +-(void)setResponse:(NSURLResponse *)response +{ + _response = response; + + [self failIfBadHTTPStatusCode]; +} + +-(void)failIfBadHTTPStatusCode +{ + if (!self.response) return; + + // If the response is a server or client error finish with an error. + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)self.response; + NSInteger code = httpResponse.statusCode; + if ((code >= 400) && (code <= 499)) { + [self finishWithError:[NSString stringWithFormat:@"Client error. HTTP Status Code %ld", (long)code]]; + }else if ((code >= 500) && (code <= 599)) { + [self finishWithError:[NSString stringWithFormat:@"Server error. HTTP Status Code %ld", (long)code]]; + } + //NSLog(@"responseStatusCode = %ld", (long)code); + //NSLog(@"allHeaderFields = %@", httpResponse.allHeaderFields); +} + -(void)connectionDidFinishLoading:(NSURLConnection *)connection { if([self isCancelled]) { -- To view, visit https://gerrit.wikimedia.org/r/153696 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I47b61a143d6f02e61be4081a1036754f407ea453 Gerrit-PatchSet: 2 Gerrit-Project: apps/ios/wikipedia Gerrit-Branch: master Gerrit-Owner: Mhurd <mh...@wikimedia.org> Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits