def connect
retry_count = 0
server_to_use = nil
server_pool = @servers.dup.sort{ rand <=> rand }
begin
server_to_use = server_pool.shift
server_pool.push(server_to_use)
Jabber::debuglog "timeout will be: #{@retry_sleep.to_f}"
Timeout.timeout(@retry_sleep.to_f){
Jabber::debuglog "trying to connect to #{server_to_use}"
super(server_to_use, @port)
}
Jabber::debuglog self.jid.to_s + " connected to " + server_to_use.to_s
Jabber::debuglog "out of possible servers " + @servers.inspect
rescue Exception, Timeout::Error => e
Jabber::warnlog "#{server_to_use} error: #{e.inspect}. Will attempt to reconnect in #{@retry_sleep}"
sleep(@retry_sleep.to_f)
if(retry_count >= @max_retry.to_i)
Jabber::warnlog "reached max retry count on exception, failing"
raise e
end
retry_count += 1
retry
end
end