My favorite uLink, 1.5.6 (2014-01-02).

105 views
Skip to first unread message

Aidin Abedi

unread,
Jan 1, 2014, 10:48:49 PM1/1/14
to unitypark-news

Happy New Year Dear Awesome Developers!


If you’re reading this, we’d like to thank you! During 2013, over 1 billion players used uLink to connect to a game server and between 7-14 million do this on a daily basis. Only thanks to you has uLink become the most played network engine for the Unity Game Engine!


We are working hard on a big update, 1.6.0, but before we can release that we want to roll out an important maintenance version, which is packed with both fixes and improvements. Unfortunately due to some necessary security changes, 1.5.6 is not network compatible with 1.5.5 or older. This means that a client running 1.5.6 can only connect to a server also running 1.5.6, and vice versa. We highly recommend upgrading to avoid any possible vulnerabilities.



uLink 1.5.6 Lina (2014-01-02) [Windows] [Mac] [Linux (tools only)]





Improvements:


  • Added new property NetworkPlayer.securityStatus which returns the new enum NetworkSecurityStatus to get more insight into the security states and their transition status.

  • Added default log writer implementations as static methods in NetworkLog, in case any custom overrides want to reuse them.

  • Added NetworkUtility.IsLoopbackAddress to determine if IP address is localhost/127.0.0.1/etc.

  • Improved code documentation in uLinkInstantiatePool, to understand the implications on callbacks and messages when pooling prefab instances.

  • Added more useful and debug logging for when a handover timeouts and if the BitStream pool is exhausted.

  • Added more debug logging for network socket creation and other low level events.

  • Added logging of the uLink version if debug log level is enabled.

  • Added additional sanity checks to arguments in method calls to NetworkP2P.

  • Optimized low level message parsing and handling.

  • Improvements to the Unity’s Network to uLink Converter:

    • Explicitly tells the Unity Editor and Garbage collector to release any unused objects after converting each asset to save memory consumption.

    • Save changes to each prefab, as they are being done. So the progress is not lost if the converter is aborted.


Fixes:


  • Fixed minor truncation bug when denying client approval with custom error code NetworkConnectionError.UserDefined1 or higher.

  • Fixed issue with internal extensions for UnityEngine.Object turning up in MonoDevelop's intellisense.

  • Improved safety of parsing your external IP reported by the MasterServer.

  • Fixed issue with handing over a client in the same LAN to another server on the same machine (i.e. loopback address).

  • Fixed issue with serializing arrays which are null references. They are serialized as empty arrays instead, this will change in 1.6 as null will be serialized as a separate state.

  • Fixed black GUI rendering bug in the editor window “Server Authentication Generator”.

  • Fixed corruption of unreliable messages during special circumstances, which resulted in a error message “Trying to read past buffer size”.

  • Fixed issue with deserializing a struct in the default generated BitStreamCodec.

  • Fixed possible DoS vulnerabilities which can be exploited by sending specially crafted bad packets.

  • Fixed so that if the other side thinks we’re connected (for example after we’ve been restarted) they will be disconnected immediately instead of having to wait for time out.

  • Fixed issue with properly flushing unsent messages when disconnect is called.

  • Fixed so we still handle incoming RPCs even if status is Disconnecting, because their might be some lingering or resends.

  • Fixed issue when both peers are trying to connect (or reconnect) at the same time.

  • Fixed so that connecting is much more strict and late requests or new requests can’t be misinterpreted.

  • Fixed possible vulnerability against IP-spoofed packets.

  • Fixed vulnerability against possible man-in-the-middle attack, which could turn off authentication.

  • Fixed possible race condition when server disables security even though the client might still send encrypted RPCs.

  • Fixed the issue with having the MasterServer and gameserver(s) in the same LAN, but an external client.

  • Fixed bug in Network.HasPublicAddress and NetworkUtility.IsPublicAddress regarding IP range 172.16.0.0 - 172.31.255.255.

  • Fixed so that If a RPC method (i.e. game logic) throws an exception, it will not affect uLink.

  • Added sanity check for calling Network.Destroy on an already destroyed object.

  • Fixed issue with client sometimes unnecessarily requested for more allocatable viewIDs.


Changes:


  • Changed to prioritize ping/pong messages, to avoid disconnect if timeout delay is low.

  • Changed GC major spike warning for incoming messages from log level info to warning.

  • Changed security connection timeout error from NetworkConnectionError.RSAPublicKeyMismatch to ServerAuthenticationTimeout.

  • uLink 1.5.6 is NOT network connection compatible with uLink 1.5.5 or older, because of fixes in the connection handshake protocol. This means a client running 1.5.6 can only connect to a server also running 1.5.6, and vice versa.



Sincerely,

Aidin


Aidin Abedi

unread,
Jan 3, 2014, 11:05:43 AM1/3/14
to unitypark-news

Hello My Favorite Developers!


We’ve just shipped a minor hotfix version. Includes some minor fixes which were reported today.



uLink 1.5.6.1 Lina (2014-01-03) [Windows] [Mac] [Linux (tools only)]





Fixes:


  • Fixed non-critical error when closing a server while client is still connected.

  • Switched back the Snowbox project’s default platform to "Standalone".

  • Fixed missing icons for the tools.




Cheers,

Aidin


Reply all
Reply to author
Forward
0 new messages