-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
105 lines (78 loc) · 4.43 KB
/
README
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
PushButton Master Server 0.96
by Nathan Martin <[email protected]>
Original ReadME:
-------------------------------------------------
Ben Garney <[email protected]>
Howdy.
This is a very brief approximation of release notes.
The PBMS is licensed under the GPL.
The PBMS is being developed by:
Ben Garney <[email protected]> - Core app development
Nick Quijano <[email protected]> - Mac OSX port
Mike Kuklinski <[email protected]> - Windows/VC8 port
Robert West <[email protected]> - LoneStarCode Modifications
Nathan Martin <[email protected]> - Complete rewrite of master code, sessioning, and RAM store.
The PBMS consists of three modules:
masterd - server
mbclient - incomplete client
network - support layer
You need plib's NET and UL modules compiled and installed. You can
get plib from http://plib.sf.net/ - the configure incantation to get
it to work if you don't have sound or graphics is:
Currently, this package is set up for Visual C++ 8 (express).
You will also need SQLite 3. You can get it from http://www.sqlite.com/.
mbclient doesn't really work at this point. :)
masterd will be in the masterd directory, ready to run, assuming
no errors pop up.
This is a prerelease of the source, so please check up on my plans in GarageGames
so that you can get the real, final package when it comes out RSN(tm).
Thanks for giving this a try!
Ben Garney
I have updated key components. I fixed up security holes, added flood protection, added a preference system, and added SQLite 3 support.
Mike Kuklinski
-------------------------------------------------
_____________
2011-06-08
_____________
I have almost completely gutted out nearly everything and rewrote it all from
scratch. [Almost] everything has been changed to use the same data types that
Torque uses, such as instead of using unsigned int it is U32, etc..
masterd core -- new class MasterdCore to handle initialization and main thread
management including better configuration/preferences handling.
Packet class -- cleaned up the integer read and write functions with ones that
don't do per byte read/write, but array based I/O operations
using readBytes and writeBytes(). The read/write functions are
buffer size aware now to prevent any possible buffer underruns
(read) and overruns (write).
TorqueIO -- The network message type handlers have been updated to be more
compliant with the torque game client, and resending of list
packets actually does now work too. Also querying the server
for game and mission types now works too.
Session -- SessionHandler module has had, just like many other modules, a
complete rewrite. SessionHandler is actually gone, but replaced
with a class called FloodControl and its original purpose was
to just keep track of remote hosts enough to ban any of them
suspected of attempting a Denial of Service attack, but later
on it was also useful to track the sessions of game clients'
server query results too. Much better than recreating another
class that does exactly the same thing as FloodControl and only
track game server list query results. Also note that in the
near future FloodControl will be renamed to something like
PeerControl or PeerManager instead.
ServerStore -- And ServerStoreRAM are the same thing right now. ServerStore is
is currently only available as a RAM option as SQLite3 was
already removed by MikeK, which is fine really cause SQLite is
slow anyway. I pretty much rewrote this module to use the std
map container to improve server record lookup time and makes
it a lot easier to maintain than manually handling linked-lists.
MasterdTransport
-- Solved odd non-responsive / infinite stall by having the class
actually using poll() instead of ponding on recvfrom() all the
time. Of course this means this code will only currently work
on operating systems that support poll() such as Linux and BSD.
And other minor modifications to other files for improvement. This release is
not entirely bug free. ;-)
Nathan Martin