Placeholder-Software / Dissonance

Unity Voice Chat Asset
71 stars 5 forks source link

Dissonance issues with players disconnecting and reconnecting #55

Closed jackoshea-dev closed 6 years ago

jackoshea-dev commented 6 years ago

Context

Hi, I have recently implemented Dissonance into my Unity project using UNet High Level API. My project currently supports players being able to join and disconnect from a host server as they please and this has started causing issues with Dissonance. Upon first connection, Dissonance works perfectly and all players have no issues hearing and communicating with each other. It's when a player leaves and reconnects that I'm starting to see some issues.

Expected Behavior

When a player leaves and reconnects I would like for dissonance to resume working as it did when they first connected. This also begins to cause issues with other players ability to hear each other so I feel like there is something going wrong on the server.

Actual Behavior

The reconnecting player can no longer broadcast to other players or receive audio even though the 'Voice Broadcast Trigger' and 'Voice Receipt Trigger' are enabled. I have noticed that upon connecting to the server again that the client still see's their previous player ID as a peer under the Dissonance Comms Component on the DissonanceSetup GameObject. I feel this is contributing to the issue as these peer entries continue to stack as the client continues to disconnect and reconnect. Another note is that as this only happens on the client, it is not on the server, making me think that this issue may be the result of de-synchronisation between the server and client ?

Steps to Reproduce

This problem can be reproduced within the Dissonance demo scene

  1. Build the demo scene and run multiple instances on the same computer or separate computers.
  2. Connect all players through localhost or over a local IP.
  3. Ensure all players can correctly communicate with each other, this step may be difficult off one PC as multiple instances all working off the same microphone will cause intense feedback.
  4. Disconnect one player and reconnect them, this should display the behaviour outlined in the 'Actual Behaviour' section of this post. The problem has definitely been replicated if there is an extra peer entry on all clients, to check this one client should be ran through Unity.

Your Environment

Final Notes

This is quite a pressing issue as this project is on a deadline, any help would be much appreciated.

Thanks for your time, Jack

martindevans commented 6 years ago

Hi Jack,

I'll get right on trying to reproduce this in the demo scene. Since it's urgent you won't have time to wait for the next release of Dissonance on the asset store, could you email me your order number and then I can send you a new build once the problem is fixed.

martindevans commented 6 years ago

Unfortunately I can't reproduce this using the Dissonance 3.0.2 HLAPI demo scene. My procedure was:

  1. Create 3 peers, the editor is the host
  2. Talk from all three peers to check that voice is working
  3. Click disconnect on a peer
  4. Connect with that instance again, confirm that the editor only shows 3 clients
  5. Speak from all three clients to confirm speech is working

Is this sequence something you would have expected to reproduce the problem?

Here's a short video of a test (watch for the pulsing blue orbs indicating speech is working):

2017-09-25_14-35-08

josemayi commented 6 years ago

I had this same exact issue. When the server was hosted on the same pc as the clients it worked fine. However, if I put the server instance on some other computer, my client instances are able to connect once. If I stop and replay the clients it results in an error trying to connect to the server

josemayi commented 6 years ago

To add to my previous message, the server seems to not be able to remove clients correctly on my end upon stoping them (if hosting the server instance elsewhere)...It keeps throwing an error... saying something along the lines that a client with that name had already been added to the table with id 0

martindevans commented 6 years ago

I'm setting up a test between my laptop and my PC now to see if I can reproduce this. My theory at the moment is some events are happening out of the expected order - exacerbated in the networked situation by natural networking latency.

Are you getting this error by disconnecting and then immediately reconnecting? i.e. reconnecting and triggering the connection logic before the HLAPI has sent the disconnect event to the server.

josemayi commented 6 years ago

I disconnect then reconnect after maybe two minutes. Also, to increase latency make sure you have your test running on separate Networks... maybe one in your Wi-Fi and another one in a hotspot using your cellular network for example...accessing a public IP instead of a private

josemayi commented 6 years ago

But unfortunately I don't think this is a latency issue. Especially since the way my product is set up it takes about two minutes before the user has to reconnect upon starting my game.

josemayi commented 6 years ago

Forgot to mention my issue is using low level networking API

martindevans commented 6 years ago

Ah we might be in luck. Just a few days ago I fixed a bug to do with players leaving behind a bit of state on the server when they quit which was never cleaned up - my guess is that this is related to that.

When the player rejoins will they have the same ID as last time? Either because you're using the same Dissonance components as last time, or because you explicitly set the Dissonance player name to something which doesn't change. If you are then when they reconnect they'll trigger that bug (the player runs the connection logic but encounters some of the state which wasn't torn down from last time, gets confused and crashes).

A fix for this has been merged into the dev branch, so if you email me your order number I can give you a build with that fix included.

Also, to increase latency make sure you have your test running on separate Networks... maybe one in your Wi-Fi and another one in a hotspot using your cellular network for example

Check out clumsy it makes these kind of networking tests so much easier to set up :D

josemayi commented 6 years ago

Will check it out thanks :). The issue though is a bit weird...my understanding is if I dont set a player ID it will use a new guid. Which should be the case right now as all I do is drop the dissonance prefab and let it do its thing. Ok, I'm on the road right now, but sometime tonight I'll send email you the order number

martindevans commented 6 years ago

if I dont set a player ID it will use a new guid

That's correct. When the DissonanceComms component is first started it sets a GUID name for itself. It then re-uses this ID forever (until it is destroyed).

So it all comes down to if you destroy and recreate the components between sessions. If you do then you unintentionally sidestep the bug because Dissonance assigns a new ID to the client each time (so the server never sees it as a duplicate).

josemayi commented 6 years ago

Yep, I definitely agree which is why I thought it was weird that I had the issue at all. By the way, that "email me" link does not appear to work...takes me to a "Not Found" page.

martindevans commented 6 years ago

Oops, here's the mail me link again, this time with the correct formatting.

martindevans commented 6 years ago

Can I check if either of you guys have had this issue since you've been using the test version I sent you? I'll be putting together a new release next week and I'll mark this as closed if it's all working for you :)

josemayi commented 6 years ago

No more issues thus far

LordSkittles commented 6 years ago

