Network bug: connections not removed #328
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In server_interface::MessageClient(client):
In the branch where "client" was found to be not connected (else on line 918):
Line 926, "client.reset()," is before line 929, "erase client from m_deqConnections." This means "client" will evaluate to nullptr, whereas the matching shared_ptr in m_deqConnections has not been reset. No match will be found; nothing is removed from the container.
Fix: I swapped the two lines.
Found by / reproducable by:
My implementation had a function "DisconnectClient" which copied the logic in this else block.
Another function, "DisconnectAll," simply said:
while (!m_deqConnections.empty()) DisconnectClient(m_deqConnections.front());
Infinite loop.