SSL_ERROR_SSL(1): operation failed within the library SSL_ERROR_SSL(1): operation failed within the library ios ios

SSL_ERROR_SSL(1): operation failed within the library


Deadlock

I assume spotifyRequest will be called on the main thread.

So if the main thread reaches the line

group.wait()

and this line of responseJSON completionHandler was not called yet:

group.leave()

then the main thread is blocked due to the call of group.wait() above. Due to the blocked main thread group.leave() can't be called. Classical deadlock.

Verfication

Setting a breakpoint to the line

if let safeStatus = status {

shows that this line is never called.

Minimal Example that is running

As a starting point here the code for a minimal example that delivers a result.

import UIKitimport Alamofireclass ViewController: UIViewController {    override func viewDidLoad() {        super.viewDidLoad()        self.contactSpotify {            print ("result: \(String(describing: $0)) error: \(String(describing: $1))")        }    }    func contactSpotify(completion: @escaping ([String: Any]?, Error?) -> Void) {        let url = URL(string: "https://accounts.spotify.com/api/token")!        Alamofire.request(url,                          method: .post,                          parameters: ["grant_type": "refresh_token",                                       "client_id": "<someClientId>",                                       "refresh_token": "<someRefreshToken>",                                       "client_secret": "<someClientSecret>"])            .validate()            .responseJSON { response in                guard response.result.isSuccess else {                    completion(nil, response.result.error)                    return                }                completion(response.result.value as? [String: Any], nil)        }    }}

This gives as output in the console:

result: Optional(["access_token": XXX, "scope": user-read-email user-read-private, "token_type": Bearer, "expires_in": 3600]) error: nil

see Screenshot:console output

ATS Settings in info.plist

Spotify offers a valid TLS certificate chain on their server. So there is no need for ATS settings in info.plist.

SSL Warnings in Console

I get the same SSL warnings in the console when I run the application on an iOS 12 simulator like you. Nonetheless the connection is established and the request delivers data. Perhaps this is gone in one of the next betas.


I had the same warning with codegen Swagger in emulator on any response call. But all worked. This warning disappeared only when I added environment variable Hide strange unwanted Xcode logs