2013-02-13 9 views
6

Tôi đã viết một ứng dụng CRUD để giao tiếp với JIRA. Tôi đã kết thúc việc nâng cấp môi trường haskell của mình, bởi vì cabal-dev không giải quyết mọi thứ. Kết quả là, tôi đã có một số vỡ, với lỗi này bất cứ lúc nào tôi cố gắng sử dụng bất kỳ mã giao diện với JIRA.Thay đổi đột ngột ở đâu?

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

Sau một chút googling, tôi nghĩ điều này có liên quan đến tls hoặc http-conduit sử dụng tls.

Tôi hiện đang sử dụng tls-1.1.2http-conduit-1.8.7.1 trước đây tôi đã sử dụng tls-0.9.11http-conduit >= 1.5 && < 1.7 (không chắc chắn chính xác, cũ cài đặt đã biến mất.

Đây là nơi tôi tin rằng giờ nghỉ đang diễn ra

manSettings :: ManagerSettings 
manSettings = def { managerCheckCerts = \ _ _ _-> return CertificateUsageAccept } 

đây là hình thức được sử dụng để trông giống như

manSettings :: ManagerSettings 
manSettings = def { managerCheckCerts = \ _ _ -> return CertificateUsageAccept } 

Đây là mã sử dụng nó

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 

Hãy cho tôi biết nếu tôi để lại thứ gì đó. Tôi không chắc chắn vào thời điểm này những gì đã phá vỡ giữa sau đó và bây giờ.

Trả lời

4

Đó là một dự đoán tốt về nguồn lỗi, nhưng rất khó: managerCheckCerts chỉ sử dụng gói chứng chỉ để kiểm tra chứng chỉ hợp lệ. Thông báo lỗi bạn nhìn thấy dường như đến từ chính tls và cho biết lỗi trong việc truyền dữ liệu. Nó có thể là một ý tưởng tốt để gửi báo cáo lỗi bằng tls, tốt nhất là trước hết bằng cách thu hẹp sự cố xuống một cuộc gọi HTTPS không thành công (hoặc thậm chí tốt hơn, chỉ sử dụng tls và trình diễn cùng một lỗi).

+0

Tôi sẽ tiếp tục và xem liệu tôi có thể thu hẹp nó không. –