ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/ext/metaserver.ext
Revision: 1.3
Committed: Wed Jan 24 13:59:28 2007 UTC (17 years, 4 months ago) by root
Branch: MAIN
CVS Tags: rel-2_0
Changes since 1.2: +4 -3 lines
Log Message:
make mteaserver update nonblocking w.r.t resolving to avoid freezing loops when nameservers are unreachable

File Contents

# User Rev Content
1 root 1.1 #! perl
2    
3     # metaserver reports
4    
5 root 1.3 use Coro::Socket;
6 root 1.1
7     $cf::CFG{metaserver_comment}
8     or return;
9    
10 root 1.2 our $UPDATE_METASERVER = Event->timer (
11     reentrant => 0,
12     after => 5,
13     interval => 299,
14 root 1.3 hard => 1,
15 root 1.2 data => cf::WF_AUTOCANCEL,
16 root 1.3 cb => Coro::unblock_sub {
17     my $socket = new Coro::Socket
18 root 1.2 Proto => 'udp',
19     PeerAddr => $cf::CFG{metaserver_metaserver},
20     LocalAddr => $cf::CFG{metaserver_serveraddr}
21     or die "metaserver socket creation error: $!";
22 root 1.1
23 root 1.2 my $num_players = grep
24     $_->ob->map
25     && !$_->hidden
26     && !$_->ob->flag (cf::FLAG_WIZ),
27     cf::player::list;
28 root 1.1
29 root 1.2 my $pkt = sprintf "%s|%d|%s|%s|%d|%d|%d",
30     $cf::CFG{metaserver_servername},
31     $num_players,
32     cf::VERSION,
33     $cf::CFG{metaserver_comment},
34     0, # ibytes
35     0, # obytes
36     time - $cf::uptime;
37    
38     syswrite $socket, $pkt;
39     },
40     );
41 root 1.1