diff -r da43c36a6e92 -r f11d80bac7ed gameServer/OfficialServer/DBInteraction.hs --- a/gameServer/OfficialServer/DBInteraction.hs Sun Feb 06 18:59:53 2011 +0300 +++ b/gameServer/OfficialServer/DBInteraction.hs Sun Feb 06 21:50:29 2011 +0300 @@ -5,32 +5,38 @@ ) where import Prelude hiding (catch); +import Control.Concurrent +import Control.Monad +import Data.List as L +import Data.ByteString.Char8 as B +#if defined(OFFICIAL_SERVER) import System.Process import System.IO as SIO -import Control.Concurrent import qualified Control.Exception as Exception -import Control.Monad import qualified Data.Map as Map import Data.Maybe +import Data.Time import System.Log.Logger -import Data.Time -import Data.ByteString.Char8 as B -import Data.List as L +#endif ------------------------ import CoreTypes +#if defined(OFFICIAL_SERVER) import Utils +#endif +localAddressList :: [B.ByteString] localAddressList = ["127.0.0.1", "0:0:0:0:0:0:0:1", "0:0:0:0:0:ffff:7f00:1"] +fakeDbConnection :: forall b. ServerInfo -> IO b fakeDbConnection serverInfo = forever $ do q <- readChan $ dbQueries serverInfo case q of - CheckAccount clId clUid _ clHost -> do + CheckAccount clId clUid _ clHost -> writeChan (coreChan serverInfo) $ ClientAccountInfo clId clUid (if clHost `L.elem` localAddressList then Admin else Guest) ClearCache -> return () SendStats {} -> return () - +dbConnectionLoop :: forall b. ServerInfo -> IO b #if defined(OFFICIAL_SERVER) pipeDbConnectionLoop queries coreChan hIn hOut accountsCache = Exception.handle (\(e :: Exception.IOException) -> warningM "Database" (show e) >> return accountsCache) $ @@ -97,5 +103,6 @@ dbConnectionLoop = fakeDbConnection #endif +startDBConnection :: ServerInfo -> IO () startDBConnection serverInfo = - forkIO $ dbConnectionLoop serverInfo + forkIO (dbConnectionLoop serverInfo) >> return ()