Hey Martin. I have taken over for Jack handling this issue, and I am currently in the process of getting a log file for you so you can actually see the editor log that is being produced on the built application.

The strange thing with this issue is almost impossible to track down. Everything I do changes the way it reacts, I'm hoping the log I am about to produce will shed more light on the issue.

LordSkittles commented 6 years ago

Here is the log. (Output from adb) so it is a little weird, but readable) log.txt

What concerns me is how many lines are like this:

[Dissonance:Recording] CapturePipelineManager: Detected a frame skip of 200.5512ms, forcing reset of Microphone capture pipeline

This leads me to believe that the issue may be that dissonance is struggling to send the packets from the android device?

martindevans commented 6 years ago

Hi LordSkittles,

If this is being caused by the frame skip detection then I think we've already got a fix for this in the next version (which should be available within a week). The frame skip detector exponentially backs off so that it will never detect many skips in a row. In the meantime I suggest you simply comment out the skip detection (it's not critical). Find this code in Assets/Plugins/Dissonance/Core/Audio/Capture/CapturePipelineManager.cs:

private bool DetectFrameSkip(float deltaTime)
{
   // If frame rate is less than 8 frames per second reset the transmission pipeline. If FPS is actually 8 then this will break
   // voice transmission (due to reset every frame) but that's fine because we can't really run good voice at 8fps anyway. In the
   // more likely case that this was just a stutter in frame rate it will reset the pipeline and fix the mic desync.
   var skip = deltaTime > 0.125f;
   if (skip)
      Log.Warn("Detected a frame skip of {0}ms, forcing reset of Microphone capture pipeline", deltaTime * 1000f);
   return skip;
}

And simply make it return false.

jackoshea-dev commented 6 years ago

Hi Martin, thanks for the response. After altering that code it does seem that microphone reliability is much better. However now it seems packets are being sent with the incorrect session id which isn't allowing clients to hear each other once they disconnect and reconnect.

The error message that's happening repeatedly on the server after a client reconnects now is '[Dissonance:Network] HlapiServer: Received a packet with incorrect session ID. Expected 951585607, got 2027750816. Resetting client.'

I've seen another issue thread here, I feel this is the exact same issue I'm now experiencing so I will subscribe to that issue thread and keep an eye out for a fix. If I could also receive the new Dissonance build when it's submitted to the store that would be extremely appreciated.

Thanks for the help, Jack

martindevans commented 6 years ago

If you want to email me your order number I can send you the latest build right away. Otherwise it should be on the store in about a week :)

martindevans commented 6 years ago

Dissonance 3.0.3 just went live on the asset store with the fix for the players disconnecting and the exponentially backed off frame detector. I'll close this issue now, feel free to re-open this if either continues to be a problem.

LordSkittles commented 6 years ago

Hey Martin,

We are still encountering the issue mentioned by Jack.

The error message that's happening repeatedly on the server after a client reconnects now is '[Dissonance:Network] HlapiServer: Received a packet with incorrect session ID. Expected 951585607, got 2027750816. Resetting client.'

I have managed to track down the issue and it appears to be caused by a race condition of the server attempting to send a disconnection packet to the client after the client has reconnected. The is happening at:

Dissonance.Integrations.UNet_HLAPI.HlapiServer:Send(ArraySegment`1, HlapiConn, Byte) (at Assets/Dissonance/Integrations/UNet_HLAPI/HlapiServer.cs:113)
Dissonance.Integrations.UNet_HLAPI.HlapiServer:SendReliable(HlapiConn, ArraySegment`1) (at Assets/Dissonance/Integrations/UNet_HLAPI/HlapiServer.cs:84)
Dissonance.Networking.BaseServer`3:SendReliable(List`1, ArraySegment`1) (at Assets/Plugins/Dissonance/Core/Networking/BaseServer.cs:168)
Dissonance.Networking.Server.ServerRelay`1:ProcessPacketRelay(PacketReader&, Boolean) (at Assets/Plugins/Dissonance/Core/Networking/Server/ServerRelay.cs:72)
Dissonance.Networking.BaseServer`3:NetworkReceivedPacket(HlapiConn, ArraySegment`1) (at Assets/Plugins/Dissonance/Core/Networking/BaseServer.cs:221)
Dissonance.Integrations.UNet_HLAPI.HlapiServer:OnMessageReceivedHandler(NetworkMessage) (at Assets/Dissonance/Integrations/UNet_HLAPI/HlapiServer.cs:43)
UnityEngine.Networking.NetworkIdentity:UNetStaticUpdate()

This function is returning false, causing SendReliable (line 82) in the same class (HlapiServer) to set the internal value _fatalError (line 87) to false. Then, the next frame the HlapiServer class's Update (line 65) function is called and will take the _fatalError variable and return ServerState.Error (line 68). This causes the BaseCommsNetwork class to restart the server, setting a new session ID, but the server doesn't seem to be letting connected/connecting/future clients aware of the new session ID so it causes this error.

Hope all this information helps solve the issue!

Also attached is a copy of the console log for the project that was acting as a server. EditorLog.zip

Cheers, James.

martindevans commented 6 years ago

Hi James,

Sorry to hear this is still a problem, I'll get right on investigating it first thing tomorrow.

Just to clarify. Is this the sequence of events:

  1. Player connects, everything is fine
  2. Player disconnects (does the server/other client properly show them as gone at this point?)
  3. Player reconnects
    • Server shows the incorrect session ID message
    • Server instantly dies and is restarted
  4. After the restart I would expect the server to print the wrong session message a few more times (as it kicks all of the clients and forces them to reconnect) and for functionality to restore itself. What actually happens?

A couple of questions:

By the way I know you mentioned in the initial post in this thread that your project is on a deadline. If that deadline is looming then I think you can probably work around this by destroying and recreating the dissonance objects (all of them, including triggers) when you leave the session. That way no one ever really reconnects, because it's always a new HLAPI connection and a new Dissonance player.

LordSkittles commented 6 years ago

Hey Martin,

That sequence is close, the issue actually starts happening the moment a client disconnects. However, it is not consistent, the setup I find reproduces the issue best is having a PC as the server, then two separate android phones connect as clients. Then, have one disconnect and reconnect, then the second one disconnect and reconnect (note up until this point no issues), then the first one disconnect. It is at this point that the issue appears.

