Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package rubygem-websocket-driver for 
openSUSE:Factory checked in at 2021-06-01 10:40:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-websocket-driver (Old)
 and      /work/SRC/openSUSE:Factory/.rubygem-websocket-driver.new.1898 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rubygem-websocket-driver"

Tue Jun  1 10:40:00 2021 rev:7 rq:896523 version:0.7.4

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/rubygem-websocket-driver/rubygem-websocket-driver.changes
        2020-07-14 08:01:54.646298863 +0200
+++ 
/work/SRC/openSUSE:Factory/.rubygem-websocket-driver.new.1898/rubygem-websocket-driver.changes
      2021-06-01 10:41:36.565236736 +0200
@@ -1,0 +2,8 @@
+Tue Jun  1 03:43:17 UTC 2021 - Manuel Schnitzer <[email protected]>
+
+- updated to version 0.7.4
+
+  * Optimise conversions between strings and byte arrays and related encoding
+    operations, to reduce amount of allocation and copying
+
+-------------------------------------------------------------------

Old:
----
  websocket-driver-0.7.3.gem

New:
----
  websocket-driver-0.7.4.gem

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rubygem-websocket-driver.spec ++++++
--- /var/tmp/diff_new_pack.PX9ZeR/_old  2021-06-01 10:41:37.045237554 +0200
+++ /var/tmp/diff_new_pack.PX9ZeR/_new  2021-06-01 10:41:37.049237560 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package rubygem-websocket-driver
 #
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -24,7 +24,7 @@
 #
 
 Name:           rubygem-websocket-driver
-Version:        0.7.3
+Version:        0.7.4
 Release:        0
 %define mod_name websocket-driver
 %define mod_full_name %{mod_name}-%{version}

++++++ websocket-driver-0.7.3.gem -> websocket-driver-0.7.4.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CHANGELOG.md new/CHANGELOG.md
--- old/CHANGELOG.md    2020-07-09 20:27:38.000000000 +0200
+++ new/CHANGELOG.md    2021-05-25 00:34:33.000000000 +0200
@@ -1,3 +1,8 @@
+### 0.7.4 / 2021-05-24
+
+- Optimise conversions between strings and byte arrays and related encoding
+  operations, to reduce amount of allocation and copying
+
 ### 0.7.3 / 2020-07-09
 
 - Let the client accept HTTP responses that have an empty reason phrase
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/LICENSE.md new/LICENSE.md
--- old/LICENSE.md      2020-07-09 20:27:38.000000000 +0200
+++ new/LICENSE.md      2021-05-25 00:34:33.000000000 +0200
@@ -1,4 +1,4 @@
-Copyright 2010-2020 James Coglan
+Copyright 2010-2021 James Coglan
 
 Licensed under the Apache License, Version 2.0 (the "License"); you may not use
 this file except in compliance with the License. You may obtain a copy of the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/README.md new/README.md
