# HG changeset patch # User unc0rr # Date 1451281418 -10800 # Node ID fe46826de2912dac36b52a09f039ac3ae35060f8 # Parent 5dbc0f976b4ac605eb9c2ccca7b71dcb274c439a Don't send LIST command on join diff -r 5dbc0f976b4a -r fe46826de291 QTfrontend/net/newnetclient.cpp --- a/QTfrontend/net/newnetclient.cpp Tue Dec 22 11:18:40 2015 -0500 +++ b/QTfrontend/net/newnetclient.cpp Mon Dec 28 08:43:38 2015 +0300 @@ -552,7 +552,7 @@ } netClientState = InLobby; - RawSendNet(QString("LIST")); + //RawSendNet(QString("LIST")); //deprecated emit connected(); } @@ -945,7 +945,7 @@ qWarning("Illegal try to get rooms list!"); return; } - RawSendNet(QString("LIST")); + //RawSendNet(QString("LIST")); //deprecated } HWNewNet::ClientState HWNewNet::clientState() diff -r 5dbc0f976b4a -r fe46826de291 gameServer/Actions.hs --- a/gameServer/Actions.hs Tue Dec 22 11:18:40 2015 -0500 +++ b/gameServer/Actions.hs Mon Dec 28 08:43:38 2015 +0300 @@ -508,6 +508,7 @@ chan <- client's sendChan rnc <- gets roomsClients clientNick <- client's nick + clProto <- client's clientProto isAuthenticated <- liftM (not . B.null) $ client's webPassword isAdmin <- client's isAdministrator isContr <- client's isContributor @@ -521,6 +522,13 @@ >>= filterM (liftM ((/=) lobbyId) . clientRoomM rnc) >>= mapM (client'sM rnc nick) let clFlags = B.concat . L.concat $ [["u" | isAuthenticated], ["a" | isAdmin], ["c" | isContr]] + + roomsInfoList <- io $ do + rooms <- roomsM rnc + mapM (\r -> (if isNothing $ masterID r then return "" else client'sM rnc nick (fromJust $ masterID r)) + >>= \cn -> return $ roomInfo clProto cn r) + $ filter (\r -> (roomProto r == clProto)) rooms + mapM_ processAction . concat $ [ [AnswerClients clientsChans ["LOBBY:JOINED", clientNick]] , [AnswerClients [chan] ("LOBBY:JOINED" : clientNick : lobbyNicks)] @@ -531,6 +539,7 @@ , [AnswerClients (chan : clientsChans) ["CLIENT_FLAGS", B.concat["+" , clFlags], clientNick] | not $ B.null clFlags] , [ModifyClient (\cl -> cl{logonPassed = True, isVisible = True})] , [SendServerMessage] + , [AnswerClients [chan] ("ROOMS" : concat roomsInfoList)] ] diff -r 5dbc0f976b4a -r fe46826de291 gameServer/HWProtoLobbyState.hs --- a/gameServer/HWProtoLobbyState.hs Tue Dec 22 11:18:40 2015 -0500 +++ b/gameServer/HWProtoLobbyState.hs Mon Dec 28 08:43:38 2015 +0300 @@ -34,12 +34,7 @@ handleCmd_lobby :: CmdHandler -handleCmd_lobby ["LIST"] = do - (ci, irnc) <- ask - let cl = irnc `client` ci - rooms <- allRoomInfos - let roomsInfoList = concatMap (\r -> roomInfo (clientProto cl) (maybeNick . liftM (client irnc) $ masterID r) r) . filter (\r -> (roomProto r == clientProto cl)) - return [AnswerClients [sendChan cl] ("ROOMS" : roomsInfoList rooms)] +handleCmd_lobby ["LIST"] = return [] handleCmd_lobby ["CHAT", msg] = do n <- clientNick