diff --git a/AltStore/Operations/UpdateKnownSourcesOperation.swift b/AltStore/Operations/UpdateKnownSourcesOperation.swift
index 62f98e1e..e553b5f1 100644
--- a/AltStore/Operations/UpdateKnownSourcesOperation.swift
+++ b/AltStore/Operations/UpdateKnownSourcesOperation.swift
@@ -30,11 +30,26 @@ extension UpdateKnownSourcesOperation
class UpdateKnownSourcesOperation: ResultOperation<([KnownSource], [KnownSource])>
{
+ private let session: URLSession
+
+ override init()
+ {
+ let configuration = URLSessionConfiguration.default
+
+ if UserDefaults.standard.responseCachingDisabled
+ {
+ configuration.requestCachePolicy = .reloadIgnoringLocalCacheData
+ configuration.urlCache = nil
+ }
+
+ self.session = URLSession(configuration: configuration)
+ }
+
override func main()
{
super.main()
- let dataTask = URLSession.shared.dataTask(with: .sources) { (data, response, error) in
+ let dataTask = self.session.dataTask(with: .sources) { (data, response, error) in
do
{
if let response = response as? HTTPURLResponse
diff --git a/AltStore/Settings/Settings.storyboard b/AltStore/Settings/Settings.storyboard
index 19dafc33..127620e1 100644
--- a/AltStore/Settings/Settings.storyboard
+++ b/AltStore/Settings/Settings.storyboard
@@ -729,15 +729,15 @@
-
-
+
+
-
+
-
+
+
+
+
+
+
@@ -894,7 +907,7 @@
-
+
@@ -912,6 +925,7 @@
+
diff --git a/AltStore/Settings/SettingsViewController.swift b/AltStore/Settings/SettingsViewController.swift
index 6c418182..a3054acf 100644
--- a/AltStore/Settings/SettingsViewController.swift
+++ b/AltStore/Settings/SettingsViewController.swift
@@ -74,6 +74,7 @@ extension SettingsViewController
case anisetteServers
case advancedSettings
+ case responseCaching
}
}
@@ -96,6 +97,7 @@ final class SettingsViewController: UITableViewController
@IBOutlet private var refreshSideJITServer: UILabel!
@IBOutlet private var enforceThreeAppLimitSwitch: UISwitch!
+ @IBOutlet private var disableResponseCachingSwitch: UISwitch!
@IBOutlet private var versionLabel: UILabel!
@@ -217,6 +219,7 @@ private extension SettingsViewController
self.noIdleTimeoutSwitch.isOn = UserDefaults.standard.isIdleTimeoutDisableEnabled
self.disableAppLimitSwitch.isOn = UserDefaults.standard.isAppLimitDisabled
self.enforceThreeAppLimitSwitch.isOn = !UserDefaults.standard.ignoreActiveAppsLimit
+ self.disableResponseCachingSwitch.isOn = UserDefaults.standard.responseCachingDisabled
if self.isViewLoaded
{
@@ -400,6 +403,11 @@ private extension SettingsViewController
}
}
+ @IBAction func toggleDisableResponseCaching(_ sender: UISwitch)
+ {
+ UserDefaults.standard.responseCachingDisabled = sender.isOn
+ }
+
@IBAction func addRefreshAppsShortcut()
{
guard let shortcut = INShortcut(intent: INInteraction.refreshAllApps().intent) else { return }
@@ -866,7 +874,7 @@ extension SettingsViewController
} else {
ELOG("UIApplication.openSettingsURLString invalid")
}
- case .refreshAttempts, .errorLog: break
+ case .refreshAttempts, .errorLog, .responseCaching: break
}
diff --git a/AltStoreCore/Extensions/UserDefaults+AltStore.swift b/AltStoreCore/Extensions/UserDefaults+AltStore.swift
index 4308118e..0a4b1f7a 100644
--- a/AltStoreCore/Extensions/UserDefaults+AltStore.swift
+++ b/AltStoreCore/Extensions/UserDefaults+AltStore.swift
@@ -76,6 +76,7 @@ public extension UserDefaults
@NSManaged var isCowExploitSupported: Bool
@NSManaged var permissionCheckingDisabled: Bool
+ @NSManaged var responseCachingDisabled: Bool
class func registerDefaults()
{
@@ -125,5 +126,9 @@ public extension UserDefaults
// Disable ignoreActiveAppsLimit if running iOS version that doesn't support MacDirtyCow.
UserDefaults.standard.ignoreActiveAppsLimit = false
}
+
+ #if !BETA
+ UserDefaults.standard.responseCachingDisabled = false
+ #endif
}
}