summaryrefslogtreecommitdiff
path: root/lib/rbot
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rbot')
-rw-r--r--lib/rbot/ircbot.rb10
-rw-r--r--lib/rbot/ircsocket.rb47
2 files changed, 8 insertions, 49 deletions
diff --git a/lib/rbot/ircbot.rb b/lib/rbot/ircbot.rb
index 4f5018e3..55b10d41 100644
--- a/lib/rbot/ircbot.rb
+++ b/lib/rbot/ircbot.rb
@@ -277,14 +277,6 @@ class Bot
Config.register Config::IntegerValue.new('server.reconnect_wait',
:default => 5, :validate => Proc.new{|v| v >= 0},
:desc => "Seconds to wait before attempting to reconnect, on disconnect")
- Config.register Config::FloatValue.new('server.sendq_delay',
- :default => 2.0, :validate => Proc.new{|v| v >= 0},
- :desc => "(flood prevention) the delay between sending messages to the server (in seconds)",
- :on_change => Proc.new {|bot, v| bot.socket.sendq_delay = v })
- Config.register Config::IntegerValue.new('server.sendq_burst',
- :default => 4, :validate => Proc.new{|v| v >= 0},
- :desc => "(flood prevention) max lines to burst to the server before throttling. Most ircd's allow bursts of up 5 lines",
- :on_change => Proc.new {|bot, v| bot.socket.sendq_burst = v })
Config.register Config::IntegerValue.new('server.ping_timeout',
:default => 30, :validate => Proc.new{|v| v >= 0},
:desc => "reconnect if server doesn't respond to PING within this many seconds (set to 0 to disable)")
@@ -589,7 +581,7 @@ class Bot
debug "server.list is now #{@config['server.list'].inspect}"
end
- @socket = Irc::Socket.new(@config['server.list'], @config['server.bindhost'], @config['server.sendq_delay'], @config['server.sendq_burst'], :ssl => @config['server.ssl'])
+ @socket = Irc::Socket.new(@config['server.list'], @config['server.bindhost'], :ssl => @config['server.ssl'])
@client = Client.new
@plugins.scan
diff --git a/lib/rbot/ircsocket.rb b/lib/rbot/ircsocket.rb
index 4ac98da3..81a7fd16 100644
--- a/lib/rbot/ircsocket.rb
+++ b/lib/rbot/ircsocket.rb
@@ -231,12 +231,6 @@ module Irc
# accumulator for the throttle
attr_reader :throttle_bytes
- # delay between lines sent
- attr_accessor :sendq_delay
-
- # max lines to burst
- attr_accessor :sendq_burst
-
# an optional filter object. we call @filter.in(data) for
# all incoming data and @filter.out(data) for all outgoing data
attr_reader :filter
@@ -263,7 +257,7 @@ module Irc
# server_list:: list of servers to connect to
# host:: optional local host to bind to (ruby 1.7+ required)
# create a new Irc::Socket
- def initialize(server_list, host, sendq_delay=2, sendq_burst=4, opts={})
+ def initialize(server_list, host, opts={})
@server_list = server_list.dup
@server_uri = nil
@conn_count = 0
@@ -278,17 +272,6 @@ module Irc
else
@ssl = false
end
-
- if sendq_delay
- @sendq_delay = sendq_delay.to_f
- else
- @sendq_delay = 2
- end
- if sendq_burst
- @sendq_burst = sendq_burst.to_i
- else
- @sendq_burst = 4
- end
end
def connected?
@@ -330,9 +313,8 @@ module Irc
sock.connect
end
@sock = sock
- @last_send = Time.new - @sendq_delay
+ @last_send = Time.new
@flood_send = Time.new
- @last_throttle = Time.new
@burst = 0
@sock.extend(MonitorMixin)
@sendq = MessageQueue.new
@@ -405,7 +387,6 @@ module Irc
error "error while shutting down: #{e.pretty_inspect}"
end
@sock = nil
- @burst = 0
@sendq.clear
end
@@ -413,30 +394,17 @@ module Irc
def writer_loop
loop do
- # we could wait for the message, then calculate the delay and sleep
- # if necessary. however, if high-priority message is enqueued while
- # we sleep, it won't be the first to go out when the sleep is over.
- # thus, we have to call Time.now() twice, once to calculate the delay
- # and once to adjust @burst / @flood_send.
begin
now = Time.now
- if @sendq_delay > 0
- burst_delay = 0
- if @burst > @sendq_burst
- burst_delay = @last_send + @sendq_delay - now
- end
-
- flood_delay = @flood_send - MAX_IRC_SEND_PENALTY - now
- delay = [burst_delay, flood_delay, 0].max
- if delay > 0
- debug "sleep(#{delay}) # (f: #{flood_delay}, b: #{burst_delay})"
- sleep(delay)
- end
+ flood_delay = @flood_send - MAX_IRC_SEND_PENALTY - now
+ delay = [flood_delay, 0].max
+ if delay > 0
+ debug "sleep(#{delay}) # (f: #{flood_delay})"
+ sleep(delay)
end
msg = @sendq.shift
now = Time.now
@flood_send = now if @flood_send < now
- @burst = 0 if @last_send + @sendq_delay < now
debug "got #{msg.inspect} from queue, sending"
emergency_puts(msg, true)
rescue Exception => e
@@ -463,7 +431,6 @@ module Irc
@last_send = Time.new
@flood_send += message.irc_send_penalty if penalty
@lines_sent += 1
- @burst += 1
end
rescue Exception => e
handle_socket_error(:SEND, e)