aboutsummaryrefslogtreecommitdiff
path: root/lib/MasterServer/UDP
diff options
context:
space:
mode:
authorDarkelarious <darkelarious@333networks.com>2015-11-08 22:29:50 +0100
committerDarkelarious <darkelarious@333networks.com>2015-11-08 22:29:50 +0100
commitdc409b9cb6e92fd9ff9ef18ab2ca825bd247b419 (patch)
tree7c4b6cc56d02012a58635abe0be987bbe7f28ec6 /lib/MasterServer/UDP
parent8b3d393e7755c167eebe4d9f7fc786074f12e9af (diff)
downloadMasterServer-Perl-dc409b9cb6e92fd9ff9ef18ab2ca825bd247b419.tar.gz
MasterServer-Perl-dc409b9cb6e92fd9ff9ef18ab2ca825bd247b419.zip
Access ciphers and games through database instead of keeping them in memory
Diffstat (limited to 'lib/MasterServer/UDP')
-rwxr-xr-xlib/MasterServer/UDP/DatagramProcessor.pm21
1 files changed, 7 insertions, 14 deletions
diff --git a/lib/MasterServer/UDP/DatagramProcessor.pm b/lib/MasterServer/UDP/DatagramProcessor.pm
index 632435c..f80f6fb 100755
--- a/lib/MasterServer/UDP/DatagramProcessor.pm
+++ b/lib/MasterServer/UDP/DatagramProcessor.pm
@@ -25,20 +25,14 @@ sub process_udp_beacon {
my %r;
$buf = encode('UTF-8', $buf);
$buf =~ s/\\([^\\]+)\\([^\\]+)/$r{$1}=$2/eg;
-
- # check whether the beacon has a gamename that is supported in our list
- if (defined $r{gamename} && exists $self->{game}->{lc $r{gamename}}) {
+
+ # check whether the beacon has a gamename
+ if (defined $r{gamename}) {
# log the beacon
$self->log("beacon", "$peer_addr:$r{heartbeat} for $r{gamename}");
- # some games (like bcommander) have a default port and don't send a
- # heartbeat port.
- if ($r{heartbeat} == 0) {
- # assuming a default port exists
- if (exists $self->{game}->{lc $r{gamename}}->{port}) {
- $r{heartbeat} = $self->{game}->{lc $r{gamename}}->{port};
- }
- }
+ # some games (like bcommander) have a default port and don't send a heartbeat port.
+ $r{heartbeat} = $self->get_default_port($r{gamename}) if ($r{heartbeat} == 0);
#
# verify valid server address (ip+port)
@@ -103,8 +97,7 @@ sub process_udp_validate {
my $enc = (defined $r{enctype}) ? $r{enctype} : 0;
# database may not contain the correct gamename (ucc applet, incomplete beacon, change of gameserver)
- $pending->[4] = (defined $r{gamename} && exists $self->{game}->{lc $r{gamename}})
- ? $r{gamename} : $pending->[4];
+ $pending->[4] = (defined $r{gamename}) ? $r{gamename} : $pending->[4];
# verify challenge gamename secure enctype validate_response
my $val = $self->validated_beacon($pending->[4], $pending->[5], $enc, $r{validate});
@@ -147,7 +140,7 @@ sub process_query_response {
$buf =~ s/\\([^\\]+)\\([^\\]+)/$s{$1}=$2/eg;
# check whether the gamename is supported in our db
- if (defined $s{gamename} && exists $self->{game}->{lc $s{gamename}}) {
+ if (defined $s{gamename} && length $self->get_cipher(lc $s{gamename}) > 1) {
# parse variables
my %nfo = ();