Hi all, For many years, users of the "network" library have been suffered from poor error handling. For example, the "bind" function displays an error message like the following, but it doesn't tell you which port you were trying to bind to. Network.Socket.bind: resource busy (Address already in use) I am working to improve this situation. The error message becomes as follows: Network.Socket.bind: resource busy (Address already in use [EADDRINUSE] <socket: 13> [::1]:53) If you're interested, please join the discussion: https://github.com/haskell/network/pull/610 P.S. In my opinion, Show IOException should display errno. Why doesn't it display? instance Show IOException where showsPrec p (IOError hdl iot loc s _errno fn) = (case fn of Nothing -> case hdl of Nothing -> id Just h -> showsPrec p h . showString ": " Just name -> showString name . showString ": ") . (case loc of "" -> id _ -> showString loc . showString ": ") . showsPrec p iot . (case s of "" -> id _ -> showString " (" . showString s . showString ")") --Kazu