@@ -202,51 +202,41 @@ - (void)uploadPackage:(GDTCORUploadPackage *)package {
202
202
GDTCORLogWarning (GDTCORMCWUploadFailed, @" There was an error uploading events: %@ " , error);
203
203
}
204
204
NSError *decodingError;
205
+ GDTCORClock *futureUploadTime;
205
206
if (data) {
206
207
gdt_cct_LogResponse logResponse = GDTCCTDecodeLogResponse (data, &decodingError);
207
208
if (!decodingError && logResponse.has_next_request_wait_millis ) {
208
209
GDTCORLogDebug (
209
210
" CCT: The backend responded asking to not upload for %lld millis from now." ,
210
211
logResponse.next_request_wait_millis );
211
- GDTCORClock * futureUploadTime =
212
+ futureUploadTime =
212
213
[GDTCORClock clockSnapshotInTheFuture: logResponse.next_request_wait_millis];
213
- switch (target) {
214
- case kGDTCORTargetCCT :
215
- self->_CCTNextUploadTime = futureUploadTime;
216
- break ;
217
-
218
- case kGDTCORTargetFLL :
219
- // Falls through.
220
- case kGDTCORTargetCSH :
221
- self->_FLLNextUploadTime = futureUploadTime;
222
- default :
223
- break ;
224
- }
225
- } else {
226
- GDTCORLogDebug (" %@" , @" CCT: The backend response failed to parse, so the next request "
227
- @" won't occur until 15 minutes from now" );
228
- // 15 minutes from now.
229
- GDTCORClock *futureUploadTime = [GDTCORClock clockSnapshotInTheFuture: 15 * 60 * 1000 ];
230
- switch (target) {
231
- case kGDTCORTargetCCT :
232
- self->_CCTNextUploadTime = futureUploadTime;
233
- break ;
234
-
235
- case kGDTCORTargetFLL :
236
- // Falls through.
237
- case kGDTCORTargetCSH :
238
- self->_FLLNextUploadTime = futureUploadTime;
239
- break ;
240
-
241
- default :
242
- break ;
243
- }
214
+ } else if (decodingError) {
215
+ GDTCORLogDebug (@" There was a response decoding error: %@ " , decodingError);
244
216
}
245
217
pb_release (gdt_cct_LogResponse_fields, &logResponse);
246
218
}
219
+ if (!futureUploadTime) {
220
+ GDTCORLogDebug (" %@" , @" CCT: The backend response failed to parse, so the next request "
221
+ @" won't occur until 15 minutes from now" );
222
+ // 15 minutes from now.
223
+ futureUploadTime = [GDTCORClock clockSnapshotInTheFuture: 15 * 60 * 1000 ];
224
+ }
225
+ switch (target) {
226
+ case kGDTCORTargetCCT :
227
+ self->_CCTNextUploadTime = futureUploadTime;
228
+ break ;
229
+
230
+ case kGDTCORTargetFLL :
231
+ // Falls through.
232
+ case kGDTCORTargetCSH :
233
+ self->_FLLNextUploadTime = futureUploadTime;
234
+ default :
235
+ break ;
236
+ }
247
237
248
- // Only retry if one of these codes is returned.
249
- if (((NSHTTPURLResponse *)response).statusCode == 429 ||
238
+ // Only retry if one of these codes is returned, or there was an error .
239
+ if (error || ((NSHTTPURLResponse *)response).statusCode == 429 ||
250
240
((NSHTTPURLResponse *)response).statusCode == 503 ) {
251
241
[package retryDeliveryInTheFuture ];
252
242
} else {
@@ -287,10 +277,15 @@ - (void)uploadPackage:(GDTCORUploadPackage *)package {
287
277
- (BOOL )readyToUploadTarget : (GDTCORTarget)target conditions : (GDTCORUploadConditions)conditions {
288
278
__block BOOL result = NO ;
289
279
dispatch_sync (_uploaderQueue, ^{
290
- if (target == kGDTCORTargetCSH && [GDTCCTPrioritizer sharedInstance ].CSHEvents .count > 0 ) {
291
- result = YES ;
280
+ if (target == kGDTCORTargetCSH ) {
281
+ if ([GDTCCTPrioritizer sharedInstance ].CSHEvents .count > 0 ) {
282
+ result = YES ;
283
+ } else {
284
+ result = NO ;
285
+ }
292
286
return ;
293
287
}
288
+
294
289
if (self->_currentUploadPackage ) {
295
290
result = NO ;
296
291
GDTCORLogDebug (" %@" , @" CCT: can't upload because a package is in flight" );
0 commit comments