RoosterDragon aa3024f1f8 Fix thread-safety and dispose issues in NetworkConnection.
- Calling Close() on a TcpClient is documented to also close the underlying sockets and streams for us. This means we can avoid also calling socket.Client.Close() and generating exceptions on mono.
- TcpClient is not thread-safe. However the NetworkStream returned by GetStream() is thread-safe for a single reader/single writer scenario. If we create and dispose the client on the calling thread, and pass the NetworkStream into the thread we spawn for reading, then we can avoid thread-safety issues incurred by trying to Close() the connection from another thread.
- The clean shutdown means we don't need to make the dodgy Thread.Abort() call as it will end normally, and that means we don't need a finalizer to ensure the thread is killed off.
- Refactor how receivedPackets work in EchoConnection to avoid lock(this).
- Mark connectionState and clientId as volatile since they are set from another thread.
2017-02-21 14:10:06 +00:00
2017-02-17 20:53:17 +00:00
2013-07-07 11:16:59 +02:00
2016-09-05 16:35:42 -05:00
2016-01-24 10:58:31 +01:00
2016-10-06 06:23:42 +02:00
2017-01-31 21:10:32 -06:00
2016-10-24 13:49:51 -06:00
2010-02-16 21:20:41 +13:00
2015-07-05 19:07:42 +02:00
2017-02-12 01:33:22 +01:00
2017-02-12 01:33:22 +01:00
2016-12-31 23:46:13 -06:00
2015-03-19 17:20:34 +00:00

OpenRA

A Libre/Free Real Time Strategy game engine supporting early Westwood classics.

Please read the FAQ in our Wiki and report problems at http://bugs.openra.net.

Join the Forums for discussion.

Play

Distributed mods include a reimagining of

  • Command & Conquer: Red Alert
  • Command & Conquer: Tiberian Dawn
  • Dune 2000

Check our Playing the Game Guide to win multiplayer matches.

Contribute

Bountysource

  • Please read INSTALL.md and Compiling on how to set up an OpenRA development environment.
  • See Hacking for an overview of the engine.
  • To get your patches merged, please adhere to the Contributing guidelines.

Mapping

  • We offer a Mapping Tutorial as you can change gameplay drastically with custom rules.
  • For scripted mission have a look at the Lua API.
  • If you want to share your maps with the community, upload them at the OpenRA Resource Center.

Modding

Support

  • Sponsor a mirror server if you have some bandwidth to spare.
  • You can immediately set up a Dedicated Game Server.
  • Fund development by creating Bounties on specific tasks.

License

Copyright 2007-2017 The OpenRA Developers (see AUTHORS) This file is part of OpenRA, which is free software. It is made available to you under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. For more information, see COPYING.

Description
No description provided
Readme 234 MiB
Languages
C# 79.3%
Lua 16%
Fluent 3.1%
Shell 0.6%
Objective-C 0.2%
Other 0.5%