-
Notifications
You must be signed in to change notification settings - Fork 1
/
CHANGELOG
108 lines (108 loc) · 9.04 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
SpringLobbyInterface.pm:
=======================
0.5: first public version (beta)
0.5a: fix startrect values in startscripts
0.5b: workaround for tabulations in chat messages (some lobby clients don't respect the lobby protocol, and the lobby server doesn't enforce it)
0.6: update startscript format ("Gametype" is now set to Mod name instead of archive name, and "MyPlayerName" and "IsHost" tags are now generated)
0.7: use mod specific sides instead of hard-coded ARM/CORE in startscript
0.7a: do not cancel start script generation when a player has an invalid side, instead write the nearest side available in current mod
0.7b: use mod specific sides instead of hard-coded ARM/CORE in startscript for bots too
0.7c: log a warning when a command cannot be sent to lobby server
add execution time statistics in debug messages for handlers and callbacks
0.7d: only log handler and callback execution times >= 1 second, and adjust log level according to execution time
0.7e: restrict statistics log levels to DEBUG and INFO
0.8: experimental Windows support
refactored command parsing (workaround for TASServer bugs in LAN mode)
0.8a: store all start boxes in start scripts, even the unused ones (they can be used in game for King Of The Hill mode for example)
0.8b: be more tolerent on start script tags case (Pytasserver requirement)
0.9: AutoHost removed from startscript (auto-force from SPADS should be much less needed)
new AI syntax in startscript
0.9a: added AccountId support (printed in startscript)
0.9b: account ID indexed list of players is now available (usefull to check if a given account is online)
AutoHostCountryCode and AutoHostRank tags added in startscript
IPs of players joining the battle are now available if lobby server supports JOINBATTLEREQUEST command
0.9c: workaround for bugged random start positions in Spring
AutoHost account ID added in start script
0.10: start script passwords support added (spoof protection)
0.10a: fix for spring-dedicated now using HostIP startscript parameter for binding server socket
0.10b: fix for spring-dedicated now using HostIP startscript parameter for binding server socket (now for real :) )
0.11: added player IDs remapping functionnality to workaround lobby limitation to 16 IDs
0.12: added support for mapoptions
0.12a: added support for SAYBATTLEPRIVATE / SAYBATTLEPRIVATEEX commands (uberserver only)
0.12b: added support for AI version data in ADDBOT command
0.12c: log error details when messages can't be sent to lobby server
0.12d: added support for autohost in headless mode
changed default lobby server host to 'lobby.springrts.com'
reset map options on map change
0.12e: remapped IDs and team IDs are now available from outside the module
0.12f: allow tab characters in SAYPRIVATE commands (used in game data reports)
0.13: added "pre-callback" functionnality (executed before the module internal handlers)
int values sent by lobby server are now checked in the interface module
0.13a: added CHANNEL command unmarshalling information (used by IRC bridge)
0.14: multiple callbacks can now be added for each command, with optional priority parameter
global pre-callbacks can be added to handle all commands in same function
0.15: added support for REMOVESCRIPTTAGS command
added support for non-standard 'Skill' field in startscript (generated from "game/players/<lowerCasePlayerName>/skill" start script tag)
simplified the "reset map options on map change" workaround
0.15a: removed the "reset map options on map change" workaround (added in v0.12d) now that uberserver supports the REMOVESCRIPTTAGS command
0.16: added support for non-standard 'SkillUncertainty' field in startscript (generated from "game/players/<lowerCasePlayerName>/skilluncertainty" start script tag)
0.17: added support for multi-engine lobby protocol extension (OPENBATTLEEX,BATTLEOPENEDEX)
small change in ids/teams remapping algorithm to reduce remapping and order spectators by skill
removed workaround for bugged random start positions in Spring (was introduced in 0.9c, should be fixed now)
0.17a: added missing command hook on OPENBATTLEEX (this caused rehost loop in SPADS when using multi-engine protocol extension with a passworded battle)
0.18: timestamps for latest commands sent and received are now stored in the module
0.19: renamed from PerlLobbyInterface to SpringLobbyInterface
socket is now used in blocking mode (should fix a rare bug when a lot of data is sent by the bot at the same time), reads are still not blocking thanks to select+sysread
use LineFeed character specificaly to split commands instead of depending on current system NewLine convention
0.20: extend the startscript additional data functionality to modoptions, mapoptions, and player sections
prevent empty tag names in startscript
0.21: add support for "cl" compatibility flag
0.22: new optional constructor parameter "inconsistencyHandler" containing a function to be called when inconsistent data sent by lobby server is detected
improve detection of inconsistent data sent by lobby server
minor code refactoring
0.23: detect more lobby server inconsistencies
0.24: integer param checks are now also used to detect lobby server inconsistencies
0.25: missing integer parameters in commands received from lobby server are now correctly detected
0.26: add support for SAYPRIVATEEX/SAIDPRIVATEEX commands
add support for new compatibility flags 'l' and 't'
improve handling of channel topic data
remove obsolete support for OPENBATTLEEX/BATTLEOPENEDEX commands
remove support for obsolete "cpu" client data
0.27: add support for TLS
0.28: behaviors regarding compatibility flags are now adjusted according to lobby server protocol version
all server-side settings (protocolVersion, defaultSpringVersion...) are now stored in a dedicated structure
0.29: workaround for lobby server sending "unknown" protocolVersion value
0.30: use graceful socket shutdown to disconnect from lobby server (fix quit messages sometimes ignored by lobby server)
0.31: improve workarounds for lobby protocol limitations
support maximum number of teams and IDs allowed by engine (251)
0.32: allow additional start script tags to be inserted in AI sections
allow additional start script subsections to be inserted in players and AI sections
0.33: sort AI bots by ID number when adding them to the start script (like players)
0.34: allow custom additional start script sections
0.35: ensure the number type is used for all the unmarshalled status structures fields (fix some type inconsistencies when used with Inline::Python)
0.36: retrieve and store the lobby server TLS authentication state when enabling TLS to let the client decide if connection is trusted
0.37: ensure the number type is used for id and team numbers even when forced through lobby commands (fix some type inconsistencies when used with Inline::Python)
0.38: add support for empty script tags
0.39: make lobby protocol definition structures shared to ease protocol extensions from external modules
0.40: try to load TLS module (IO::Socket::SSL) only when required (i.e. when receiving OK response from lobby server)
0.41: make TLS handshake non-blocking
minor optimizations in some heavily used functions (avoid unnecessary data copy)
0.42: do not use unnecessary high resolution timer for graceful socket shutdown timeout (fix error "Bareword Time::HiRes::time not allowed")
0.43: refactor disabled units management ("disabledUnits" array --> "restrictedUnits" hash)
0.44: replace obsolete channel leaving management (hook on LEAVE command is no longer needed, current lobby servers behavior is to send the LEFT command to the leaving user)
minor improvements in channel joining management
0.45: detect LEFT commands missing before REMOVEUSER (improve resiliency when lobby server doesn't respect lobby protocol)
0.46: improve logging of socket read errors
0.47: avoid useless try of graceful socket shutdown when connection is already closed by peer
improve log message when read errors occur on a TLS connection
0.48: detect more cases of invalid ADDBOT command from lobby server
0.49: detect commands BATTLECLOSED/LEFTBATTLE missing before REMOVEUSER
detect commands REMOVEBOT missing before LEFTBATTLE
detect inconsistent BATTLEOPENED/BATTLECLOSED/LEFTBATTLE/UPDATEBOT commands
0.50: ignore SIGPIPE signals during I/O operations on lobby socket (TLS can induce writes during read operations)
0.51: add support for optional lobby protocol extensions declaration from server
0.52: move marshallers/unmarshallers to a dedicated module "SpringLobbyProtocol" to ease code factorization between client and server implementations
0.53: add support for "battleStatus:teams-8bit" lobby protocol extension (use 8 bits to encode team numbers and ally team numbers in battle status bitfield, increasing max values from 15 to 255)
0.54: fix handling of cases where lobby command cannot be sent due to error in marshalling function
0.55: fix minor memory leak when leaving a chat channel (membership data of the other users in channel wasn't correctly cleared)
fix typo in a debug message