<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>