diff -r e848447f29be -r ce26e16d18ab netserver/HWProto.hs --- a/netserver/HWProto.hs Sun Oct 05 23:36:11 2008 +0000 +++ b/netserver/HWProto.hs Mon Oct 06 18:07:38 2008 +0000 @@ -23,16 +23,18 @@ answerWrongPassword = [(clientOnly, ["WARNING", "Wrong password"])] answerChatString nick msg = [(othersInRoom, ["CHAT_STRING", nick, msg])] + -- Main state-independent cmd handler handleCmd :: CmdHandler handleCmd client _ rooms ("QUIT":xs) = if null (room client) then (noChangeClients, noChangeRooms, answerQuit) else if isMaster client then - (noChangeClients, removeRoom (room client), (answerQuitInform $ nick client) ++ answerAbandoned) -- core disconnects clients on ROOMABANDONED answer + (noChangeClients, removeRoom (room client), answerAbandoned ++ (answerQuitInform $ nick client)) -- core disconnects clients on ROOMABANDONED answer else (noChangeClients, noChangeRooms, answerQuitInform $ nick client) + -- check state and call state-dependent commmand handlers handleCmd client clients rooms cmd = if null (nick client) || protocol client == 0 then @@ -42,6 +44,7 @@ else handleCmd_inRoom client clients rooms cmd + -- 'no info' state - need to get protocol number and nickname handleCmd_noInfo :: CmdHandler handleCmd_noInfo client clients _ ["NICK", newNick] = @@ -66,6 +69,7 @@ handleCmd_noInfo _ _ _ _ = (noChangeClients, noChangeRooms, answerBadCmd) + -- 'noRoom' clients state command handlers handleCmd_noRoom :: CmdHandler handleCmd_noRoom client _ rooms ["LIST"] = @@ -97,6 +101,7 @@ handleCmd_noRoom _ _ _ _ = (noChangeClients, noChangeRooms, answerBadCmd) + -- 'inRoom' clients state command handlers handleCmd_inRoom :: CmdHandler