<pre style='margin:0'>
kimura wataru (kimuraw) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/34c4416d0262bfee4658432f406042a7a93fc248">https://github.com/macports/macports-ports/commit/34c4416d0262bfee4658432f406042a7a93fc248</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 34c4416d0262bfee4658432f406042a7a93fc248
</span>Author: kimura wataru <kimuraw@macports.org>
AuthorDate: Mon Aug 7 18:29:02 2017 +0900
<span style='display:block; white-space:pre;color:#404040;'> ruby/rb-rjab-connection: delete, destroot fails with ruby-1.8.7
</span>---
ruby/rb-rjab-connection/Portfile | 38 --
.../files/patch-conn_connection.rb | 383 -------------------
ruby/rb-rjab-connection/files/patch-node.rb | 8 -
ruby/rb-rjab-connection/files/patch-ns.rb | 12 -
.../files/patch-rjab_connection.rb | 6 -
.../files/patch-test-tc_Connection.rb | 422 ---------------------
.../rb-rjab-connection/files/patch-test-tc_Node.rb | 41 --
ruby/rb-rjab-connection/files/patch-test-tc_all.rb | 10 -
ruby/rb-rjab-connection/files/patch-xmllistener.rb | 12 -
9 files changed, 932 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/ruby/rb-rjab-connection/Portfile b/ruby/rb-rjab-connection/Portfile
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index beabad8..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/ruby/rb-rjab-connection/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,38 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-PortSystem 1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-PortGroup ruby 1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-ruby.setup rjab-connection 0.1.1 basic_install.rb {README} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sourceforge:rjab
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-revision 3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-maintainers comcast.net:jdputsch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-description Library allowing Ruby apps to talk to a Jabber IM system.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-long_description rjab-connection is a pure ruby port of D.J. Adams' \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Net::Jabber::Connection perl module using REXML as \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- the stream parser. This release supports Zero-k, \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Digest, and Plaintext authentication, so it is safe to \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- use across untrusted networks. The API is very \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- low-level, but easy enough to understand. Account \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- creation is not supported _yet_.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums md5 8a13d7fa0fb12c06d6b6bf13e718a220
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-platforms darwin
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-worksrcdir ${ruby.module}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_lib-append port:rb-rexml
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-patchfiles patch-conn_connection.rb \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patch-node.rb \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patch-ns.rb \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patch-rjab_connection.rb \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patch-xmllistener.rb \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patch-test-tc_Connection.rb \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patch-test-tc_Node.rb \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patch-test-tc_all.rb
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-test.run yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-test.dir ${worksrcpath}/tests
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-test.cmd ${ruby.bin} -I../lib tc_all.rb
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-test.target
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-post-destroot { system "rm -rf ${destroot}${ruby.lib}/rjab/rexml" }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/ruby/rb-rjab-connection/files/patch-conn_connection.rb b/ruby/rb-rjab-connection/files/patch-conn_connection.rb
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index bd166d3..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/ruby/rb-rjab-connection/files/patch-conn_connection.rb
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,383 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- lib/rjab/conn/connection.rb Mon Jan 21 20:49:48 2002
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ../rjab-connection.jdp/src/lib/rjab/conn/connection.rb Wed Jan 28 09:46:41 2004
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -6,31 +6,32 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Connection::Client and Connection::Component
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--require 'sha1'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--require 'socket'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+module Jabber
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--require 'rjab/conn/node'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--require 'rjab/conn/ns'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--require 'rjab/conn/xmllistener'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ class Connection
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--module Jabber
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ require 'rjab/conn/node'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ require 'rjab/conn/ns'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ require 'rjab/conn/xmllistener'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ require 'digest/sha1'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ require 'socket'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--class Connection
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- include Jabber::NS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- include Jabber::XMLListener
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def initialize(server, port, ns, localname, log=nil)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def initialize(server = 'localhost', port = 5222, \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ns = NS_CLIENT, localname = 'local', log=nil)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # instance vars instantiated at object creation
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- @server, @port = server, port || 5222
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- @ns = ns || NS_CLIENT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- @localname = localname
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- @log = log
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @server, @port, @ns, @localname, @log = server, port, ns, \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ localname, log
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # instance vars instantiated later in program
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- @answer, @ask_id = nil
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- @beatcount = 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- @connected = false
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- @handlers = []
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @handlers = {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # vars for XMLListener
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- @depth = 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -39,40 +40,46 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- @confirmedhost, @streamid, @errortext = ""
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def connect
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- # FIXME: wrap in begin / rescue block
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- @socket = TCPSocket.open(@server, @port)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self.write(stream_header)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self.read
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- @connected = true
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def ask(node)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ unless @ask_id = node.root.attributes['id']
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ debug("Ask: no ID - getting one")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @ask_id = get_id
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ node.root.attributes['id'] = @ask_id
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ debug("Ask: id = #{@ask_id}")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def disconnect
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self.write(STREAM_END)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- @socket.shutdown
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ str = ""
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ node.write str, -1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ _write str
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def process(time)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if IO.select([@socket], nil, nil, time)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return self.read
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ while (@answer == nil)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ debug("Ask: waiting for answer")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ process(1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def parse_data(source) # TODO?: subclass REXML::Source
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- REXML::Document.parse_stream(source, self) # so that it works properly with
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- end # sockets
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ answer = @answer
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @answer = nil
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ debug("Ask: got answer") # FIXME: write out XML of answer
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return answer
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def auth(*args)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raise_unless_connected
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # FIXME: wrap in begin/rescue block
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if @ns == NS_CLIENT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- @user, @pass = args[0], args[1]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- @resource = args[2]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case @ns
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ when NS_CLIENT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if args.length < 3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raise ArgumentError, \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ "Wrong number of arguments (#{auth.length} for 3)"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ user, pass, resource = args[0..2]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- auth_node = Node.new('iq')
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- auth_node.root.attributes['type'] = IQ_GET
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- query = auth_node.root.add_element('query')
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- query.attributes['xmlns'] = NS_AUTH
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- query.add_element('username').text = @user
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ query.add_element('username').text = user
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- get_result = ask(auth_node)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -80,145 +87,189 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- auth_node.root.attributes['id'] = get_id
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if get_result.root.elements['token']
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- hash = SHA1.new(@pass).hexdigest
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ hash = sha1(pass)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- seq = get_result.root.elements['sequence'].text.to_i
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- token = get_result.root.elements['token'].text
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- hash = SHA1.new(hash + token).hexdigest
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- seq.downto(1) { hash = SHA1.new(hash).hexdigest }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ hash = sha1(hash + token)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ seq.downto(1) { hash = sha1(hash) }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- query.add_element('hash').text = hash
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- elsif get_result.root.elements['digest']
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- query.add_element('digest').text = SHA1.new(@streamid + @pass).hexdigest
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ query.add_element('digest').text = sha1(@streamid + pass)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- elsif get_result.root.elements['password']
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- debug("auth: plaintext supported")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- query.add_element('password').text = @pass
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ query.add_element('password').text = pass
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- debug("auth: no authentication methods supported...")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- raise
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raise RuntimeError, "No authentication methods supported."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- query.add_element('resource').text = @resource
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ query.add_element('resource').text = resource
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set_result = ask(auth_node)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- unless (set_result.root.attributes['type'] == IQ_RESULT)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- puts "AUTH FAILED!!!"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (set_result.root.attributes['type'] != IQ_RESULT)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- disconnect
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- raise
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- puts "Auth succeeded!!!"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- elsif @ns == NS_ACCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- @secret = args[0]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raise RuntimeError, "Authentication failed."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ when NS_ACCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raise NotImplementedError, "Component support not ready"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def stream_header
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- # FIXME: find a way to move this crap into Jabber::NS and still allow for
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- # variable substitution
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- header = "<?xml version=\'1.0\'?><stream:stream to=\'#{@server}\' xmlns=\'jabber:client\' xmlns:stream=\'http://etherx.jabber.org/streams\'>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ true
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def send(data)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- # FIXME: compact method
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if data.instance_of? Node
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- str = ""
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- data.write str, -1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self.write str
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def connect(sock=nil)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # FIXME: wrap in begin / rescue block
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if not @connected
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if defined? Test::Unit::TestCase
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @socket = sock
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self.write data
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @socket = TCPSocket.open(@server, @port)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ _write(stream_header)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ read()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @connected = true
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @connected
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def write(data)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- debug("Write: #{data}")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- @socket.write(data)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def disconnect
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ _write(STREAM_END)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @socket.shutdown
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @connected = false
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def read
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- recieved = ""
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- while data = @socket.recv(1024)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- recieved += data
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- break if data != 1024
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def process(time = 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if defined? Test::Unit::TestCase
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def select(r, w, e, t)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return [r, w, e, t]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ handle = select([@socket], nil, nil, time)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if not handle.nil? and handle[0][0] = @socket
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return read
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return true
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- debug("Read: #{recieved}")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def register_handler(tag, &handler)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ debug("Register_handler: tag type: #{tag}")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if not @handlers.has_key?(tag)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @handlers[tag] = []
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @handlers[tag].push(handler)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- # ewww... grotesque
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if recieved =~ /<stream/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- debug("Read: munging so REXML is happy")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- recieved.chop!.concat('/>')
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def write(data)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raise_unless_connected
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if data.instance_of? Node
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ str = ""
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ data.write str, -1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ _write str
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ _write data
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- parse_data(recieved)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return recieved
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def connected?
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @connected
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def log(log_string)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if @log then puts "LOG: #{log_string}" end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if defined? Test::Unit::TestCase
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def set_server(server)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @server = server
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @server
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ private
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def debug(debug_string)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if $DEBUG then puts "DEBUG: #{debug_string}" end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def last_error; end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def dispatch(node)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- debug("dispatching: #{node.root.name}")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if @ask_id != nil
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if not @ask_id.nil?
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ debug("ask_id: #{@ask_id}")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if @ask_id == node.root.attributes['id']
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- @ask_id = nil
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- @answer = node
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- @handlers.each do |name, obj|
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if name == node.root.name
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- obj.call(node)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if @handlers.has_key?(node.root.name)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @handlers[node.root.name].each { |handler|
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ parcel = handler.call(node, parcel) || parcel
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ break if (not parcel.nil?) and parcel == R_HANDLED
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def get_id
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ "rjab_#{Time.now.tv_sec}" # "rjab_seconds_since_epoch"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def ask(node)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- unless @ask_id = node.root.attributes['id']
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- debug("Ask: no ID - getting one")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- @ask_id = get_id
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- node.root.attributes['id'] = @ask_id
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def heartbeat; end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def last_error; end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def log(log_string)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if @log then puts "LOG: #{log_string}" end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- debug("Ask: id = #{@ask_id}")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- str = ""
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- node.write str, -1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self.write str
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def parse_data(source)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ REXML::Document.parse_stream(source, self)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- while (@answer == nil)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- debug("Ask: waiting for answer")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- process(1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def raise_unless_connected
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if not @connected
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raise RuntimeError, "No connection/stream established!"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- answer = @answer
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- @answer = nil
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- debug("Ask: got answer") # FIXME: write out XML of answer
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return answer
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def read
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ rec_len = 1024
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ received = ''
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ while (data = @socket.recv(rec_len))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ debug("recv (#{data.length}): #{data}\n")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ received += data
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ break if data.length != 1024
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def register_handler(tag, &handler)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- debug("Register_handler: tag type: #{tag}")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- @handlers << [tag, handler]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # ewww... grotesque
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if received =~ /<stream/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ debug("Read: munging so REXML is happy")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ received.chop!.concat('/>')
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def register_beat; end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ parse_data(received)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return received
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def start; end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def register_beat; end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def connected; end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def sha1(string)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return Digest::SHA1.new(string).hexdigest
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def check_connected; end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def start; end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def get_id
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- "rjab_#{Time.now.tv_sec}" # "rjab_seconds_since_epoch"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def stream_header
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # FIXME: find a way to move this crap into Jabber::NS and still allow for
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # variable substitution
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ header = "<?xml version=\'1.0\'?><stream:stream to=\'#{@server}\' xmlns=\'jabber:client\' xmlns:stream=\'http://etherx.jabber.org/streams\'>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def heartbeat; end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def _write(data)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ debug("Write: #{data}")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @socket.write(data)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--end # Class: Connection
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end # Class: Connection
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- end # Module: Jabber
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/ruby/rb-rjab-connection/files/patch-node.rb b/ruby/rb-rjab-connection/files/patch-node.rb
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 4667db3c..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/ruby/rb-rjab-connection/files/patch-node.rb
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,8 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- lib/rjab/conn/node.rb Mon Jan 21 20:21:24 2002
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ../rjab-connection.jdp/src/lib/rjab/conn/node.rb Mon Jan 19 15:20:38 2004
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,3 +1,5 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+require 'rexml/document'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- module Jabber
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class Node < REXML::Document
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/ruby/rb-rjab-connection/files/patch-ns.rb b/ruby/rb-rjab-connection/files/patch-ns.rb
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 88d6a3e..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/ruby/rb-rjab-connection/files/patch-ns.rb
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,12 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- lib/rjab/conn/ns.rb Mon Jan 21 17:28:38 2002
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ../rjab-connection.jdp/src/lib/rjab/conn/ns.rb Mon Jan 19 15:20:38 2004
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -46,6 +46,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- IQ_SET = 'set'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- IQ_ERROR = 'error'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- IQ_RESULT = 'result'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # flags
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ R_HANDLED = '!jabber-connection-handled!'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # other non-namespace constants
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #STREAM_HEAD = "<?xml version=\'1.0\'?><stream:stream to=\'#{@server}\' xmlns=\'jabber:client\' xmlns:stream=\'http://etherx.jabber.org/streams\'>"
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/ruby/rb-rjab-connection/files/patch-rjab_connection.rb b/ruby/rb-rjab-connection/files/patch-rjab_connection.rb
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 10904a8..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/ruby/rb-rjab-connection/files/patch-rjab_connection.rb
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,6 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- lib/rjab/connection.rb Tue Jan 22 08:21:53 2002
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ../rjab-connection.jdp/src/lib/rjab/connection.rb Mon Jan 19 15:20:38 2004
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,2 +1,2 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--require "rjab/rexml/document"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+require "rexml/document"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- require "rjab/conn/connection"
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/ruby/rb-rjab-connection/files/patch-test-tc_Connection.rb b/ruby/rb-rjab-connection/files/patch-test-tc_Connection.rb
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 4031e93..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/ruby/rb-rjab-connection/files/patch-test-tc_Connection.rb
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,422 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- orig_src/test/tc_Connection.rb Wed Dec 31 16:00:00 1969
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ tests/tc_Connection.rb Mon Jan 19 15:20:38 2004
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -0,0 +1,419 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+##
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# $Id: patch-test-tc_Connection.rb,v 1.1 2004/02/06 04:21:11 rshaw Exp $
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+require 'test/unit'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+require 'test/unit/mock'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+require 'rjab/connection'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+require 'socket'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+module Jabber
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ class Connection
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def get_id
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ '1234'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+class TestJabberConnection < Test::Unit::TestCase
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def setup
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ debug = false
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @server = 'localhost'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # for authentication tests
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @user = 'foobar'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @pass = 'passwd'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @resource = 'testing'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # @jc is a client (default behavior)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @jc = Jabber::Connection.new(@server)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock = Test::Unit::MockObject(TCPSocket).new(@server, 5222)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def teardown
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @jc = nil
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def test_new
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal Jabber::Connection, @jc.class, "Jabber::Connection class exists"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def test_connect_disconnect
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # Setup mockSock to require a send and a recv...
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # Have send make sure we got the stream_header
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # Have recv give back a reasonable answer from the 'jabber' server
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ #
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setReturnValues(:write => Proc::new { |q|
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq = "<?xml version='1.0'?><stream:stream to='#{@server}'"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq += " xmlns='jabber:client'"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq += " xmlns:stream='http://etherx.jabber.org/streams'>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if not eq == q
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raise RuntimeError, "wrong query sent\n\texpected: #{eq}\n\tgot#{q}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return q.length
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ })
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setReturnValues(:recv => [ \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ %q{<?xml version='1.0'?><stream:stream xmlns:stream='http://etherx.jabber.org/streams' id='3F7D916A' xmlns='jabber:client' from='jabber.hf.mxim.com'>} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setCallOrder( :write, :recv )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.activate
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal false, @jc.connected?, "not connected yet"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal true, @jc.connect(@mockSock), "connect()"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal true, @jc.connected?, "connected now"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.verify
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.reset
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # A call to connect() when already connected should just not
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # try to connect again...
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setCallOrder()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.strictCallOrder = true
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.activate
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @jc.connect(@mockSock)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.verify
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.reset
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if @mockSock.strictCallOrder?
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.strictCallOrder = false
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setReturnValues(:write => Proc::new { |q|
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq = "</stream:stream>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if not eq == q
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return q.length
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ })
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setCallOrder( :write, :shutdown )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.activate
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal false, @jc.disconnect(), "disconnect()"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal false, @jc.connected?, "disconnected"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.verify
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.reset
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def test_auth_wo_connect
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # Auth w/o connect should raise error
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_raises(RuntimeError, "need connect before auth()") { ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @jc.auth(@user, @pass, @resource)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def test_auth_zerok
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # Connect using mockSock
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setReturnValues(:write => [12])
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setReturnValues(:recv => [ \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ %q{<?xml version='1.0'?><stream:stream xmlns:stream='http://etherx.jabber.org/streams' id='3F7D916A' xmlns='jabber:client' from='jabber.hf.mxim.com'>} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setCallOrder( :write, :recv )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.activate
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @jc.connect(@mockSock)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.verify
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.reset
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # Now authenticate ...
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ #
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ write_callno = 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setReturnValues(:write => Proc::new { |q|
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if q == "</stream:stream>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ #if (md = /id='(rjab_[0-9]+)'/.match(q))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # id = md[1]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ #else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # id = 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ #end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case write_callno
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ when 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq = "<iq type='get' id='1234'><query xmlns='jabber:iq:auth'>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq += "<username>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq += "foobar</username></query></iq>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ when 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq = "<iq type='set' id='1234'><query xmlns='jabber:iq:auth'>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq += "<username>foobar</username>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq += "<hash>d3d6cc6b1179aa8a66e05e4e9f95b6aa5a2e47eb"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq += "</hash><resource>testing</resource></query></iq>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq = "Unexpected call number: #{write_callno}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ write_callno += 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if eq == q
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return q.length
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raise RuntimeError, \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ "wrong query sent\n\texpected: #{eq}\n\tgot#{q}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ })
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setReturnValues(:recv => [ \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ %q{<iq type='result' id='1234'><query xmlns='jabber:iq:auth'><username>foobar</username><password/><digest/><sequence>446</sequence><token>3D0F5885</token><resource/></query></iq>}, \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ %q{<iq type='result' id='1234'/>} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setCallOrder( :write, :recv, :write, :recv )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.activate
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal true, @jc.auth(@user, @pass, @resource), "auth success"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.verify
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.reset
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def test_auth_digest
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # Connect using mockSock
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setReturnValues(:write => [12])
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setReturnValues(:recv => [ \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ %q{<?xml version='1.0'?><stream:stream xmlns:stream='http://etherx.jabber.org/streams' id='3F7D916A' xmlns='jabber:client' from='jabber.hf.mxim.com'>} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setCallOrder( :write, :recv )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.activate
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @jc.connect(@mockSock)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.verify
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.reset
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # Now authenticate ...
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ write_callno = 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setReturnValues(:write => Proc::new { |q|
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if q == "</stream:stream>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ #if (md = /id='(rjab_[0-9]+)'/.match(q))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # id = md[1]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ #else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # id = 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ #end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case write_callno
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ when 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq = "<iq type='get' id='1234'><query xmlns='jabber:iq:auth'>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq += "<username>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq += "foobar</username></query></iq>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ when 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq = "<iq type='set' id='1234'><query xmlns='jabber:iq:auth'>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq += "<username>foobar</username>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq += "<digest>daf38c983a261d55c77632438182c72d8678f657"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq += "</digest><resource>testing</resource></query></iq>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq = "Unexpected call number: #{write_callno}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ write_callno += 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if eq == q
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return q.length
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raise RuntimeError, \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ "wrong query sent\n\texpected: #{eq}\n\tgot#{q}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ })
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setReturnValues(:recv => [ \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ %q{<iq type='result' id='1234'><query xmlns='jabber:iq:auth'><username>foobar</username><password/><digest/><sequence>446</sequence><resource/></query></iq>}, \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ %q{<iq type='result' id='1234'/>} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setCallOrder( :write, :recv, :write, :recv )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.activate
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal true, @jc.auth(@user, @pass, @resource), "auth success"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.verify
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.reset
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def test_auth_passwd
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # Connect using mockSock
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setReturnValues(:write => [12])
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setReturnValues(:recv => [ \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ %q{<?xml version='1.0'?><stream:stream xmlns:stream='http://etherx.jabber.org/streams' id='3F7D916A' xmlns='jabber:client' from='jabber.hf.mxim.com'>} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setCallOrder( :write, :recv )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.activate
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @jc.connect(@mockSock)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.verify
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.reset
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # Now authenticate ...
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ write_callno = 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setReturnValues(:write => Proc::new { |q|
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if q == "</stream:stream>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (md = /id='(rjab_[0-9]+)'/.match(q))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ id = md[1]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ id = 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case write_callno
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ when 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq = "<iq type='get' id='1234'><query xmlns='jabber:iq:auth'>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq += "<username>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq += "foobar</username></query></iq>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ when 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq = "<iq type='set' id='1234'><query xmlns='jabber:iq:auth'>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq += "<username>foobar</username>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq += "<password>passwd</password>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq += "<resource>testing</resource></query></iq>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq = "Unexpected call number: #{write_callno}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ write_callno += 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if eq == q
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return q.length
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raise RuntimeError, \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ "wrong query sent\n\texpected: #{eq}\n\tgot: #{q}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ })
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setReturnValues(:recv => [ \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ %q{<iq type='result' id='1234'><query xmlns='jabber:iq:auth'><username>foobar</username><password/><sequence>446</sequence><resource/></query></iq>}, \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ %q{<iq type='result' id='1234'/>} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setCallOrder( :write, :recv, :write, :recv )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.activate
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal true, @jc.auth(@user, @pass, @resource), "auth success"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.verify
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.reset
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def test_write
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # Connect
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setReturnValues(:write => [12])
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setReturnValues(:recv => [ \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ %q{<?xml version='1.0'?><stream:stream xmlns:stream='http://etherx.jabber.org/streams' id='3F7D916A' xmlns='jabber:client' from='jabber.hf.mxim.com'>} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setCallOrder( :write, :recv )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.activate
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @jc.connect(@mockSock)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.verify
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.reset
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # skip authentication, it doesn't change @jc state :0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # go straight to testing write() method
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setReturnValues(:write => Proc::new { |q|
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case q
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ when /presence/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq = "<presence/>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ when /message/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eq = "<message to='foo@bar.com'><body>hello</body></message>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raise RuntimeError, "unexpected query sent:\n\t#{q}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if eq == q.to_s
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return q.length
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raise RuntimeError, "wrong query sent\n\texpected: #{eq}\n\tgot#{q}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ })
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setCallOrder( :write, :write )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.activate
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal 11, @jc.write("<presence/>"), ""
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ msg = Jabber::Node.new_message('foo@bar.com','hello')
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal 11, @jc.write("<presence/>"), "write an XML string"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal 54, @jc.write(msg), "write a node"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.verify
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.reset
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def test_handlers
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # 'Connect' to use mock socket...
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setReturnValues(:write => [12])
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setReturnValues(:recv => [ \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ %q{<?xml version='1.0'?><stream:stream xmlns:stream='http://etherx.jabber.org/streams' id='3F7D916A' xmlns='jabber:client' from='jabber.hf.mxim.com'>} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setCallOrder( :write, :recv )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.activate
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @jc.connect(@mockSock)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.verify
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.reset
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # register some handlers
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ h1_called = false
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ h2_called = false
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ h3_called = false
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ h4_called = false
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ h5_called = false
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @jc.register_handler('iq') {h1_called = true}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @jc.register_handler('iq') {h2_called = true; Jabber::NS::R_HANDLED}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @jc.register_handler('iq') {h3_called = true}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @jc.register_handler('message') {h4_called = true}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @jc.register_handler('presence') {h5_called = true}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # give process() some stuff to do...
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.setReturnValues(:recv => [ \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ %q{<iq type='result' id='4'/><message id='3'/>}, \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ %q{<presence/>} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.activate
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @jc.process(1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal true, h1_called, "iq hanlder 1 called"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal true, h2_called, "iq hanlder 2 called"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal false, h3_called, "iq hanlder 3 not called"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal true, h4_called, "message hanlder 4 called"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal false, h5_called, "presence hanlder 5 not called"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ h1_called = false
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ h2_called = false
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ h3_called = false
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ h4_called = false
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ h5_called = false
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @jc.process(1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal false, h1_called, "iq hanlder 1 not called"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal false, h2_called, "iq hanlder 2 not called"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal false, h3_called, "iq hanlder 3 not called"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal false, h4_called, "message hanlder 4 not called"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal true, h5_called, "presence hanlder 5 called"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.verify
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ @mockSock.reset
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+end
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/ruby/rb-rjab-connection/files/patch-test-tc_Node.rb b/ruby/rb-rjab-connection/files/patch-test-tc_Node.rb
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 311781e..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/ruby/rb-rjab-connection/files/patch-test-tc_Node.rb
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,41 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- orig_src/test/tc_Node.rb Wed Dec 31 16:00:00 1969
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ tests/tc_Node.rb Mon Jan 19 15:20:38 2004
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -0,0 +1,38 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+##
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# $Id: patch-test-tc_Node.rb,v 1.1 2004/02/06 04:21:11 rshaw Exp $
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+require 'test/unit'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+require 'rjab/conn/node'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+class TestNode < Test::Unit::TestCase
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def setup
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def teardown
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def test_new
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # test node create with string arg
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ node = Jabber::Node.new('abc')
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ str = ""
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ node.write str, -1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal '<abc/>', str, 'Node.new(string)'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # test node create with XML arg
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ node = Jabber::Node.new('<cde/>')
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ str = ""
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ node.write str, -1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal '<cde/>', str, 'Node.new(xml)'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ def test_new_message
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ node = Jabber::Node.new_message('foo@bar', 'body')
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ str = ""
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ node.write str, -1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert_equal "<message to='foo@bar'><body>body</body></message>", \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ str, 'Node.new_massage()'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ end
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+end
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/ruby/rb-rjab-connection/files/patch-test-tc_all.rb b/ruby/rb-rjab-connection/files/patch-test-tc_all.rb
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 7ff55f4..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/ruby/rb-rjab-connection/files/patch-test-tc_all.rb
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,10 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- orig_src/test/tc_all.rb Wed Dec 31 16:00:00 1969
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ tests/tc_all.rb Mon Jan 19 15:20:38 2004
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -0,0 +1,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+##
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# $
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+require 'test/unit'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+require 'tc_Connection.rb'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+require 'tc_Node.rb'
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/ruby/rb-rjab-connection/files/patch-xmllistener.rb b/ruby/rb-rjab-connection/files/patch-xmllistener.rb
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 694decf..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/ruby/rb-rjab-connection/files/patch-xmllistener.rb
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,12 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- lib/rjab/conn/xmllistener.rb Mon Jan 21 17:28:38 2002
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ../rjab-connection.jdp/src/lib/rjab/conn/xmllistener.rb Mon Jan 19 15:20:38 2004
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -8,7 +8,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #attr.each { |k,v| puts " K/V: #{k} / #{v}" }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # convert attributes array into hash for name-based lookup
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- h_attr = Hash[ *attr.flatten ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ #h_attr = Hash[ *attr.flatten ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ h_attr = attr
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if name == 'stream:stream'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- @currnode = Node.new(name)
</span></pre><pre style='margin:0'>
</pre>