Commit Graph
71 Commits
Author SHA1 Message Date
lotodore 3b25e18fde Rewriting boost asio timer stuff. (Did I mention I dislike the asio "cancel" semantics?!). TimerManager is no longer used. Should be stable now, but might leak some memory (needs further testing). 2009-06-12 15:48:34 +00:00
lotodore c8594e8e7b Canceling asio timers has bad semantics, and causes loads of trouble. Therefore, cancelled timers are simply marked as such, and the asio callback is silently ignored. This fixes several crashes, if players were removed from a game due to an error, because some timers were not cancelled. *sigh* This one took a lot of nerve. 2009-06-07 23:25:13 +00:00
lotodore 5f3369432a Rewriting sender yet again to fit the new asio design. Polling for new send data is no longer needed, this also reduces lag. 2009-06-07 08:51:43 +00:00
lotodore 8005cc82c6 Fixed server termination crash. However, network games are still not properly terminated. 2009-06-04 20:37:18 +00:00
lotodore 47648392fb Use boost::asio timer callbacks instead of self-made ones. There are still some termination issues (terminating a network game will result in a crash). However, it should be quite effective now with a large number of users. 2009-06-01 19:49:16 +00:00
lotodore cee2d787d0 Adding some error handling. Some is still missing. 2009-06-01 10:23:44 +00:00
lotodore 24abedbbab Renaming class ServerGameThread to ServerGame. 2009-05-31 20:14:46 +00:00
lotodore b48209a5e4 Termination of games is now working. Error handling is still missing in some cases, and it is very slow if there are a lot of players, but other than that all is fine :-). 2009-05-31 19:11:59 +00:00
lotodore 08ed5e0496 Almost complete rewrite of server game state due to porting the network engine to asio. Server is still broken in a lot of ways. A game is no longer run in a separate thread (but this change is still incomplete). 2009-05-30 22:20:40 +00:00
lotodore 2541f28ff2 Sender thread is no longer a thread (part of boost::asio integration). Warning: Network games are still broken! 2009-05-10 17:53:37 +00:00
lotodore d258bc25d0 Server accept thread is no longer a thread. 2009-05-10 14:57:51 +00:00
lotodore ac4c2e9aef Integrating precompiled headers support (might speed up compilation). Currently disabled (in .pro files). 2009-05-07 22:36:51 +00:00
lotodore 60b5d45c53 Adopting changes from asio branch. Currently broken. 2009-05-04 21:11:29 +00:00
lotodore 33001626c1 Adding IP address bans. 2009-04-11 11:03:22 +00:00
lotodore f8b1123cc5 Adding server irc management request to show the ip address of a user (in order to ban the user from the server). 2009-04-10 21:54:59 +00:00
lotodore 69f3b49ab2 Adding support for listing and removing single bans. 2009-04-10 21:04:08 +00:00
lotodore a3a7a7879e Fixing branch problem. 2009-04-07 22:23:29 +00:00
lotodore e59e50c10b Changes to allow regex bans. Might need updating of pro-files due to boost::regex dependency. 2009-04-07 22:04:38 +00:00
lotodore c998edf219 Fixed cleanup issue - the previous version had kind of a resource leak. 2009-01-31 22:20:08 +00:00
lotodore e0ff6db98e Create I/O service object in sender thread. 2009-01-26 20:57:39 +00:00
lotodore f2c3b2b723 Fixed boost asio stuff. Now working but probably some polishing required. 2009-01-25 21:56:43 +00:00
lotodore 17377f5a6b New boost::asio based sender thread. Does not work on windows yet, because the completion routine is never called. No idea why not. 2009-01-25 20:19:09 +00:00
lotodore 29061b661c Fixed one thread per session implementation. Kind of. Still seems to have a handle leak on Windows. However, it does not scale at all and needs to be reverted. It won't even handle 500 players with 500 games on a dual core high end machine. 2009-01-11 20:12:26 +00:00
lotodore d72cdb6873 One sender thread per client. Requires loads of resources. Kind of hacked, because the internal dependencies are very ugly now. Requires loads of testing. A problem might be the last packet sent by the server to a specific client before closing the connection, for example an error message. It might never even reach the client, because the sender thread is terminated before. I have not yet found a good way to fix this. 2009-01-07 21:52:16 +00:00
lotodore 606158c4f0 Preparing new send engine. 2009-01-07 19:37:05 +00:00
lotodore 23c3ae3849 Enable sending of a global message box through the irc bot, to inform clients about server reboots. 2008-12-26 16:47:14 +00:00
lotodore 4f48fdbe2a Allow the server to send a global notice to all players (for example if a server reboot is going to happen). Does not work with current client version 0.6.3. 2008-12-26 13:50:09 +00:00
lotodore 0a473245ee Removed unneeded include. 2008-09-08 21:49:21 +00:00
lotodore 0ef69297d1 Server support for unsubscribing/resubscribing of lobby messages. Not yet used by the client. 2008-05-11 21:41:30 +00:00
lotodore 5beaa816b4 Moving third party sources to third_party folder so that they can be easily distinguished. This should help package maintainers. 2008-03-23 10:36:17 +00:00
lotodore e107cf98fa Network timeout system also works from within a game now. 2008-03-06 15:27:31 +00:00
lotodore 9f0d204f56 First test version with network timeout. Only activity timeout and global timeout, no game admin timeout yet. Set to test values (will disconnect rapidly).
Modified method for init timeout (if session cannot be established) - now using one non-modifiable timer for each session, and an additional timer which is reset whenever session data is received.
2008-03-04 23:47:45 +00:00
lotodore 7283431c8c Limit the avatar requests by the server - clients may only upload one avatar within a certain time. This is checked by IP address, so two players within the same NAT system might have to wait for a few seconds. 2008-02-24 12:56:39 +00:00
lotodore e0b6e16994 Added uptime stat in admin irc. 2007-11-28 23:31:34 +00:00
lotodore 49162870a1 Use one sender thread for everything, as there may occur conflicts with multiple sender threads. This is a temporary solution, the best solution would be having multiple sender threads, but sending all packets for the same target using the same thread, so that no packets are corrupted. 2007-11-22 19:11:45 +00:00
lotodore 6489f28e93 Remove sender thread for avatars, it caused loads of problems, one of these being that packets were "destroyed" because half-sent packets were made invalid. Use main sender instead. 2007-11-22 17:56:49 +00:00
lotodore bc16e26616 Use server manager to allow SCTP and TCP at the same time. 2007-11-16 22:34:38 +00:00
lotodore a24a93caba Use unix linefeeds for all files. Finally. It's about time. 2007-11-16 15:24:25 +00:00
lotodore f428fb7904 Fixed linefeeds. 2007-11-16 15:01:40 +00:00
lotodore cdd21250de Added support for password protected irc channels. Added server IRC mode for admin use, to allow requesting statistics and kicking players. 2007-11-16 00:58:23 +00:00
lotodore 82a1be763b Use several sender threads with load balancing for sending the avatars. Remember last failed send operation (not yet a list, just the last) and cancel any more low prio sends to that sender. 2007-11-14 22:11:04 +00:00
lotodore 5328bf082f Use boost::shared_ptr instead of std::auto_ptr where threads are involved, because std::auto_ptr is not thread safe. 2007-11-14 13:19:28 +00:00
lotodore d905359251 Store server statistics data in a log file and reload it when the server is restarted. 2007-11-11 15:58:35 +00:00
lotodore b0524a59ff Fixed two race conditions. 2007-10-30 21:25:10 +00:00
lotodore 219a922c9e Fixed crash in the server which was caused by not waiting long enough for the termination of threads. 2007-10-29 11:57:17 +00:00
lotodore f821f9c0a4 No longer delay closing of sessions (not needed any more). 2007-10-28 15:21:24 +00:00
lotodore cdea81b2ba Fixed sender again, as it did not work when sending errors. 2007-10-28 15:06:57 +00:00
lotodore fa7af40a49 Fixed a very nasty bug concerning the sender thread. SOCKETs were assumed to be kind of unique, but Windows tends to return the socket number of a socket which was just closed as new socket number in accept. This led to very strange behavior when the server was flooded with inits, because the sender thread still had entries for this socket number (which were not removed because they should just fail).
No longer use socket as key in maps, instead, use the session id. Only use the session id in the sender thread, "resolve" it to the socket only in the moment when it is needed. Outstanding requests will be detected to have an invalid session id then.
Also, as side effect, fixed an issue with two callback classes which were named the same and caused unexpected behavior.
2007-10-28 12:53:54 +00:00
lotodore ae33299758 If a client does not initialize properly within a certain time, remove the network session. 2007-10-26 14:54:57 +00:00
lotodore d0c34c572b Automatically cleanup cache once a day on the dedicated server. 2007-10-25 21:20:35 +00:00