Previously there was no way to tell if an incoming packet was
incorrectly formatted. The new function SInPacket.isValid()
can be called after decryption/decompression to determine if
the packet wasn't decrypted and/or decompressed properly.
* Added "valid" attribute to SInPacket.
* Decryption routine unsets "valid" if input buffer is not divisible by 16.
* Decompression routine unsets "valid" on receiving zlib error.
Calling getPeerCount() used to return the maximum number
of peers on the host, no matter how many peers were actually
connected. Changing this function to count the elements within
the "players" vector returns the correct peer count.
However calling getPeerCount() within the "onDisconnect" callback
results in an extra peer being present due to the "players"
vector only being updated *after* the callback invocation. Hence
the "onDisconnect" callback is now invoked after the disconnecting
peer is removed from the vector.
* Count peers by looping through the "players" vector.
* Move invocation of "onDisconnect" callback to after peer is deleted.
* Add getPeerCount() calls to example 3 to illustrate use.
When the client program exits it does not end its connection,
which causes the server to leave the connection active
until it times out.
* Provide the disconnect event in the client destructor.
* For easier testing, example 3 client no longer loops infinitely.
Previously there was no way to tell if an incoming packet was
incorrectly formatted. The new function SInPacket.isValid()
can be called after decryption/decompression to determine if
the packet wasn't decrypted and/or decompressed properly.
* Added "valid" attribute to SInPacket.
* Decryption routine unsets "valid" if buffer is not divisible by 16.
* Decompression routine unsets "valid" on receiving zlib error code.