突破的变化在哪里?

Mic*_*ard 6 haskell yesod

我写了一个CRUD应用程序来与JIRA接口.我最终升级了我的haskell环境,因为cabal-dev并没有解决所有问题.结果,我有一些破损,随着我尝试使用任何与JIRA接口的代码时出现此错误.

Spike: HandshakeFailed (Error_Misc "user error (unexpected type received. expecting
handshake and got: Alert [(AlertLevel_Warning,UnrecognizedName)])")
Run Code Online (Sandbox Code Playgroud)

经过一番谷歌搜索后,我认为这与使用tls的tls或http-conduit有关.

我目前正在使用tls-1.1.2,http-conduit-1.8.7.1 之前我正在使用 tls-0.9.11并且http-conduit >= 1.5 && < 1.7(不确定到底哪个旧安装已经消失了.

这是我相信休息时间正在发生的地方

manSettings :: ManagerSettings
manSettings = def { managerCheckCerts = \ _ _ _-> return CertificateUsageAccept }
Run Code Online (Sandbox Code Playgroud)

这就是它过去的样子

manSettings :: ManagerSettings
manSettings = def { managerCheckCerts = \ _ _ -> return CertificateUsageAccept }
Run Code Online (Sandbox Code Playgroud)

这是使用它的代码

initialRequest :: forall (m :: * -> *). URI -> IO (Request m,Manager)
initialRequest uri = do
   initReq <- parseUrl uri -- let the server tell you what the request header
                           -- should look like 
   manager <- newManager manSettings -- a Manager manages http connections
                                     -- we mod the settings to handle
                                     -- the SSL cert. See manSettings below.
   return (modReq initReq,manager)
      where modReq initReq = applyBasicAuth username password initReq
Run Code Online (Sandbox Code Playgroud)

如果我遗漏了一些东西,请告诉我.我不确定此时和现在之间发生了什么.

Mic*_*man 4

这是对错误源的一个很好的猜测,但可能性很小:managerCheckCerts 只是使用证书包来检查证书的有效性。您看到的错误消息似乎来自 tls 本身,表明数据传输失败。使用 tls 提交错误报告可能是个好主意,最好首先将问题范围缩小到单个失败的 HTTPS 调用(或者更好的是,单独使用 tls 并演示相同的失败)。