--- old/README.md       2020-07-09 20:27:38.000000000 +0200
+++ new/README.md       2021-05-25 00:34:33.000000000 +0200
@@ -1,4 +1,4 @@
-# websocket-driver [![Build 
Status](https://travis-ci.org/faye/websocket-driver-ruby.svg)](https://travis-ci.org/faye/websocket-driver-ruby)
+# websocket-driver
 
 This module provides a complete implementation of the WebSocket protocols that
 can be hooked up to any TCP library. It aims to simplify things by decoupling
@@ -150,7 +150,16 @@
       if WebSocket::Driver.websocket?(@driver.env)
         @driver.start
       else
-        # handle other HTTP requests
+        # handle other HTTP requests, for example
+        body = '<h1>hello</h1>'
+        response = [
+          'HTTP/1.1 200 OK',
+          'Content-Type: text/plain',
+          "Content-Length: #{body.bytesize}",
+          '',
+          body
+        ]
+        send_data response.join("\r\n")
       end
     end
 
Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/websocket/driver/draft75.rb 
new/lib/websocket/driver/draft75.rb
--- old/lib/websocket/driver/draft75.rb 2020-07-09 20:27:38.000000000 +0200
+++ new/lib/websocket/driver/draft75.rb 2021-05-25 00:34:33.000000000 +0200
@@ -56,7 +56,7 @@
             when 2 then
               if octet == 0xFF
                 @stage = 0
-                emit(:message, MessageEvent.new(Driver.encode(@buffer, 
UNICODE)))
+                emit(:message, MessageEvent.new(Driver.encode(@buffer, 
Encoding::UTF_8)))
               else
                 if @length
                   @skipped += 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/websocket/driver/draft76.rb 
new/lib/websocket/driver/draft76.rb
--- old/lib/websocket/driver/draft76.rb 2020-07-09 20:27:38.000000000 +0200
+++ new/lib/websocket/driver/draft76.rb 2021-05-25 00:34:33.000000000 +0200
@@ -9,7 +9,7 @@
         input  = (@socket.env['rack.input'] || StringIO.new('')).read
         input  = input.dup if input.frozen?
         @stage = -1
-        @body  = input.force_encoding(BINARY)
+        @body  = input.force_encoding(Encoding::BINARY)
 
         @headers.clear
         @headers['Upgrade'] = 'WebSocket'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/websocket/driver/hybi/message.rb 
new/lib/websocket/driver/hybi/message.rb
--- old/lib/websocket/driver/hybi/message.rb    2020-07-09 20:27:38.000000000 
+0200
+++ new/lib/websocket/driver/hybi/message.rb    2021-05-25 00:34:33.000000000 
+0200
@@ -14,7 +14,7 @@
           @rsv2   = false
           @rsv3   = false
           @opcode = nil
-          @data   = String.new('').force_encoding(BINARY)
+          @data   = String.new('').force_encoding(Encoding::BINARY)
         end
 
         def <<(frame)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/websocket/driver/hybi.rb 
new/lib/websocket/driver/hybi.rb
--- old/lib/websocket/driver/hybi.rb    2020-07-09 20:27:38.000000000 +0200
+++ new/lib/websocket/driver/hybi.rb    2021-05-25 00:34:33.000000000 +0200
@@ -52,7 +52,7 @@
       MIN_RESERVED_ERROR = 3000
       MAX_RESERVED_ERROR = 4999
 
-      PACK_FORMATS = { 2 => 'n', 8 => 'Q>' }
+      PACK_FORMATS = { 2 => 'S>', 8 => 'Q>' }
 
       def initialize(socket, options = {})
         super
@@ -160,14 +160,13 @@
 
         message = Message.new
         frame   = Frame.new
-        is_text = String === buffer
 
         message.rsv1   = message.rsv2 = message.rsv3 = false
-        message.opcode = OPCODES[type || (is_text ? :text : :binary)]
+        message.opcode = OPCODES[type || (String === buffer ? :text : :binary)]
 
-        payload = is_text ? buffer.bytes.to_a : buffer
-        payload = [code].pack(PACK_FORMATS[2]).bytes.to_a + payload if code
-        message.data = payload.pack('C*')
+        payload = Driver.encode(buffer, Encoding::BINARY)
+        payload = [code, payload].pack('S>a*') if code
+        message.data = payload
 
         if MESSAGE_OPCODES.include?(message.opcode)
           message = @extensions.process_outgoing_message(message)
@@ -194,33 +193,38 @@
 
       def send_frame(frame)
         length = frame.length
-        buffer = []
+        values = []
+        format = 'C2'
         masked = frame.masked ? MASK : 0
 
-        buffer[0] = (frame.final ? FIN : 0) |
+        values[0] = (frame.final ? FIN : 0) |
                     (frame.rsv1 ? RSV1 : 0) |
                     (frame.rsv2 ? RSV2 : 0) |
                     (frame.rsv3 ? RSV3 : 0) |
                     frame.opcode
 
         if length <= 125
-          buffer[1] = masked | length
+          values[1] = masked | length
         elsif length <= 65535
-          buffer[1] = masked | 126
-          buffer[2..3] = [length].pack(PACK_FORMATS[2]).bytes.to_a
+          values[1] = masked | 126
+          values[2] = length
+          format << 'S>'
         else
-          buffer[1] = masked | 127
-          buffer[2..9] = [length].pack(PACK_FORMATS[8]).bytes.to_a
+          values[1] = masked | 127
+          values[2] = length
+          format << 'Q>'
         end
 
         if frame.masked
-          buffer.concat(frame.masking_key.bytes.to_a)
-          buffer.concat(Mask.mask(frame.payload, frame.masking_key).bytes.to_a)
+          values << frame.masking_key
+          values << Mask.mask(frame.payload, frame.masking_key)
+          format << 'a4a*'
         else
-          buffer.concat(frame.payload.bytes.to_a)
+          values << frame.payload
+          format << 'a*'
         end
 
-        @socket.write(buffer.pack('C*'))
+        @socket.write(values.pack(format))
       end
 
       def handshake_response
@@ -343,7 +347,6 @@
         opcode   = frame.opcode
         payload  = frame.payload = Mask.mask(buffer, @frame.masking_key)
         bytesize = payload.bytesize
-        bytes    = payload.bytes.to_a
 
         @frame = nil
 
@@ -357,8 +360,8 @@
             @message << frame
 
           when OPCODES[:close] then
-            code   = (bytesize >= 2) ? payload.unpack(PACK_FORMATS[2]).first : 
nil
-            reason = (bytesize > 2)  ? Driver.encode(bytes[2..-1] || [], 
UNICODE) : nil
+            code, reason = payload.unpack('S>a*') if bytesize >= 2
+            reason = Driver.encode(reason || '', Encoding::UTF_8)
 
             unless (bytesize == 0) or
                    (code && code >= MIN_RESERVED_ERROR && code <= 
MAX_RESERVED_ERROR) or
@@ -366,7 +369,7 @@
               code = ERRORS[:protocol_error]
             end
 
-            if bytesize > 125 or (bytesize > 2 and reason.nil?)
+            if bytesize > 125 or !reason.valid_encoding?
               code = ERRORS[:protocol_error]
             end
 
@@ -377,7 +380,7 @@
             emit(:ping, PingEvent.new(payload))
 
           when OPCODES[:pong] then
-            message = Driver.encode(payload, UNICODE)
+            message = Driver.encode(payload, Encoding::UTF_8)
             callback = @ping_callbacks[message]
             @ping_callbacks.delete(message)
             callback.call if callback
@@ -395,7 +398,8 @@
 
         case message.opcode
           when OPCODES[:text] then
-            payload = Driver.encode(payload, UNICODE)
+            payload = Driver.encode(payload, Encoding::UTF_8)
+            payload = nil unless payload.valid_encoding?
           when OPCODES[:binary]
             payload = payload.bytes.to_a
         end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/websocket/driver/stream_reader.rb 
new/lib/websocket/driver/stream_reader.rb
--- old/lib/websocket/driver/stream_reader.rb   2020-07-09 20:27:38.000000000 
+0200
+++ new/lib/websocket/driver/stream_reader.rb   2021-05-25 00:34:33.000000000 
+0200
@@ -6,13 +6,13 @@
       MINIMUM_AUTOMATIC_PRUNE_OFFSET = 128
 
       def initialize
-        @buffer = String.new('').force_encoding(BINARY)
+        @buffer = String.new('').force_encoding(Encoding::BINARY)
         @offset = 0
       end
 
       def put(chunk)
         return unless chunk and chunk.bytesize > 0
-        @buffer << chunk.force_encoding(BINARY)
+        @buffer << chunk.force_encoding(Encoding::BINARY)
       end
 
       # Read bytes from the data:
@@ -42,7 +42,7 @@
         buffer_size = @buffer.bytesize
 
         if @offset > buffer_size
-          @buffer = String.new('').force_encoding(BINARY)
+          @buffer = String.new('').force_encoding(Encoding::BINARY)
         else
           @buffer = @buffer.byteslice(@offset, buffer_size - @offset)
         end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/websocket/driver.rb new/lib/websocket/driver.rb
--- old/lib/websocket/driver.rb 2020-07-09 20:27:38.000000000 +0200
+++ new/lib/websocket/driver.rb 2021-05-25 00:34:33.000000000 +0200
@@ -44,9 +44,6 @@
     MAX_LENGTH = 0x3ffffff
     STATES     = [:connecting, :open, :closing, :closed]
 
-    BINARY  = 'ASCII-8BIT'
-    UNICODE = 'UTF-8'
-
     ConnectEvent = Struct.new(nil)
     OpenEvent    = Struct.new(nil)
     MessageEvent = Struct.new(:data)
@@ -118,7 +115,7 @@
     end
 
     def text(message)
-      message = message.encode(UNICODE) unless message.encoding.name == UNICODE
+      message = message.encode(Encoding::UTF_8) unless message.encoding == 
Encoding::UTF_8
       frame(message, :text)
     end
 
@@ -201,15 +198,15 @@
       case string
         when Array then
           string = string.pack('C*')
-          encoding ||= BINARY
+          encoding ||= Encoding::BINARY
         when String then
-          encoding ||= UNICODE
+          encoding ||= Encoding::UTF_8
       end
-      unless string.encoding.name == encoding
+      unless string.encoding == encoding
         string = string.dup if string.frozen?
         string.force_encoding(encoding)
       end
-      string.valid_encoding? ? string : nil
+      string
     end
 
     def self.validate_options(options, valid_keys)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata        2020-07-09 20:27:38.000000000 +0200
+++ new/metadata        2021-05-25 00:34:33.000000000 +0200
@@ -1,14 +1,14 @@
 --- !ruby/object:Gem::Specification
 name: websocket-driver
 version: !ruby/object:Gem::Version
-  version: 0.7.3
+  version: 0.7.4
 platform: ruby
 authors:
 - James Coglan
 autorequire:
 bindir: bin
 cert_chain: []
-date: 2020-07-09 00:00:00.000000000 Z
+date: 2021-05-24 00:00:00.000000000 Z
 dependencies:
 - !ruby/object:Gem::Dependency
   name: websocket-extensions
@@ -135,7 +135,7 @@
     - !ruby/object:Gem::Version
       version: '0'
 requirements: []
-rubygems_version: 3.1.2
+rubygems_version: 3.1.6
 signing_key:
 specification_version: 4
 summary: WebSocket protocol handler with pluggable I/O

Reply via email to