Ben Copsey

Fix throttling on iPhone

@@ -73,6 +73,8 @@ unsigned long const ASIWWANBandwidthThrottleAmount = 14800; @@ -73,6 +73,8 @@ unsigned long const ASIWWANBandwidthThrottleAmount = 14800;
73 // It will be set to NO when throttling was turned on with setShouldThrottleBandwidthForWWAN, but a WI-FI connection is active 73 // It will be set to NO when throttling was turned on with setShouldThrottleBandwidthForWWAN, but a WI-FI connection is active
74 BOOL isBandwidthThrottled = NO; 74 BOOL isBandwidthThrottled = NO;
75 75
  76 +BOOL shouldThrottleBandwithForWWANOnly = NO;
  77 +
76 static NSLock *sessionCookiesLock = nil; 78 static NSLock *sessionCookiesLock = nil;
77 79
78 // Private stuff 80 // Private stuff
@@ -2328,7 +2330,8 @@ static NSLock *sessionCookiesLock = nil; @@ -2328,7 +2330,8 @@ static NSLock *sessionCookiesLock = nil;
2328 { 2330 {
2329 #if TARGET_OS_IPHONE 2331 #if TARGET_OS_IPHONE
2330 [bandwidthThrottlingLock lock]; 2332 [bandwidthThrottlingLock lock];
2331 - BOOL throttle = isBandwidthThrottled; 2333 +
  2334 + BOOL throttle = isBandwidthThrottled || (!shouldThrottleBandwithForWWANOnly && (maxBandwidthPerSecond));
2332 [bandwidthThrottlingLock unlock]; 2335 [bandwidthThrottlingLock unlock];
2333 return throttle; 2336 return throttle;
2334 #else 2337 #else
@@ -2432,12 +2435,16 @@ static NSLock *sessionCookiesLock = nil; @@ -2432,12 +2435,16 @@ static NSLock *sessionCookiesLock = nil;
2432 } else { 2435 } else {
2433 [[NSNotificationCenter defaultCenter] removeObserver:self name:@"kNetworkReachabilityChangedNotification" object:nil]; 2436 [[NSNotificationCenter defaultCenter] removeObserver:self name:@"kNetworkReachabilityChangedNotification" object:nil];
2434 [ASIHTTPRequest setMaxBandwidthPerSecond:0]; 2437 [ASIHTTPRequest setMaxBandwidthPerSecond:0];
  2438 + [bandwidthThrottlingLock lock];
  2439 + shouldThrottleBandwithForWWANOnly = NO;
  2440 + [bandwidthThrottlingLock unlock];
2435 } 2441 }
2436 } 2442 }
2437 2443
2438 + (void)throttleBandwidthForWWANUsingLimit:(unsigned long)limit 2444 + (void)throttleBandwidthForWWANUsingLimit:(unsigned long)limit
2439 { 2445 {
2440 - [bandwidthThrottlingLock lock]; 2446 + [bandwidthThrottlingLock lock];
  2447 + shouldThrottleBandwithForWWANOnly = YES;
2441 maxBandwidthPerSecond = limit; 2448 maxBandwidthPerSecond = limit;
2442 [[Reachability sharedReachability] setNetworkStatusNotificationsEnabled:YES]; 2449 [[Reachability sharedReachability] setNetworkStatusNotificationsEnabled:YES];
2443 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:@"kNetworkReachabilityChangedNotification" object:nil]; 2450 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:@"kNetworkReachabilityChangedNotification" object:nil];