diff --git a/src/QBar/ControlSocket.hs b/src/QBar/ControlSocket.hs
index 52f1b9769ac4dbd44867463ff875afb04d572782..ee4a2482947722885ec003d64ea6056cb81a93a0 100644
--- a/src/QBar/ControlSocket.hs
+++ b/src/QBar/ControlSocket.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE ScopedTypeVariables #-}
@@ -266,7 +267,12 @@ listenUnixSocket options@MainOptions{verbose} bar commandHandler = do
   socketExists <- doesFileExist socketPath
   when socketExists $ removeFile socketPath
   sock <- socket AF_UNIX Stream defaultProtocol
+
+#if MIN_VERSION_network(3,0,0)
   withFdSocket sock setCloseOnExecIfNeeded
+#else
+  setCloseOnExecIfNeeded $ fdSocket sock
+#endif
   bind sock (SockAddrUnix socketPath)
   listen sock 5
   forever $ do