… | |
… | |
42 | $sbuf .= $buf; |
42 | $sbuf .= $buf; |
43 | |
43 | |
44 | |
44 | |
45 | for (;;) { |
45 | for (;;) { |
46 | if (!$rlen and 2 <= length $sbuf) { |
46 | if (!$rlen and 2 <= length $sbuf) { |
47 | $rlen = ($sgen->{srand} >> 24) ^ unpack "v", $sbuf; |
47 | $rlen = ($sgen->{client_state} >> 24) ^ unpack "v", $sbuf; |
48 | } |
48 | } |
49 | |
49 | |
50 | if ($rlen and $rlen <= length $sbuf) { |
50 | if ($rlen and $rlen <= length $sbuf) { |
51 | my $pkt = substr $sbuf, 0, $rlen, ""; |
51 | my $pkt = substr $sbuf, 0, $rlen, ""; |
52 | $sgen->dec_send ($pkt); |
52 | $sgen->dec_client ($pkt); |
53 | |
53 | |
54 | my $type = unpack "xx v", $pkt; |
54 | my $type = unpack "xx v", $pkt; |
55 | my $msg = eval { $KGS::Messages::dec_send{$type} }; |
55 | my $msg = eval { $KGS::Messages::dec_client{$type} }; |
56 | warn "ERROR: $@" if $@; |
56 | warn "ERROR: $@" if $@; |
57 | if ($msg) { |
57 | if ($msg) { |
58 | $msg = $msg->(substr $pkt, 4); |
58 | $msg = $msg->(substr $pkt, 4); |
59 | |
59 | |
60 | $prot->{generator}->set_rseed ($msg->{name}) if $msg->{type} eq "login"; |
60 | $prot->{generator}->set_server_seed ($msg->{name}) if $msg->{type} eq "login"; |
61 | |
61 | |
62 | print "\npackage type received from CLIENT:\n"; |
62 | print "\npackage type received from CLIENT:\n"; |
63 | print KGS::Listener::Debug::dumpval $msg; |
63 | print KGS::Listener::Debug::dumpval $msg; |
64 | } else { |
64 | } else { |
65 | print "\007\n\nUNKNOWN PACKAGE TYPE RECEIVED FROM CLIENT:\n"; |
65 | print "\007\n\nUNKNOWN PACKAGE TYPE RECEIVED FROM CLIENT:\n"; |