The stacktrace for the Incorrect session ID is split up into 3 stacktraces they are:

  1. https://pastebin.com/2FL3C1vm
  2. https://pastebin.com/f1T7eMPh
  3. https://pastebin.com/GCNV8A1p

This stacktrace appears directly after the following 3 stacktraces (in this order):

  1. https://pastebin.com/heeHPHda
  2. https://pastebin.com/s95Z6AeT
  3. https://pastebin.com/8g2dqyTx

We do have a deadline yes, the deadline for the project at this point is the end of this month (October), we would like to have dissonance asap so we can integrate it and remove as many bugs as possible.

Cheers and greatly appreciated, James

martindevans commented 6 years ago

A bit of a progress update on this issue.

Unfortunately I couldn't manage to reproduce any problems with the session ID. I'm a little confused about some of your stack traces.

Server error

So the server error is pretty simple. The server encounters some kind of internal error (from your previous message I guess because it failed to send a reliable message, I've started working on some changes related to this). Due to the error the BaseCommsNetwork kills the server and restarts it (with session ID 1450208290).

Session

This is what's confusing me. There are four session IDs mentioned here:

Session IDs are only ever set by the server. By this point in your logging has the server restarted 4 (or more) times? If not I'm going to have to track down where these extra session numbers are coming from!

I did find a slightly different issue which may be related. If a player disconnects and then reconnects before the server has removed them (which is a fairly large window on HLAPI, up to ~5 seconds) then the server can end up kicking out the reconnected player because it's trying to get rid of the old data about them from the first time they were connected. I have a pull request open for this and once Tom has reviewed it I can send you a new build with that patch included.

martindevans commented 6 years ago

Hi James,

Tom has merged some fixes of mine today. There were two things which may impact you:

Since I can't reproduce your issue I can't be sure if these will help but I'm hoping they will at least narrow down the issue a little. If the server is handling errors more gracefully it'll create a little less noise in the logs.

I don't think I have your email so I've sent the build to Jack :)

jackoshea-dev commented 6 years ago

Hey Martin,

James isn't in the office today so I'm going to be importing your new packages and doing some testing. Sounds like the new changes should definitely help us out, in previous tests we have definitely rapidly disconnected and reconnected so this was probably an issue all along.

I'll get back to you with feedback as soon as possible and let you know how I go.

Thanks again, Jack

martindevans commented 6 years ago

Hi Jack, I've just noticed an issue in one of my bugfixes from yesterday. Don't bother testing with that build I sent you, I'll send you another build with that fixed first :)

LordSkittles commented 6 years ago

Hey Martin,

We tested your build and it didn't work for us. However, we managed to track down the issue ourselves and make a work around. Jack will email you a document detailing the issue, the fix and we also will be supplying a project with the working fix implemented.

Cheers, James

martindevans commented 6 years ago

I'm sorry that didn't work for you :(

Good work tracking down the issue though!

martindevans commented 6 years ago

Hi Guys, I was wondering if you had the details of the problem you located? I know you're on a deadline so no pressure if you've got more important things to be doing :)

LordSkittles commented 6 years ago

Hey Martin, sorry we attempted to send an email last Friday but it failed to deliver for some odd reason. We resent the email detailing the fix and the issue.

Cheers, James

martindevans commented 6 years ago

I've received it this time, thanks.

martindevans commented 6 years ago

I've been looking at your pdf but I don't quite understand the root cause of the problem. You say:

When a client disconnects, occasionally the client will disconnect before the server has sent any packets, preventing it from removing it from the connection list.

When you refer to 'connection list' I assume you mean the _addedConnections list in HlapiServer?

