@@ -282,12 +282,21 @@ handleIncomingMessages node = go [] Map.empty Map.empty Set.empty
282282 { ctrlMsgSender = nid
283283 , ctrlMsgSignal = Died nid DiedDisconnect
284284 }
285− NT.ErrorEvent _ ->
286− fail "handleIncomingMessages: TODO 3"
285+ NT.ErrorEvent (NT.TransportError (NT.EventConnectionLost Nothing _) _) ->
286+ -- We cannot really deal with the case that some (but not all)
287+ -- incoming connections from a remote node have failed (what if this
288+ -- incoming connection corresponds to a typed channel, for instance?)
289+ fail "handleIncomingMessages: TODO"
290+ NT.ErrorEvent (NT.TransportError NT.EventEndPointFailed str) ->
291+ fail $ "Cloud Haskell fatal error: end point failed: " ++ str
292+ NT.ErrorEvent (NT.TransportError NT.EventTransportFailed str) ->
293+ fail $ "Cloud Haskell fatal error: transport failed: " ++ str
287294 NT.EndPointClosed ->
288295 return ()
289296 NT.ReceivedMulticast _ _ ->
290− fail "handleIncomingMessages: TODO 4"
297+ -- If we received a multicast message, something went horribly wrong
298+ -- and we just give up
299+ fail "Cloud Haskell fatal error: received unexpected multicast"
291300
292301 state = localState node
293302 endpoint = localEndPoint node