* WebSocket-based data transfer system
* Move resource downloads/uploads to the new transfer system
Should drastically increase the permitted practical size
* Transfer impl for Lidgren
* Async impl for receive stream
* Use unbounded channel for Lidgren
* Add metrics
* More comments
* Add serverside stream limit to avoid being a DoS vector
* Fix tests
* Oops forgot to actually implement sequence channels in NetMessage
* Doc comment for NetMessage.SequenceChannel
* Release notes
Similar to the previous changes to player sessions, but now one layer lower.
Fixed ServerSendToAll from the relevant callbacks sending to a disconnected channel.
* Initial commit
* Add tile rotation/mirror perms
* Nicer UI for the rotation
* Review fixes (also seemed to have missed applying the serialization reading oops)
* One less byte, one less struct size!
* Pretty sure it goes here too
* Fix error
This has always been in the code but commented out for debugging. Now it's actually logging to Verbose level. Also the log level is "net.packet" now instead of just "net". Also it logs received size too.
This makes use of the new IsLogLevelEnabled to avoid the perf overhead when not being used.
* New HWID system prep
* Allow HWID to be disabled.
Both client and server can now request HWID to be disabled.
On the server via CVar, if disabled the client won't send it.
On the client via env var, if disabled it won't be sent to the client.
This involved moving legacy HWID to be sent in MsgEncryptionResponse instead of MsgLoginStart. This means the legacy HWID won't be available anymore if the connection isn't authenticated.
* Fix tests
* Fix another test
* Review
* Thanks Rider
In profiles of RMC-14, encrypting network messages accounted for ~8% of main thread time. That's a lot.
Each NetChannel has an "encryption channel" which gets processed on the thread pool.
* Warning fixes in Robust.Shared
* Robust.Client warning fixes
* Fix test failure
Test failures were due to broken system registrations for the client RobustUnitTest. It was accidentally registering some server systems, which means DebugPhysicsSystem wasn't gettings its dependencies properly.
Fixing this meant pulling half a dozen extra dependencies that client ContainerSystem and TransformSystem are supposed to have, but didn't.
WHY WAS THIS A BYTE.
This prevented having more than 255 people on a server, beyond that the game might get stuck as people's player states wouldn't necessarily get sent.
* Add ability to add structured deny data to NetConnectingArgs.
Builds on the (horrifying) NetStructuredDisconnectMessages so that content can do more stuff.
To be used by SS14 to throttle people when they try to connect to a full server.
* Completely rewrite NetStructuredDisconnectMessages
So this class was a mess, and it was so bad it wasn't usable from content! System.Text.Json isn't sandbox safe (and I don't want to look into that right now), so the previous API surface of "pass the JsonNode around everywhere" just didn't work at all for content.
I decided the easiest solution would be to completely rewrite the entire thing to be a layer over a Dictionary<string, object> instead. This warranted a complete rewrite of the API, which should be fine as I doubt anybody was using it anyways.
Also, fully tested.
Happens if you just type "tp:to<space>" into the console.
Toolshed can fail to provide completion results, in which case a null propagates and possibly crashes the server.
* Saving work
* Move shit to engine
* lord
* merg
* awa
* bql is kill
* forgot the fucking bike rack
* bql is kill for real
* pjb will kill me
* aughfhbdj
* yo ho here we go on my way to the MINES
* a
* adgddf
* gdsgvfvxshngfgh
* b
* hfsjhghj
* hbfdjjh
* tf you mean i have to document it
* follow C# standards
* Assorted cleanup and documentation pass, minor bugfix in ValueRefParser.
* Start porting old commands, remove that pesky prefix in favor of integrating with the shell.
* Fix valueref up a bit, improve autocomplete for it.
* e
* Toolshed type system adventure.
* a log
* a
* a e i o u
* awa
* fix tests
* Arithmetic commands.
* a
* parse improvements
---------
Co-authored-by: moonheart08 <moonheart08@users.noreply.github.com>
All HttpClient usages in the engine now use Happy Eyeballs, same implementation as the launcher.
Makes a IHttpClientHolder type so content can profit from this technology too. Didn't make use of this in all HttpClient usages in the engine itself, due to varying circumstances making it annoying to refactor.