Skip to content

v2.14.0

Compare
Choose a tag to compare
@NSProgrammer NSProgrammer released this 30 May 15:37
· 2 commits to master since this release
16be3da

2.14.0

  • Update TNLCommunicationAgent to handle reachability behavior changes
    • The Network.framwork can yield an "other" interface when VPN is enabled (on Mac binaries)
      • Coerce these into WiFi since we don't have a good way to determine the actual interface used at the moment
    • The Network.framework used to yield WiFi for any network connection on a simulator, but now yields Wired
      • Rename TNLNetworkReachabilityReachableViaWiFi to TNLNetworkReachabilityReachableViaEthernet and handle both cases as Ethernet

2.13.0

  • Refactor Service Unavailable Backoff system to be more abstract and support any trigger for backoff
    • All *serviceUnavailableBackoff* APIs are refactored into *backoff* APIs
    • Introduce [TNLGlobalConfiguration backoffSignaler]
      • Implement your own TNLBackoffSignaler to customize behavior ... or ...
      • Default will use TNLSimpleBackoffSignaler which will signal on HTTP 503

2.12.0

  • Abstract out Service Unavailable Backoff Behavior for customization to be applied
    • See [TNLGlobalConfiguration serviceUnavailableBackoffBehaviorProvider] for providing a custom backoff behavior
      • Implement your own TNLServiceUnavailableBackoffBehaviorProvider to customize behavior
      • Due to Service Unavailable signaling being opaque, only the HTTP Headers and the URL can be provided
    • Default will use TNLSimpleServiceUnavailableBackoffBehaviorProvider
      • Exact same behavior as before (introduced in TNL prior to v2.0 open sourcing)

2.11.0

  • Change the TNLURLSessionAuthChallengeCompletionBlock arguments
    • Leave the disposition parameter
    • Change the credentials parameter of NSURLCredentials to be credentialsOrCancelContext of id
      • This will permit TNLAuthenticationChallengeHandler instance to be able to cancel the challenge and provide extra context in the resulting error code
      • Twitter will use this to cancel 401 login auth challenges when we don't want a redundant request to be made (since it just yields the same response)
        • This is to facilitate working around the behavior in NSURLSession where an HTTP 401 response with WWW-Authenticate header will always be transparently be retried (even when unmodified yielding the identical 401 response).
        • An additionaly problem is that canceling the 401 response will discard the response's body. If there is information needed in the response body, it will be lost.
        • Twitter has updated its WWW-Authenticate header responses to include additional metadata since the response body cannot be used.
        • Apple Feedback: FB7697492

2.10.0

  • Add retriable dependencies to TNLRequestOperation
    • Whenever a TNLRetryPolicyProvider would yield a retry, that retry will be delayed by the longer of 2 things:
      1. The delay provided by the retry policy provider (minimum of 100 milliseconds)
      2. Waiting for all dependencies on the TNLRequestOperation to complete
      • Normally, all dependencies of a retrying TNLRequestOperation will be complete before it has started but it is now possible to add dependencies after the request operation has already started to increase the dependencies on a retry starting.

2.9.0

  • Introduce tnlcli, a command-line-interface for TNL
    • Like cURL but with TNL features
    • Verbose mode provides all TNL logging to stdout / stderr along with lots of other details