more than one check per connections.
This commit is contained in:
parent
bdb441f237
commit
fbda583fd2
4 changed files with 26 additions and 6 deletions
|
@ -109,7 +109,6 @@ module NSCA
|
|||
def self.parse entry, key = nil, password = nil, no_verification_checks = nil
|
||||
entry = NSCA::xor key, entry if key
|
||||
entry = NSCA::xor password, entry if password
|
||||
p entry: entry
|
||||
ver, crc32sum, *x = entry.unpack( PACK_STRING)
|
||||
raise VersionCheckFailed, "Packet version 3 expected. (recv: #{ver})" \
|
||||
unless no_verification_checks or 3 == ver
|
||||
|
|
|
@ -6,6 +6,8 @@ require 'securerandom'
|
|||
|
||||
module NSCA
|
||||
class Server
|
||||
include Enumerable
|
||||
|
||||
attr_reader :iv_key, :server, :packet_version, :password
|
||||
def initialize *args
|
||||
opts = {}
|
||||
|
@ -38,7 +40,16 @@ module NSCA
|
|||
def accept() Connection.new @server.accept, self end
|
||||
def close() @server.close end
|
||||
|
||||
def each &block
|
||||
return Enumerator.new( self) unless block_given?
|
||||
while conn = accept
|
||||
yield conn
|
||||
end
|
||||
end
|
||||
|
||||
class Connection
|
||||
include Enumerable
|
||||
|
||||
def initialize socket, server
|
||||
@socket, @server = socket, server
|
||||
@iv_key, @password = server.iv_key, server.password
|
||||
|
@ -52,6 +63,13 @@ module NSCA
|
|||
@packet_version.parse data, @iv_key, @password if data
|
||||
end
|
||||
|
||||
def each &block
|
||||
return Enumerator.new( self) unless block_given?
|
||||
while data = fetch
|
||||
yield data
|
||||
end
|
||||
end
|
||||
|
||||
def eof?() @socket.eof? end
|
||||
def read() @socket.read @packet_length end
|
||||
def close() @socket.close end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue