* Interface changes:
Replaced all CSteamIDs with SteamNetworkingIdentity, which is an abstract concept.
Added IPv6 support. This has not been tested at this time, but all the basics
are there and any issues should be small bugfixes.
Improved and standardized connection debug names. You can set a debug name for a connection,
and the full debug string, which includes the Connection ID, transport-specific data, and
your name (if any) are printed consistently in logging messages and this name is also present
in SteamNetConnectionInfo_t. Connection handles are now the same as the local ConnectionID
on the wire. This makes debugging a lot easier.
GetListenSocketInfo renamed to GetListenSocketAddress and now actually does something.
Split out P2P and ordinary UDP listen sockets into two seperate objects. This simplifies
the opensource code (since P2P is not support)
* Misc internal code cleanup:
Broke up CCrypto monolith, so that we can more easily and cleanly:
- Share what we really want to share with Steam. Mainly some text parsing of keys, etc.
- Replace the actual crypto primitives with another provider (e.g. libsodium)
Delete a whole bunch of unused and messy cruft that was left when we ripped this out from Steam,
as well as code and messages specific to relayed connections (supported only on Steam)
Switch a bunch of maps to hashmaps instead of red/black tree maps. The CUtlHashMap class comes
from Steam and is designed to scale to very large size (N in the millions), and if the table
needs to be rehashed, the cost is amortized instead of triggering a large cost all at once.
This functionality is not needed. Nor do we need stable handles, so it would be better to use
a table based on open addressing. That would be a small optimization and also allow us to
get rid of bitstring.*, which unfortunately got added as a result of this change.
Added standalone IPv6 address parsing files: ipv6text.*. These are plain C and do not have
any dependencies, and could be split out, since they are independenctly useful and, unlike
all of our other utility routes (e.g. tier0, tier1, etc), actually worthy of being used
outside of Valve.