The intent is that we keep that in sync with the NetworkServer.connections list (as you've no doubt worked out) by removing items from _addedConnections which no longer appear in NetworkServer.connections. This is a proxy for disconnection events which we can't receive without modifying the NetworkManager class (which we don't want to do unless absolutely necessary, it would make setting up the Hlapi integration significantly more complex).

So is the fundamental problem that items aren't removed from the NetworkServer.connections quickly enough? Or even worse sometimes aren't removed from NetworkServer.connections at all?

morderkaine1 commented 6 years ago

Hi, I have been having this issue (or a similar one) as well. For me it happens when someone disconnects from the server, and from tests it might be only if talking is happening during the disconnect. This warning message gets spammed repeatedly when it happens

[Dissonance:Network] HlapiServer: Received a packet with incorrect session ID. Expected 1146703746, got 263488912. Resetting client.

And also this is in the log as well.

no free events for message in the queue no free events for message in the queue Failed to send internal buffer channel:1 bytesToSend:236 Send Error: NoResources channel:1 bytesToSend:236

It seems to happen when there are 3 or more people playing and one leaves - they don't need to reconnect for it to happen.

martindevans commented 6 years ago

Hi morderkaine,

I've just tried to reproduce this in 3.0.3 with no luck. With the HLAPI demo scene I connected 4 clients and then while holding down Push-To-Talk I disconnected one of the clients - nothing untoward happened on the server. Do you get the error in the HLAPI demo scene, or only in your game?

[Dissonance:Network] HlapiServer: Received a packet with incorrect session ID. Expected 1146703746, got 263488912. Resetting client.

This happens when a client sends a message to the server but the client uses the wrong session ID. All Dissonance packets (except the very first client->server handshake request) are prepended with the session ID which the server tells the client in the initial handshake reply. What's particularly odd is that you get this message spammed - the server sends back a message to the client telling it that the session ID is wrong and this should cause the client to disconnect itself and attempt to reconnect - so you should only get 2 or 3 of this message before the client catches up and disconnects itself.

Could you turn on Trace for Networking (Window > Dissonance > Diagnostic Settings) and capture a log where this happens? Make sure to turn it back down to Info afterwards - such a high logging level can badly impact performance.

no free events for message in the queue no free events for message in the queue Failed to send internal buffer channel:1 bytesToSend:236 Send Error: NoResources channel:1 bytesToSend:236

All of these messages seem to be saying basically the same thing - The HLAPI is running out of internal resources to send/receive messages on channel 1. If you send me that log I mentioned above hopefully there may be some useful stacktraces attached to these which will help me track it down.

morderkaine1 commented 6 years ago

Hi, I have done the test again and got a log of the issue. I have been doing it within my game which is using UNET with NAT punch-through with the MM relays turned off. It did take several tries of talking with 4 players connected together to duplicate it. In the log you can see a few times it started having issues but recovered, till at the end it was unable to recover and voice chat failed.

I am wondering if it might have to do with doing direct connect and not using the UNET MM relays, just because that is a recent change we did. However it also seems to require more than two players and a lot of our testing has been 1 on 1 matches.

On Mon, Nov 6, 2017 at 9:57 AM, Martin Evans notifications@github.com wrote:

Hi morderkaine,

I've just tried to reproduce this in 3.0.3 with no luck. With the HLAPI demo scene I connected 4 clients and then while holding down Push-To-Talk I disconnected one of the clients - nothing untoward happened on the server. Do you get the error in the HLAPI demo scene, or only in your game?

[Dissonance:Network] HlapiServer: Received a packet with incorrect session ID. Expected 1146703746, got 263488912. Resetting client.

This happens when a client sends a message to the server but the client uses the wrong session ID. All Dissonance packets (except the very first client->server handshake request) are prepended with the session ID which the server tells the client in the initial handshake reply. What's particularly odd is that you get this message spammed - the server sends back a message to the client telling it that the session ID is wrong and this should cause the client to disconnect itself and attempt to reconnect

  • so you should only get 2 or 3 of this message before the client catches up and disconnects itself.

Could you turn on Trace for Networking (Window > Dissonance > Diagnostic Settings) and capture a log where this happens? Make sure to turn it back down to Info afterwards - such a high logging level can badly impact performance.

no free events for message in the queue no free events for message in the queue Failed to send internal buffer channel:1 bytesToSend:236 Send Error: NoResources channel:1 bytesToSend:236

All of these messages seem to be saying basically the same thing - The HLAPI is running out of internal resources to send/receive messages on channel 1. If you send me that log I mentioned above hopefully there may be some useful stacktraces attached to these which will help me track it down.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/Placeholder-Software/Dissonance/issues/55#issuecomment-342173367, or mute the thread https://github.com/notifications/unsubscribe-auth/AWjLyh06d9Kk35N1R4yyvMXzxwjrz5dbks5szx5KgaJpZM4PiQz3 .

Initialize engine version: 5.6.3f1 (d3101c3b8468) GfxDevice: creating device client; threaded=1 Direct3D: Version: Direct3D 11.0 [level 11.1] Renderer: NVIDIA GeForce GTX 970 (ID=0x13c2) Vendor: NVIDIA VRAM: 3072 MB Driver: 23.21.13.8800 Begin MonoManager ReloadAssembly Platform assembly: E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\UnityEngine.dll (this message is harmless) Loading E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\UnityEngine.dll into Unity Child Domain Platform assembly: E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\Assembly-CSharp-firstpass.dll (this message is harmless) Loading E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\Assembly-CSharp-firstpass.dll into Unity Child Domain Platform assembly: E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\Assembly-CSharp.dll (this message is harmless) Loading E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\Assembly-CSharp.dll into Unity Child Domain Platform assembly: E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\Assembly-UnityScript.dll (this message is harmless) Loading E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\Assembly-UnityScript.dll into Unity Child Domain Platform assembly: E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\UnityEngine.UI.dll (this message is harmless) Loading E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\UnityEngine.UI.dll into Unity Child Domain Platform assembly: E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\UnityEngine.Networking.dll (this message is harmless) Loading E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\UnityEngine.Networking.dll into Unity Child Domain Platform assembly: E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\UnityEngine.Analytics.dll (this message is harmless) Loading E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\UnityEngine.Analytics.dll into Unity Child Domain Platform assembly: E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\NSpeex.dll (this message is harmless) Loading E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\NSpeex.dll into Unity Child Domain Platform assembly: E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\NATTraversalForUNET.dll (this message is harmless) Loading E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\NATTraversalForUNET.dll into Unity Child Domain Platform assembly: E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\Open.Nat.dll (this message is harmless) Loading E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\Open.Nat.dll into Unity Child Domain Platform assembly: E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\RakNetSwig.dll (this message is harmless) Loading E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\RakNetSwig.dll into Unity Child Domain Platform assembly: E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\System.Threading.dll (this message is harmless) Loading E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\System.Threading.dll into Unity Child Domain

Input initialized. desktop: 3840x2160 60Hz; virtual: 3840x2160 at 0,0 Initialized touch support. Platform assembly: E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\System.Configuration.dll (this message is harmless) Platform assembly: E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\System.Xml.dll (this message is harmless) UnloadTime: 0.876327 ms Fallback handler could not load library E:/Unity Builds/Wizball Playtest/WizardBall_PC_Data/Mono/openvr_api Fallback handler could not load library E:/Unity Builds/Wizball Playtest/WizardBall_PC_Data/Mono/.\openvr_api Fallback handler could not load library E:/Unity Builds/Wizball Playtest/WizardBall_PC_Data/Mono/openvr_api Fallback handler could not load library E:/Unity Builds/Wizball Playtest/WizardBall_PC_Data/Mono/libopenvr_api Fallback handler could not load library E:/Unity Builds/Wizball Playtest/WizardBall_PC_Data/Mono/.\libopenvr_api Fallback handler could not load library E:/Unity Builds/Wizball Playtest/WizardBall_PC_Data/Mono/libopenvr_api Fallback handler could not load library E:/Unity Builds/Wizball Playtest/WizardBall_PC_Data/Mono/openvr_api Fallback handler could not load library E:/Unity Builds/Wizball Playtest/WizardBall_PC_Data/Mono/.\openvr_api Fallback handler could not load library E:/Unity Builds/Wizball Playtest/WizardBall_PC_Data/Mono/openvr_api Fallback handler could not load library E:/Unity Builds/Wizball Playtest/WizardBall_PC_Data/Mono/libopenvr_api Fallback handler could not load library E:/Unity Builds/Wizball Playtest/WizardBall_PC_Data/Mono/.\libopenvr_api Fallback handler could not load library E:/Unity Builds/Wizball Playtest/WizardBall_PC_Data/Mono/libopenvr_api Fallback handler could not load library E:/Unity Builds/Wizball Playtest/WizardBall_PC_Data/Mono/openvr_api Fallback handler could not load library E:/Unity Builds/Wizball Playtest/WizardBall_PC_Data/Mono/.\openvr_api Fallback handler could not load library E:/Unity Builds/Wizball Playtest/WizardBall_PC_Data/Mono/openvr_api Fallback handler could not load library E:/Unity Builds/Wizball Playtest/WizardBall_PC_Data/Mono/libopenvr_api Fallback handler could not load library E:/Unity Builds/Wizball Playtest/WizardBall_PC_Data/Mono/.\libopenvr_api Fallback handler could not load library E:/Unity Builds/Wizball Playtest/WizardBall_PC_Data/Mono/libopenvr_api DllNotFoundException: openvr_api at (wrapper managed-to-native) Valve.VR.OpenVRInterop:GetInitToken () at Valve.VR.OpenVR.GetInitToken () [0x00000] in :0 at Valve.VR.OpenVR+COpenVRContext.CheckClear () [0x00000] in :0 at Valve.VR.OpenVR+COpenVRContext.VRSystem () [0x00000] in :0 at Valve.VR.OpenVR.get_System () [0x00000] in :0 at SteamVR_ControllerManager.Refresh () [0x00000] in :0 at SteamVR_ControllerManager.OnEnable () [0x00000] in :0 (Filename: Line: -1) DllNotFoundException: openvr_api at (wrapper managed-to-native) Valve.VR.OpenVRInterop:GetInitToken () at Valve.VR.OpenVR.GetInitToken () [0x00000] in :0 at Valve.VR.OpenVR+COpenVRContext.CheckClear () [0x00000] in :0 at Valve.VR.OpenVR+COpenVRContext.VRSettings () [0x00000] in :0 at Valve.VR.OpenVR.get_Settings () [0x00000] in :0 at SteamVR_Ears.OnEnable () [0x00000] in :0 (Filename: Line: -1) Fallback handler could not load library E:/Unity Builds/Wizball Playtest/WizardBall_PC_Data/Mono/libc Fallback handler could not load library E:/Unity Builds/Wizball Playtest/WizardBall_PC_Data/Mono/.\libc Fallback handler could not load library E:/Unity Builds/Wizball Playtest/WizardBall_PC_Data/Mono/libc Server Console Count: 1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) ServerConsole (ServerConsole) = ServerConsole (ServerConsole)? True (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Console DontDestroy requested (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Console Started (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) MatchMakingClient ListMatches :https://mm.unet.unity3d.com/json/reply/ListMatchRequest (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Setting up 4 worker threads for Enlighten. Thread -> id: 1f38 -> priority: 1 Thread -> id: 1b8 -> priority: 1 Thread -> id: 6c0 -> priority: 1 Thread -> id: 2e7c -> priority: 1 Platform assembly: E:\Unity Builds\Wizball Playtest\WizardBall_PC_Data\Managed\Mono.Security.dll (this message is harmless) NATHelper: Connected to Facilitator: 855684183977472447 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) OnDoneConnectingToFacilitator 855684183977472447 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) MatchMakingClient ListMatches :https://us1-mm.unet.unity3d.com/json/reply/ListMatchRequest (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Matches found = 0 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) matchList size = 0 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) End of OnMatchList (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Matches found = 0 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) matchList size = 0 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) End of OnMatchList (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) CreateHost 1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) CreateHost 2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) CreateHost 3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) connection.connectionId = 0 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 0 players on team 0, 1... picking 1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Unloading 5 Unused Serialized files (Serialized files now loaded: 0) WARNING: Shader Unsupported: 'Custom/Unlit/Transparent' - Pass '' has no vertex shader UnloadTime: 3.520127 ms Server Console Count: 2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) ServerConsole (ServerConsole) = ServerConsole (ServerConsole)? False (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Destroying new console (this) and returning (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) [Dissonance:Core] DissonanceComms: Loading default playback prefab (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) [Dissonance:Core] VoiceReceiptTrigger: Recalculating token activation: 1 tokens, activated: True (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) [Dissonance:Core] VoiceReceiptTrigger: Recalculating token activation: 1 tokens, activated: True (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) [Dissonance:Core] VoiceBroadcastTrigger: Recalculating token activation: 1 tokens, activated: True (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) [Dissonance:Network] HlapiServer: Constructing host. SessionId:929102652 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) [Dissonance:Network] HlapiServer: Connected (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) [Dissonance:Recording] WebRtcPreprocessingPipeline: Associated preprocessor with playback filter - but filter is not running (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) [Dissonance:Recording] MicrophoneCapture: Began mic capture (SampleRate:48000 FrameSize:960, Buffer Limit:2^13) (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) [Dissonance:Network] ConnectionNegotiator`1: Received handshake response from server, joined session '929102652' (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) [Dissonance:Recording] WebRtcPreprocessingPipeline: Associated preprocessor with playback filter - but filter is not running (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) [Dissonance:Core] VoiceBroadcastTrigger: Recalculating token activation: 1 tokens, activated: True (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) [Dissonance:Core] VoiceReceiptTrigger: Recalculating token activation: 1 tokens, activated: True (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Client 12 got name set request: UnauthenticatedUser (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP4 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP5 - 1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP6 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP4 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP5 - 1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP6 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) NullReferenceException: Object reference not set to an instance of an object at TestNetworkPlayerScript.OnStartLocalPlayer () [0x00000] in :0 at UnityEngine.Networking.NetworkIdentity.SetLocalPlayer (Int16 localPlayerControllerId) [0x00000] in :0 at UnityEngine.Networking.NetworkServer.SetupLocalPlayerForConnection (UnityEngine.Networking.NetworkConnection conn, UnityEngine.Networking.NetworkIdentity uv, UnityEngine.Networking.PlayerController newPlayerController) [0x00000] in :0 at UnityEngine.Networking.NetworkServer.InternalAddPlayerForConnection (UnityEngine.Networking.NetworkConnection conn, UnityEngine.GameObject playerGameObject, Int16 playerControllerId) [0x00000] in :0 at UnityEngine.Networking.NetworkServer.AddPlayerForConnection (UnityEngine.Networking.NetworkConnection conn, UnityEngine.GameObject player, Int16 playerControllerId) [0x00000] in :0 at ericNetworkManager.OnServerAddPlayer (UnityEngine.Networking.NetworkConnection conn, Int16 playerID) [0x00000] in :0 at UnityEngine.Networking.NetworkManager.OnServerAddPlayerMessageInternal (UnityEngine.Networking.NetworkMessage netMsg) [0x00000] in :0 at UnityEngine.Networking.NetworkConnection.InvokeHandler (Int16 msgType, UnityEngine.Networking.NetworkReader reader, Int32 channelId) [0x00000] in :0 at UnityEngine.Networking.NetworkServer.InvokeHandlerOnServer (UnityEngine.Networking.ULocalConnectionToServer conn, Int16 msgType, UnityEngine.Networking.MessageBase msg, Int32 channelId) [0x00000] in :0 at UnityEngine.Networking.ULocalConnectionToServer.Send (Int16 msgType, UnityEngine.Networking.MessageBase msg) [0x00000] in :0 at UnityEngine.Networking.ClientScene.AddPlayer (UnityEngine.Networking.NetworkConnection readyConn, Int16 playerControllerId, UnityEngine.Networking.MessageBase extraMessage) [0x00000] in :0 at UnityEngine.Networking.ClientScene.AddPlayer (UnityEngine.Networking.NetworkConnection readyConn, Int16 playerControllerId) [0x00000] in :0 at UnityEngine.Networking.ClientScene.AddPlayer (Int16 playerControllerId) [0x00000] in :0 at UnityEngine.Networking.NetworkManager.OnClientSceneChanged (UnityEngine.Networking.NetworkConnection conn) [0x00000] in :0 at NATTraversal.NetworkManager.OnClientSceneChanged (UnityEngine.Networking.NetworkConnection conn) [0x00000] in :0 at UnityEngine.Networking.NetworkManager.FinishLoadScene () [0x00000] in :0 at UnityEngine.Networking.NetworkManager.UpdateScene () [0x00000] in :0 at UnityEngine.Networking.NetworkIdentity.UNetStaticUpdate () [0x00000] in :0 (Filename: Line: -1) Unloading 198 unused Assets to reduce memory usage. Loaded Objects now: 4559. Total: 2.926626 ms (FindLiveObjects: 0.176031 ms CreateObjectMapping: 0.088654 ms MarkObjects: 1.631552 ms DeleteObjects: 1.029876 ms) RpcGenderchange OnTeamChange (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP4 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP5 - 1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP6 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) NATHelper: Something went wrong mapping port 6000->6000 (Udp) (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) NATHelper: Something went wrong mapping port 6000->6000 (Tcp) (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) NATTraversal: Timed out fetching ip from http://ipv6.icanhazip.com (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) MatchMakingClient Create :https://us1-mm.unet.unity3d.com/json/reply/CreateMatchRequest (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 1 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 1 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 1 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 1 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 1 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 1 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 1 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 1 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 1 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 1 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) connection.connectionId = 1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 0 players on team 0... picking 0 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Client 13 got name set request: UnauthenticatedUser (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) RpcGenderchange OnTeamChange (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 2 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 2 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 2 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 2 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 2 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 2 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 2 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 2 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 2 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 2 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 2 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) connection.connectionId = 2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 1 players on team 0, 1... picking 0 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 2 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Client 14 got name set request: UnauthenticatedUser (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) RpcGenderchange OnTeamChange (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) connection.connectionId = 3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 1 players on team 1... picking 1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Client 15 got name set request: UnauthenticatedUser (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) RpcGenderchange OnTeamChange (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Attempt to send to not connected connection {3} (Filename: Line: 362) Failed to send internal buffer channel:0 bytesToSend:146 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Send Error: WrongConnection channel:0 bytesToSend:146 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Attempt to send to not connected connection {3} (Filename: Line: 362) Failed to send internal buffer channel:1 bytesToSend:236 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Send Error: WrongConnection channel:1 bytesToSend:236 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) disconn: hostId: 0 connectionId: 3 isReady: False channel count: 4 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) MatchMakingClient SetMatchAttributes :https://us1-mm.unet.unity3d.com/json/reply/SetMatchAttributesRequest (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Empty player list given to NetworkServer.Destroy(), nothing to do. (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Disconnected in HLAPI (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) [Dissonance:Network] ServerRelay`1: Attempted to relay packet to unknown peer (3) (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) connection.connectionId = 3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 1 players on team 1... picking 1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 3 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Client 16 got name set request: UnauthenticatedUser (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) RpcGenderchange OnTeamChange (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) connection.connectionId = 4 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 2 players on team 0, 1... picking 0 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 4 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Client 17 got name set request: UnauthenticatedUser (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) RpcGenderchange OnTeamChange (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP1 teamNum=1 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP2 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) TP3 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 5 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 5 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 5 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) 5 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) Failed to send internal buffer channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Send Error: NoResources channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) Failed to send internal buffer channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Send Error: NoResources channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) Failed to send internal buffer channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Send Error: NoResources channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) Failed to send internal buffer channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Send Error: NoResources channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) Failed to send internal buffer channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Send Error: NoResources channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) no free events for message in the queue (Filename: Line: 477) 5 players found 2needed to start (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) Failed to send internal buffer channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Send Error: NoResources channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) Failed to send internal buffer channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Send Error: NoResources channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) Failed to send internal buffer channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Send Error: NoResources channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) Failed to send internal buffer channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Send Error: NoResources channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) Failed to send internal buffer channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Send Error: NoResources channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) Failed to send internal buffer channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Send Error: NoResources channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) Failed to send internal buffer channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Send Error: NoResources channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) Failed to send internal buffer channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Send Error: NoResources channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) Failed to send internal buffer channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Send Error: NoResources channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) Failed to send internal buffer channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Send Error: NoResources channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) Failed to send internal buffer channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Send Error: NoResources channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) Failed to send internal buffer channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Send Error: NoResources channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) Failed to send internal buffer channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Send Error: NoResources channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) Failed to send internal buffer channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Send Error: NoResources channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) no free events for message in the queue (Filename: Line: 477) Failed to send internal buffer channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) Send Error: NoResources channel:1 bytesToSend:295 (Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51) no free events for message in the queue (Filename: Line: 477) no free events for message in t
morderkaine1 commented 6 years ago

Hi, Just a quick note I turned the relays back on, still was able to reproduce the issue, still took several tries.

On Mon, Nov 6, 2017 at 8:40 PM, Jonathan Vlietstra < jonathanvlietstra@gmail.com> wrote:

Hi, I have done the test again and got a log of the issue. I have been doing it within my game which is using UNET with NAT punch-through with the MM relays turned off. It did take several tries of talking with 4 players connected together to duplicate it. In the log you can see a few times it started having issues but recovered, till at the end it was unable to recover and voice chat failed.

I am wondering if it might have to do with doing direct connect and not using the UNET MM relays, just because that is a recent change we did. However it also seems to require more than two players and a lot of our testing has been 1 on 1 matches.

On Mon, Nov 6, 2017 at 9:57 AM, Martin Evans notifications@github.com wrote:

Hi morderkaine,

I've just tried to reproduce this in 3.0.3 with no luck. With the HLAPI demo scene I connected 4 clients and then while holding down Push-To-Talk I disconnected one of the clients - nothing untoward happened on the server. Do you get the error in the HLAPI demo scene, or only in your game?

[Dissonance:Network] HlapiServer: Received a packet with incorrect session ID. Expected 1146703746, got 263488912. Resetting client.

This happens when a client sends a message to the server but the client uses the wrong session ID. All Dissonance packets (except the very first client->server handshake request) are prepended with the session ID which the server tells the client in the initial handshake reply. What's particularly odd is that you get this message spammed - the server sends back a message to the client telling it that the session ID is wrong and this should cause the client to disconnect itself and attempt to reconnect

  • so you should only get 2 or 3 of this message before the client catches up and disconnects itself.

Could you turn on Trace for Networking (Window > Dissonance > Diagnostic Settings) and capture a log where this happens? Make sure to turn it back down to Info afterwards - such a high logging level can badly impact performance.

no free events for message in the queue no free events for message in the queue Failed to send internal buffer channel:1 bytesToSend:236 Send Error: NoResources channel:1 bytesToSend:236

All of these messages seem to be saying basically the same thing - The HLAPI is running out of internal resources to send/receive messages on channel 1. If you send me that log I mentioned above hopefully there may be some useful stacktraces attached to these which will help me track it down.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/Placeholder-Software/Dissonance/issues/55#issuecomment-342173367, or mute the thread https://github.com/notifications/unsubscribe-auth/AWjLyh06d9Kk35N1R4yyvMXzxwjrz5dbks5szx5KgaJpZM4PiQz3 .

morderkaine1 commented 6 years ago

Hi Martin, I continued doing some tests and the warnings only show up on the console for the server, though it seems to cut of all voice chat. Also, from tests it seems to only happen when voice is actively being transmitted while someone clicks X in the game window to close the game. I was able to shut down 20 or so clients in a row with no problem while staying completely silent but when I was talking through the microphone while clicking X that caused the crash. I tried using OnApplicationQuit to disable all broadcast and receiver scripts on the disconnecting client but that didn't seem to help - though I am going to try it again and see if maybe adding a delay after helps.

On Mon, Nov 6, 2017 at 9:10 PM, Jonathan Vlietstra < jonathanvlietstra@gmail.com> wrote:

Hi, Just a quick note I turned the relays back on, still was able to reproduce the issue, still took several tries.

On Mon, Nov 6, 2017 at 8:40 PM, Jonathan Vlietstra < jonathanvlietstra@gmail.com> wrote:

Hi, I have done the test again and got a log of the issue. I have been doing it within my game which is using UNET with NAT punch-through with the MM relays turned off. It did take several tries of talking with 4 players connected together to duplicate it. In the log you can see a few times it started having issues but recovered, till at the end it was unable to recover and voice chat failed.

I am wondering if it might have to do with doing direct connect and not using the UNET MM relays, just because that is a recent change we did. However it also seems to require more than two players and a lot of our testing has been 1 on 1 matches.

On Mon, Nov 6, 2017 at 9:57 AM, Martin Evans notifications@github.com wrote:

Hi morderkaine,

I've just tried to reproduce this in 3.0.3 with no luck. With the HLAPI demo scene I connected 4 clients and then while holding down Push-To-Talk I disconnected one of the clients - nothing untoward happened on the server. Do you get the error in the HLAPI demo scene, or only in your game?

[Dissonance:Network] HlapiServer: Received a packet with incorrect session ID. Expected 1146703746, got 263488912. Resetting client.

This happens when a client sends a message to the server but the client uses the wrong session ID. All Dissonance packets (except the very first client->server handshake request) are prepended with the session ID which the server tells the client in the initial handshake reply. What's particularly odd is that you get this message spammed - the server sends back a message to the client telling it that the session ID is wrong and this should cause the client to disconnect itself and attempt to reconnect

  • so you should only get 2 or 3 of this message before the client catches up and disconnects itself.

Could you turn on Trace for Networking (Window > Dissonance > Diagnostic Settings) and capture a log where this happens? Make sure to turn it back down to Info afterwards - such a high logging level can badly impact performance.

no free events for message in the queue no free events for message in the queue Failed to send internal buffer channel:1 bytesToSend:236 Send Error: NoResources channel:1 bytesToSend:236

All of these messages seem to be saying basically the same thing - The HLAPI is running out of internal resources to send/receive messages on channel 1. If you send me that log I mentioned above hopefully there may be some useful stacktraces attached to these which will help me track it down.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/Placeholder-Software/Dissonance/issues/55#issuecomment-342173367, or mute the thread https://github.com/notifications/unsubscribe-auth/AWjLyh06d9Kk35N1R4yyvMXzxwjrz5dbks5szx5KgaJpZM4PiQz3 .

martindevans commented 6 years ago

Thanks for all those logs, I think I've finally managed to reproduce this issue! Even better, I can only reproduce this in Dissonance 3.0.3 and cannot reproduce it no matter how many times I try with the dev branch - hopefully that means the mitigations I added for LordSkittles/jackoshea-dev are working.

The problem seems to be around handling crashes in the server. The server should recover from crashes by restarting itself, kicking all clients (because they're now using the wrong session ID) and then all clients should recover from the kick by reconnecting - thus fully resetting the server and all clients when a server side error happens. However this doesn't always seem to happen correctly - some/all of the clients end up in a limbo state (I still need to investigate why) where they think they're connected, but aren't really, so they never send/receive voice successfully.

One of the changes I made previously was making the server less strict about failing to send messages. If a reliable send fails due to a timeout then the server considers this ok and continues working. It seems that the HLAPI generates a timeout for most disconnects (as you'd expect when slamming a connection closed by e.g. killing the client process), so we definitely don't want to cause a server restart whenever that happens! This probably doesn't fix the underlying issue with the clients in a limbo state, but does vastly reduce the number of server side errors that ever occur.

morderkaine1 commented 6 years ago

That sounds promising! Is a new release going to be going up soon? Or if not can I upgrade to the dev branch if its currently stable? Another idea is I was wondering if there was a 'hang up' function for Dissonance - something that could be called by the client to gracefully disconnect from voice chat without causing issues.

On Thu, Nov 9, 2017 at 10:33 AM, Martin Evans notifications@github.com wrote:

Thanks for all those logs, I think I've finally managed to reproduce this issue! Even better, I can only reproduce this in Dissonance 3.0.3 and cannot reproduce it no matter how many times I try with the dev branch - hopefully that means the mitigations I added for LordSkittles/jackoshea-dev are working.

The problem seems to be around handling crashes in the server. The server should recover from crashes by restarting itself, kicking all clients (because they're now using the wrong session ID) and then all clients should recover from the kick by reconnecting - thus fully resetting the server and all clients when a server side error happens. However this doesn't always seem to happen correctly - some/all of the clients end up in a limbo state (I still need to investigate why) where they think they're connected, but aren't really, so they never send/receive voice successfully.

One of the changes I made previously was making the server less strict about failing to send messages. If a reliable send fails due to a timeout then the server considers this ok and continues working. It seems that the HLAPI generates a timeout for most disconnects (as you'd expect when slamming a connection closed by e.g. killing the client process), so we definitely don't want to cause a server restart whenever that happens! This probably doesn't fix the underlying issue with the clients in a limbo state, but does vastly reduce the number of server side errors that ever occur.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/Placeholder-Software/Dissonance/issues/55#issuecomment-343191431, or mute the thread https://github.com/notifications/unsubscribe-auth/AWjLynM6FN1bLuw8Zrdk2TTklUbUie7hks5s0xtRgaJpZM4PiQz3 .

martindevans commented 6 years ago

That sounds promising! Is a new release going to be going up soon? Or if not can I upgrade to the dev branch if its currently stable?

I think we're currently planning to do it next week (assuming Tom merges all my PRs without requesting any changes). It usually takes ~3 days to go up on the store after we submit. If you want a copy of it sooner than that email (martin@placeholder-software.co.uk) me your invoice number and I'll be happy to send that to you :)

[is there a] 'hang up' function

Usually that's tied in to the network integration layer (i.e. HlapiServer, HlapiClient and HlapiCommsNetwork). The integration informs the networking system that a client has left the session and then Dissonance removes that client from it's internal data structures. You could try calling ClientDisconnected on the server (forcing the server to think that client is gone) before they actually disconnect. However, this shouldn't be necessary if the integration layer is doing it's job properly!

morderkaine1 commented 6 years ago

Hi, My invoice number is [REDACTED] and I would really appreciate early access to the next update. Thanks!

On Thu, Nov 9, 2017 at 2:06 PM, Martin Evans notifications@github.com wrote:

That sounds promising! Is a new release going to be going up soon? Or if not can I upgrade to the dev branch if its currently stable?

I think we're currently planning to do it next week (assuming Tom merges all my PRs without requesting any changes). It usually takes ~3 days to go up on the store after we submit. If you want a copy of it sooner than that email me your invoice number and I'll be happy to send that to you :)

[is there a] 'hang up' function

Usually that's tied in to the network integration layer (i.e. HlapiServer, HlapiClient and HlapiCommsNetwork). The integration informs the networking system that a client has left the session and then Dissonance removes that client from it's internal data structures. You could try calling ClientDisconnected on the server (forcing the server to think that client is gone) before they actually disconnect. However, this shouldn't be necessary if the integration layer is doing it's job properly!

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/Placeholder-Software/Dissonance/issues/55#issuecomment-343258145, or mute the thread https://github.com/notifications/unsubscribe-auth/AWjLyguDNZaGaDGADmY01xr5WcrfUIYsks5s000mgaJpZM4PiQz3 .

martindevans commented 6 years ago

Woah! Never give out your invoice number publicly! Could you email me so I know which address to send back to.

martindevans commented 6 years ago

Ah never mind, one of your earlier comments has your address in the footer.

morderkaine1 commented 6 years ago

Ah, whoops, I forget this was a GitHub thing, im doing it all through email and it only shows the very first part of the address/ Thanks for redacting that! I will email directly for future communication.

On Thu, Nov 9, 2017 at 8:47 PM, Martin Evans notifications@github.com wrote:

Woah! Never give out your invoice number publicly! Could you email me so I know which address to send back to :)

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/Placeholder-Software/Dissonance/issues/55#issuecomment-343350286, or mute the thread https://github.com/notifications/unsubscribe-auth/AWjLyl8Tu8nwfv8T5mX8LRlEAl3M9Fy2ks5s06smgaJpZM4PiQz3 .

martindevans commented 6 years ago

Dissonance 4.0.0 just went live with the changes for this issue included. I'll close this issue, please feel free to comment here if the issue persists :)

The changes I made in the end to resolve this were based on changes that Jack/LordSkittles recommended. I know you guys made some internal changes to call ClientDisconnected when the NetworkManager event fires. I didn't implement this because I don't want to require Dissonance users to implement a custom NetworkManager. However I did write the code necessary to do it and then comment it out - in HlapiServer.cs find the OnServerDisconnect methods and call them in your custom network manager.

I also made some changes which seem to resolve the issue without needing to modify the NetworkManager. Previously timeouts were considered an error, however it turns out that's a terrible idea because most HLAPI connections close with a timeout! Packet sending is now much more tolerant of timed out connections (it considers a timeout to simply be indicative of a disconnect and nothing more).