forked from K4rian/mednafen-server-git
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
157 lines (95 loc) · 6.94 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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
0.5.2:
Added support for new netplay media set internal command added in Mednafen 0.9.37.
0.5.1:
Compare each controller's type(for Mednafen 0.9.34+) and data size between the client and the game session, and
issue an error message and disconnect the client if they differ.
0.5.0:
Use separate sockets for accept()'ing IPv4 and IPv6 connections, and disable IPv4 to IPv6 mapping on the created IPv6 socket(resolves
issues on the *BSDs).
Don't bother checking for the new IPv6-supporting BSD/POSIX sockets API anymore, and use it unconditionally, since all major modern OSes
should support it now, and machines without the newer API support are in the decline.
Treat the number of local players requested from the connecting client as advisory only, and don't error out and disconnect the client
if it's "invalid" given the current game configuration.
Changed connection timeout code to use a monotonic(hopefully) clock source with sub-second precision for connection timeouts, instead of
time() as before.
Implemented software send queue corking, to (potentially) reduce the number of packets sent when sending out commands and command data.
Removed variable-length-array usage.
Replaced usage of "m" specifiers in printf() format strings with more portable alternatives.
Fixed a bug that was causing non-7-bit-ASCII characters to be stripped from nicknames.
Generate a nickname with pseudorandom characters if the nickname specified by the client is already in use,
or contains no (valid) characters, rather than trying to generate a nickname based on what controllers the client controls.
Rather than using MSG_NOSIGNAL, which has portability issues, just set SIGPIPE handling to SIG_IGN.
Treat a send() or recv() that fails with errno "EINTR" as not being a fatal error for the client.
Revamped error handling to be less intrusive and insane.
Fixed a problem that could cause half-disconnected clients to linger around(due to not treating a recv() return value of 0 properly).
Added a sanity check to the FPS value provided by the client.
Be more stringent about which client->server commands are propagated to all players in a game.
Clients with multiple local players no longer take up multiple client slots in a game.
Removed support for "netmerge" functionality, since the newly-added commands offer similar functionality. (Though this may be
considered a minor feature loss if older clients that do not support the new commands connect)
Added player /swap, /take, /dupe, and /drop command functionality.
Fixed memory leak bug on realloc() failure.
0.4.2:
Fixed IPv4-fallthrough on IPv6 socket creation failure to not be hardcoded to fail(I must have been reaaaaally sleepy when I wrote that
code).
Fixed a race-condition style bug that was causing a null pointer dereference to occur if a player joined while another player
left in the same time window.
Prevent the rare possibility of text messages and commands from a client being sent after
the notification that the client left.
Added "NOP" client->server command.
Added idle timeout functionality.
Updated netplay protocol to increase the maximum number of allowed controllers per game from 8 to 16.
Call mlockall(MCL_CURRENT) before the primary runtime loop is entered(and only print a warning if it fails, which is likely to occur).
Print out server configuration on startup.
Added setting "maxcmdpayload" to the configuration file.
Increased the default value for MaxCommandPayloadSize from 4MiB to 5MiB.
MaxSendQSize and MinSendQSize constants are now controllable via configuration file.
Increased the default value for MaxSendQSize from 6MiB to 8MiB.
IPv6 is now enabled on platforms where the API is present.
Fixed a few small memory leaks(and removed some dynamic allocations).
Clients that specify they have more than one local controller(IE they control 2, or 3 emulated inputs instead of just 1) will no longer take
up extraneous lurker slots when connecting.
Bumped version number printed on startup(it was forgotten in 0.4.1).
0.4.1:
Fixed a bug that was causing wonkiness(including memory corruption) if more than 8 clients(who would be lurkers, of course :b) connected to a single game
instance.
Fixed a crash if >= 2 players disconnected from the same game at almost the exact same time(within the same
~16ms window, typically).
Fixed a nasty design flaw in the software send queue code that effectively made it useless and broken(which could break netplay for connected clients
when a largeish save state is transferred, and/or on operating systems with very small send queues in their TCP/IP stacks).
IPv6 is now available by uncommenting "#define MDFNSERVER_IPV6" in mednafen-server.cpp. In the future, the IPv6 sockets API will be used automatically
if it's available and networking stack/kernel support for IPv6 is detected.
Of course, Mednafen itself doesn't support IPv6 through SDL_net or otherwise yet. ;)
0.4.0-2010-02-01:
Added -Wall to CPPFLAGS, and fixed various code issues causing warnings.
Fixed the detection code for an incomplete configuration file.
Fixed a few argument size issues for informational printf() statements on 64-bit platforms.
Moved Time64() to time64.c, and added code to use clock_gettime() with a monotonic clock source
if available, instead of gettimeofday().
autotoolized the build process.
Changed the default maximum number of clients in standard.conf to 50.
Reduced the maximum nickname length in bytes to 150, from 300.
Fixed a nasty old bug that would cause the server to use an uninitialized game entry
if the connecting client's game ID(MD5 hash) were all zeroes.
The version is now printed on startup.
0.3.0: Removed support for the old protocol revision(FCE Ultra and Mednafen < 0.5.0).
Protocol revision for Mednafen 0.7.0:
Added support for emulator-selectable input device types.
Implemented nickname changing.
Fixed a few memory leaks.
if SOL_TCP isn't defined, it will be defined to IPPROTO_TCP
0.2.2: sin_family is now set properly in the sockaddr_in structure passed to bind(), fixing
a startup error under Cygwin, and probably most UN*Xes.
0.2.1: Fixed a flaw in the implementation of joystick merging in 0.2.0 that led to race conditions.
0.2.0: Updated to support the protocol used by Mednafen 0.5.0, which primarily moves text formatting
for player text messages to the client side, and adds support for more than 4 players
per game(5 player PC Engine Bomberman, woohoo) on systems that support it.
0.1.0:
Added an internal send queue, specifically to work with games
that have very large save states.
The game's FPS can now be specified by the client.
0.0.2: Switched to using fcntl() to set the socket to nonblocking, so I
don't need to use MSG_NOWAIT in send() anymore, which is undefined
under Cygwin.
Added a "clean" Makefile target.
0.0.1: First Release