stomp 1.4.1 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,19 @@
1
1
  # Stomp Gem Change Log
2
2
 
3
+ ## 1.4.2 20160820
4
+
5
+ * Refine SSL examples.
6
+ * Address issue #124 with additional RDOC.
7
+ * spec for Stomp::Client - check that headers passed to connection contain
8
+ required values as well as given custom and that given hash is not modified.
9
+ * Stomp::Client now does not modify given headers hash
10
+ * spec description enhancement.
11
+ * fix build_subscription_id - symbol and string were mixed up.
12
+ * STOMP_TESTSSL flag should enable all SSL tests.
13
+ * Add a basic Gemfile.
14
+ * Fix a memory leak in receipt implementation.
15
+ * Add unit test helper script.
16
+
3
17
  ## 1.4.1 20160623
4
18
 
5
19
  * Add call to #post_connection_check to normal SSL processing. This change
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ gem 'rake', '~> 0.8.2'
data/README.md CHANGED
@@ -93,6 +93,7 @@ A Stomp URL must begin with 'stomp://' and can be in one of the following forms:
93
93
 
94
94
  See _CHANGELOG.rdoc_ for details.
95
95
 
96
+ * Gem version 1.4.2. Fix memory leak, and others !: see CHANGELOG.md for details.
96
97
  * Gem version 1.4.1. Important SSL changes !: see CHANGELOG.md for details.
97
98
  * Gem version 1.4.0. Note: Change sementics of :parse_timeout, see CHANGELOG.md for details.
98
99
  * Gem version 1.3.5. Miscellaneous fixes, see CHANGELOG.rdoc for details.
@@ -291,7 +292,7 @@ Thiago Morello
291
292
  2009-12-25
292
293
  </td>
293
294
  <td style="border: 1px solid black;padding-left: 10px;" >
294
- (0362)
295
+ (0369)
295
296
  </td>
296
297
  <td style="border: 1px solid black;padding-left: 10px;" >
297
298
  <span style="font-weight: bold;" >
@@ -706,5 +707,60 @@ Wayne Robinson
706
707
  / wayne.robinson@gmail.com
707
708
  </td>
708
709
  </tr>
710
+ <tr>
711
+ <td style="border: 1px solid black;padding-left: 10px;" >
712
+ 2016-07-12
713
+ </td>
714
+ <td style="border: 1px solid black;padding-left: 10px;" >
715
+ (0006)
716
+ </td>
717
+ <td style="border: 1px solid black;padding-left: 10px;" >
718
+ <span style="font-weight: bold;" >
719
+ Nikolay Khasanov
720
+ </span>
721
+ / nkhasanov@groupon.com
722
+ </td>
723
+ </tr>
724
+ <tr>
725
+ <td style="border: 1px solid black;padding-left: 10px;" >
726
+ 2016-07-16
727
+ </td>
728
+ <td style="border: 1px solid black;padding-left: 10px;" >
729
+ (0004)
730
+ </td>
731
+ <td style="border: 1px solid black;padding-left: 10px;" >
732
+ <span style="font-weight: bold;" >
733
+ GitHub
734
+ </span>
735
+ / noreply@github.com
736
+ </td>
737
+ </tr>
738
+ <tr>
739
+ <td style="border: 1px solid black;padding-left: 10px;" >
740
+ 2016-06-02
741
+ </td>
742
+ <td style="border: 1px solid black;padding-left: 10px;" >
743
+ (0001)
744
+ </td>
745
+ <td style="border: 1px solid black;padding-left: 10px;" >
746
+ <span style="font-weight: bold;" >
747
+ Ryan Rosenblum
748
+ </span>
749
+ / ryan.rosenblum@gmail.com
750
+ </td>
751
+ </tr>
752
+ <tr>
753
+ <td style="border: 1px solid black;padding-left: 10px;" >
754
+ 2016-08-17
755
+ </td>
756
+ <td style="border: 1px solid black;padding-left: 10px;" >
757
+ (0002)
758
+ </td>
759
+ <td style="border: 1px solid black;padding-left: 10px;" >
760
+ <span style="font-weight: bold;" >
761
+ Alexandre Moutot
762
+ </span>
763
+ / a.moutot@alphalink.fr
764
+ </td>
765
+ </tr>
709
766
  </table>
710
-
@@ -0,0 +1,73 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ #
4
+ # Common Stomp 1.1 code.
5
+ #
6
+ require "rubygems" if RUBY_VERSION < "1.9"
7
+ require "stomp"
8
+ #
9
+ module SSLCommon
10
+
11
+ # CA Data.
12
+
13
+ # CA file location/directory. Change or specify.
14
+ # This is the author's default.
15
+ def ca_loc()
16
+ ENV['CA_FLOC'] || "/ad3/gma/sslwork/2013-extended-02" # The CA cert location
17
+ end
18
+ # CA file. Change or specify.
19
+ # This is the author's default.
20
+ def ca_cert()
21
+ ENV['CA_FILE'] || "TestCA.crt" # The CA cert File
22
+ end
23
+ # CA private key file. Change or specify.
24
+ # This is the author's default.
25
+ # This file should not be exposed to the outside world.
26
+ # Not currently used in stomp examples.
27
+ def ca_key()
28
+ ENV['CA_KEY'] || nil # The CA private key File
29
+ end
30
+
31
+ # Client Data.
32
+
33
+ # Client file location/directory. Change or specify.
34
+ # This is the author's default.
35
+ def cli_loc()
36
+ ENV['CLI_FLOC'] || "/ad3/gma/sslwork/2013-extended-02" # The client cert location
37
+ end
38
+ # Client cert file. Change or specify.
39
+ # This is the author's default.
40
+ def cli_cert()
41
+ ENV['CLI_FILE'] || "client.crt" # The client cert File
42
+ end
43
+ # Client private keyfile. Change or specify.
44
+ # This is the author's default.
45
+ # This file should not be exposed to the outside world.
46
+ def cli_key()
47
+ ENV['CLI_KEY'] || nil # The client private key File
48
+ end
49
+
50
+ # Server Data.
51
+
52
+ # Server file location/directory. Change or specify.
53
+ # This is the author's default.
54
+ # Not currently used in stomp examples.
55
+ def svr_loc()
56
+ ENV['SVR_FLOC'] || "/ad3/gma/sslwork/2013-extended-02" # The server cert location
57
+ end
58
+ # Server cert file. Change or specify.
59
+ # This is the author's default.
60
+ # Not currently used in stomp examples.
61
+ def svr_cert()
62
+ ENV['SVR_FILE'] || "server.crt" # The server cert File
63
+ end
64
+ # Server private keyfile. Change or specify.
65
+ # This is the author's default.
66
+ # This file should not be exposed to the outside world.
67
+ # Not currently used in stomp examples.
68
+ def svr_key()
69
+ ENV['SVR_KEY'] || nil # The server private key File
70
+ end
71
+
72
+ end
73
+
@@ -3,8 +3,14 @@
3
3
  #
4
4
  # Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
5
5
  #
6
- require "rubygems"
7
- require "stomp"
6
+ #
7
+ if Kernel.respond_to?(:require_relative)
8
+ require_relative("./ssl_common")
9
+ else
10
+ $LOAD_PATH << File.dirname(__FILE__)
11
+ require "ssl_common"
12
+ end
13
+ include SSLCommon
8
14
  #
9
15
  # == SSL Use Case 1 - server does *not* authenticate client, client does *not* authenticate server
10
16
  #
@@ -20,7 +26,7 @@ require "stomp"
20
26
  #
21
27
  class ExampleSSL1
22
28
  # Initialize.
23
- def initialize
29
+ def initialize # Change the following as needed.
24
30
  @host = ENV['STOMP_HOST'] ? ENV['STOMP_HOST'] : "localhost"
25
31
  @port = ENV['STOMP_PORT'] ? ENV['STOMP_PORT'].to_i : 61612
26
32
  end
@@ -3,8 +3,13 @@
3
3
  #
4
4
  # Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
5
5
  #
6
- require "rubygems"
7
- require "stomp"
6
+ if Kernel.respond_to?(:require_relative)
7
+ require_relative("./ssl_common")
8
+ else
9
+ $LOAD_PATH << File.dirname(__FILE__)
10
+ require "ssl_common"
11
+ end
12
+ include SSLCommon
8
13
  #
9
14
  # == SSL Use Case 1 - User Supplied Ciphers
10
15
  #
@@ -15,7 +20,9 @@ require "stomp"
15
20
  #
16
21
  class ExampleSSL1C
17
22
  # Initialize.
18
- def initialize
23
+ def initialize # Change the following as needed.
24
+ @host = ENV['STOMP_HOST'] ? ENV['STOMP_HOST'] : "localhost"
25
+ @port = ENV['STOMP_PORT'] ? ENV['STOMP_PORT'].to_i : 61612
19
26
  end
20
27
  # Run example.
21
28
  def run
@@ -27,7 +34,7 @@ class ExampleSSL1C
27
34
  # SSL Use Case 1
28
35
  #
29
36
  hash = { :hosts => [
30
- {:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl => ssl_opts},
37
+ {:login => 'guest', :passcode => 'guest', :host => @host, :port => @port, :ssl => ssl_opts},
31
38
  ],
32
39
  :reliable => false, # YMMV, to test this in a sane manner
33
40
  }
@@ -3,8 +3,13 @@
3
3
  #
4
4
  # Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
5
5
  #
6
- require "rubygems"
7
- require "stomp"
6
+ if Kernel.respond_to?(:require_relative)
7
+ require_relative("./ssl_common")
8
+ else
9
+ $LOAD_PATH << File.dirname(__FILE__)
10
+ require "ssl_common"
11
+ end
12
+ include SSLCommon
8
13
  #
9
14
  # == SSL Use Case 2 - server does *not* authenticate client, client *does* authenticate server
10
15
  #
@@ -21,8 +26,7 @@ require "stomp"
21
26
  class ExampleSSL2
22
27
  # Initialize.
23
28
  def initialize
24
- # Change the following to the location of the cert file(s).
25
- @cert_loc = "/ad3/gma/sslwork/2013"
29
+ # Change the following as needed.
26
30
  @host = ENV['STOMP_HOST'] ? ENV['STOMP_HOST'] : "localhost"
27
31
  @port = ENV['STOMP_PORT'] ? ENV['STOMP_PORT'].to_i : 61612
28
32
  end
@@ -32,8 +36,8 @@ class ExampleSSL2
32
36
 
33
37
  ts_flist = []
34
38
 
35
- # Possibly change the cert file(s) name(s) here.
36
- ts_flist << "#{@cert_loc}/TestCA.crt"
39
+ # Possibly change/override the cert data here.
40
+ ts_flist << "#{ca_loc()}/#{ca_cert()}"
37
41
 
38
42
  ssl_opts = Stomp::SSLParams.new(:ts_files => ts_flist.join(","),
39
43
  :fsck => true)
@@ -3,8 +3,13 @@
3
3
  #
4
4
  # Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
5
5
  #
6
- require "rubygems"
7
- require "stomp"
6
+ if Kernel.respond_to?(:require_relative)
7
+ require_relative("./ssl_common")
8
+ else
9
+ $LOAD_PATH << File.dirname(__FILE__)
10
+ require "ssl_common"
11
+ end
12
+ include SSLCommon
8
13
  #
9
14
  # == SSL Use Case 2 - User Supplied Ciphers
10
15
  #
@@ -15,7 +20,9 @@ require "stomp"
15
20
  #
16
21
  class ExampleSSL2C
17
22
  # Initialize.
18
- def initialize
23
+ def initialize # Change the following as needed.
24
+ @host = ENV['STOMP_HOST'] ? ENV['STOMP_HOST'] : "localhost"
25
+ @port = ENV['STOMP_PORT'] ? ENV['STOMP_PORT'].to_i : 61612
19
26
  end
20
27
  # Run example.
21
28
  def run
@@ -25,8 +32,8 @@ class ExampleSSL2C
25
32
  #
26
33
  ts_flist = []
27
34
 
28
- # Change the following to the location of your CA's signed certificate.
29
- ts_flist << "/home/gmallard/sslwork/2013/TestCA.crt"
35
+ # Possibly change/override the cert data here.
36
+ ts_flist << "#{ca_loc()}/#{ca_cert()}"
30
37
 
31
38
  ssl_opts = Stomp::SSLParams.new(:ts_files => ts_flist.join(","),
32
39
  :ciphers => ciphers_list,
@@ -34,7 +41,7 @@ class ExampleSSL2C
34
41
  )
35
42
  #
36
43
  hash = { :hosts => [
37
- {:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl => ssl_opts},
44
+ {:login => 'guest', :passcode => 'guest', :host => @host, :port => @port, :ssl => ssl_opts},
38
45
  ],
39
46
  :reliable => false, # YMMV, to test this in a sane manner
40
47
  }
@@ -3,8 +3,13 @@
3
3
  #
4
4
  # Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
5
5
  #
6
- require "rubygems"
7
- require "stomp"
6
+ if Kernel.respond_to?(:require_relative)
7
+ require_relative("./ssl_common")
8
+ else
9
+ $LOAD_PATH << File.dirname(__FILE__)
10
+ require "ssl_common"
11
+ end
12
+ include SSLCommon
8
13
  #
9
14
  # == SSL Use Case 3 - server *does* authenticate client, client does *not* authenticate server
10
15
  #
@@ -23,8 +28,7 @@ require "stomp"
23
28
  class ExampleSSL3
24
29
  # Initialize.
25
30
  def initialize
26
- # Change the following to the location of the cert file(s).
27
- @cert_loc = "/ad3/gma/sslwork/2013"
31
+ # Change the following as needed.
28
32
  @host = ENV['STOMP_HOST'] ? ENV['STOMP_HOST'] : "localhost"
29
33
  @port = ENV['STOMP_PORT'] ? ENV['STOMP_PORT'].to_i : 61612
30
34
  end
@@ -34,8 +38,8 @@ class ExampleSSL3
34
38
 
35
39
  # Possibly change the cert file(s) name(s) here.
36
40
  ssl_opts = Stomp::SSLParams.new(
37
- :key_file => "#{@cert_loc}/client.key", # the client's private key
38
- :cert_file => "#{@cert_loc}/client.crt", # the client's signed certificate
41
+ :key_file => "#{cli_loc()}/#{pck()}", # the client's private key, private data
42
+ :cert_file => "#{cli_loc()}/#{cli_cert()}", # the client's signed certificate
39
43
  :fsck => true # Check that the files exist first
40
44
  )
41
45
 
@@ -53,6 +57,13 @@ class ExampleSSL3
53
57
  # puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
54
58
  c.disconnect
55
59
  end
60
+
61
+ private
62
+
63
+ def pck()
64
+ "client.key"
65
+ end
66
+
56
67
  end
57
68
  #
58
69
  e = ExampleSSL3.new
@@ -3,8 +3,13 @@
3
3
  #
4
4
  # Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
5
5
  #
6
- require "rubygems"
7
- require "stomp"
6
+ if Kernel.respond_to?(:require_relative)
7
+ require_relative("./ssl_common")
8
+ else
9
+ $LOAD_PATH << File.dirname(__FILE__)
10
+ require "ssl_common"
11
+ end
12
+ include SSLCommon
8
13
  #
9
14
  # == SSL Use Case 3 - User Supplied Ciphers
10
15
  #
@@ -15,7 +20,9 @@ require "stomp"
15
20
  #
16
21
  class ExampleSSL3C
17
22
  # Initialize.
18
- def initialize
23
+ def initialize # Change the following as needed.
24
+ @host = ENV['STOMP_HOST'] ? ENV['STOMP_HOST'] : "localhost"
25
+ @port = ENV['STOMP_PORT'] ? ENV['STOMP_PORT'].to_i : 61612
19
26
  end
20
27
  # Run example.
21
28
  def run
@@ -23,18 +30,15 @@ class ExampleSSL3C
23
30
  #
24
31
  # SSL Use Case 3
25
32
  #
26
- # Change the following:
27
- # * location of your client's signed certificate
28
- # * location of tour client's private key.
33
+ # Possibly change the cert file(s) name(s) here.
29
34
  ssl_opts = Stomp::SSLParams.new(
30
- :key_file => "/home/gmallard/sslwork/2013/client.key", # the client's private key
31
- :cert_file => "/home/gmallard/sslwork/2013/client.crt", # the client's signed certificate
32
- :fsck => true, # Check that the files exist first
33
- :ciphers => ciphers_list
35
+ :key_file => "#{cli_loc()}/#{pck()}", # the client's private key, private data
36
+ :cert_file => "#{cli_loc()}/#{cli_cert()}", # the client's signed certificate
37
+ :fsck => true # Check that the files exist first
34
38
  )
35
39
  #
36
40
  hash = { :hosts => [
37
- {:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl => ssl_opts},
41
+ {:login => 'guest', :passcode => 'guest', :host => @host, :port => @port, :ssl => ssl_opts},
38
42
  ],
39
43
  :reliable => false, # YMMV, to test this in a sane manner
40
44
  }
@@ -46,6 +50,13 @@ class ExampleSSL3C
46
50
  # puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
47
51
  c.disconnect
48
52
  end
53
+
54
+ private
55
+
56
+ def pck()
57
+ "client.key"
58
+ end
59
+
49
60
  end
50
61
  #
51
62
  e = ExampleSSL3C.new
@@ -3,8 +3,13 @@
3
3
  #
4
4
  # Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
5
5
  #
6
- require "rubygems"
7
- require "stomp"
6
+ if Kernel.respond_to?(:require_relative)
7
+ require_relative("./ssl_common")
8
+ else
9
+ $LOAD_PATH << File.dirname(__FILE__)
10
+ require "ssl_common"
11
+ end
12
+ include SSLCommon
8
13
  #
9
14
  # == SSL Use Case 4 - server *does* authenticate client, client *does* authenticate server
10
15
  #
@@ -23,8 +28,7 @@ require "stomp"
23
28
  class ExampleSSL4
24
29
  # Initialize.
25
30
  def initialize
26
- # Change the following to the location of the cert file(s).
27
- @cert_loc = "/ad3/gma/sslwork/2013"
31
+ # Change the following as needed.
28
32
  @host = ENV['STOMP_HOST'] ? ENV['STOMP_HOST'] : "localhost"
29
33
  @port = ENV['STOMP_PORT'] ? ENV['STOMP_PORT'].to_i : 61612
30
34
  end
@@ -34,9 +38,9 @@ class ExampleSSL4
34
38
 
35
39
  # Possibly change the cert file(s) name(s) here.
36
40
  ssl_opts = Stomp::SSLParams.new(
37
- :key_file => "#{@cert_loc}/client.key", # The client's private key
38
- :cert_file => "#{@cert_loc}/client.crt", # The client's signed certificate
39
- :ts_files => "#{@cert_loc}/TestCA.crt", # The CA's signed sertificate
41
+ :key_file => "#{cli_loc()}/#{pck()}", # the client's private key, private data
42
+ :cert_file => "#{cli_loc()}/#{cli_cert()}", # the client's signed certificate
43
+ :ts_files => "#{ca_loc()}/#{ca_cert()}", # The CA's signed sertificate
40
44
  :fsck => true # Check that files exist first
41
45
  )
42
46
  #
@@ -53,6 +57,13 @@ class ExampleSSL4
53
57
  # puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
54
58
  c.disconnect
55
59
  end
60
+
61
+ private
62
+
63
+ def pck()
64
+ "client.key"
65
+ end
66
+
56
67
  end
57
68
  #
58
69
  e = ExampleSSL4.new
@@ -3,8 +3,13 @@
3
3
  #
4
4
  # Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
5
5
  #
6
- require "rubygems"
7
- require "stomp"
6
+ if Kernel.respond_to?(:require_relative)
7
+ require_relative("./ssl_common")
8
+ else
9
+ $LOAD_PATH << File.dirname(__FILE__)
10
+ require "ssl_common"
11
+ end
12
+ include SSLCommon
8
13
  #
9
14
  # == SSL Use Case 4 - User Supplied Ciphers
10
15
  #
@@ -15,7 +20,9 @@ require "stomp"
15
20
  #
16
21
  class ExampleSSL4C
17
22
  # Initialize.
18
- def initialize
23
+ def initialize # Change the following as needed.
24
+ @host = ENV['STOMP_HOST'] ? ENV['STOMP_HOST'] : "localhost"
25
+ @port = ENV['STOMP_PORT'] ? ENV['STOMP_PORT'].to_i : 61612
19
26
  end
20
27
  # Run example.
21
28
  def run
@@ -23,20 +30,16 @@ class ExampleSSL4C
23
30
  #
24
31
  # SSL Use Case 4
25
32
  #
26
- # Change the following:
27
- # * location of the client's private key
28
- # * location of the client's signed certificate
29
- # * location of the server's CA signed certificate
33
+ # Possibly change the cert file(s) name(s) here.
30
34
  ssl_opts = Stomp::SSLParams.new(
31
- :key_file => "/home/gmallard/sslwork/2013/client.key", # The client's private key
32
- :cert_file => "/home/gmallard/sslwork/2013/client.crt", # The client's signed certificate
33
- :ts_files => "/home/gmallard/sslwork/2013/TestCA.crt", # The CA's signed sertificate
34
- :fsck => true, # Check that files exist first
35
- :ciphers => ciphers_list
35
+ :key_file => "#{cli_loc()}/#{pck()}", # the client's private key, private data
36
+ :cert_file => "#{cli_loc()}/#{cli_cert()}", # the client's signed certificate
37
+ :ts_files => "#{ca_loc()}/#{ca_cert()}", # The CA's signed sertificate
38
+ :fsck => true # Check that files exist first
36
39
  )
37
40
  #
38
41
  hash = { :hosts => [
39
- {:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61612, :ssl => ssl_opts},
42
+ {:login => 'guest', :passcode => 'guest', :host => @host, :port => @port, :ssl => ssl_opts},
40
43
  ],
41
44
  :reliable => false, # YMMV, to test this in a sane manner
42
45
  }
@@ -48,6 +51,13 @@ class ExampleSSL4C
48
51
  # puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}"
49
52
  c.disconnect
50
53
  end
54
+
55
+ private
56
+
57
+ def pck()
58
+ "client.key"
59
+ end
60
+
51
61
  end
52
62
  #
53
63
  e = ExampleSSL4C.new
@@ -72,10 +72,13 @@ module Stomp
72
72
  # setting an id in the SUBSCRIPTION header is described in the stomp protocol docs:
73
73
  # http://stomp.github.com/
74
74
  def set_subscription_id_if_missing(destination, headers)
75
- headers[:id] = headers[:id] ? headers[:id] : headers['id']
76
- if headers[:id] == nil
77
- headers[:id] = Digest::SHA1.hexdigest(destination)
78
- end
75
+ headers[:id] = build_subscription_id(destination, headers)
76
+ end
77
+
78
+ def build_subscription_id(destination, headers)
79
+ return headers[:id] until headers[:id].nil?
80
+ return headers['id'] until headers['id'].nil?
81
+ Digest::SHA1.hexdigest(destination)
79
82
  end
80
83
 
81
84
  # Parse a stomp URL.
@@ -156,7 +159,10 @@ module Stomp
156
159
 
157
160
  def find_receipt_listener(message)
158
161
  listener = @receipt_listeners[message.headers['receipt-id']]
159
- listener.call(message) if listener
162
+ if listener
163
+ listener.call(message)
164
+ @receipt_listeners.delete(message.headers['receipt-id'])
165
+ end
160
166
  end
161
167
 
162
168
  def create_listener_maps
@@ -118,6 +118,7 @@ module Stomp
118
118
  Stomp::Error::BrokerException.new(error)
119
119
  end
120
120
 
121
+ @receipt_listeners.delete(error.headers['receipt-id']) if error.headers['receipt-id']
121
122
  client_thread.raise exception
122
123
  end
123
124
  end
@@ -173,7 +174,7 @@ module Stomp
173
174
  # use subscription id to correlate messages to subscription. As described in
174
175
  # the SUBSCRIPTION section of the protocol: http://stomp.github.com/.
175
176
  # If no subscription id is provided, generate one.
176
- set_subscription_id_if_missing(destination, headers)
177
+ headers = headers.merge(:id => build_subscription_id(destination, headers))
177
178
  if @listeners[headers[:id]]
178
179
  raise "attempting to subscribe to a queue with a previous subscription"
179
180
  end
@@ -183,7 +184,7 @@ module Stomp
183
184
 
184
185
  # Unsubscribe from a subscription by name.
185
186
  def unsubscribe(name, headers = {})
186
- set_subscription_id_if_missing(name, headers)
187
+ headers = headers.merge(:id => build_subscription_id(name, headers))
187
188
  @connection.unsubscribe(name, headers)
188
189
  @listeners[headers[:id]] = nil
189
190
  end
@@ -203,7 +204,7 @@ module Stomp
203
204
  replay_list << message
204
205
  end
205
206
  if block_given?
206
- headers['receipt'] = register_receipt_listener lambda {|r| yield r}
207
+ headers = headers.merge(:receipt => register_receipt_listener(lambda {|r| yield r}))
207
208
  end
208
209
  context = ack_context_for(message, headers)
209
210
  @connection.ack context[:message_id], context[:headers]
@@ -224,7 +225,7 @@ module Stomp
224
225
  when Stomp::SPL_12
225
226
  'ack'
226
227
  when Stomp::SPL_11
227
- headers.merge!(:subscription => message.headers['subscription'])
228
+ headers = headers.merge(:subscription => message.headers['subscription'])
228
229
  'message-id'
229
230
  else
230
231
  'message-id'
@@ -243,7 +244,7 @@ module Stomp
243
244
  # Accepts a transaction header ( :transaction => 'some_transaction_id' ).
244
245
  def publish(destination, message, headers = {})
245
246
  if block_given?
246
- headers['receipt'] = register_receipt_listener lambda {|r| yield r}
247
+ headers = headers.merge(:receipt => register_receipt_listener(lambda {|r| yield r}))
247
248
  end
248
249
  @connection.publish(destination, message, headers)
249
250
  end
@@ -225,32 +225,51 @@ module Stomp
225
225
  end
226
226
 
227
227
  # Acknowledge a message, used when a subscription has specified
228
- # client acknowledgement i.e. connection.subscribe("/queue/a", :ack => 'client').
229
- # Accepts an optional transaction header ( :transaction => 'some_transaction_id' )
230
- # Behavior is protocol level dependent, see the specifications or comments below.
231
- def ack(message_id, headers = {})
228
+ # client acknowledgement e.g.:
229
+ #
230
+ # connection.subscribe("/queue/a", :ack => 'client')
231
+ #
232
+ # connection.subscribe("/queue/a", :ack => 'client-individual')
233
+ #
234
+ # as appropriate for the protocol level.
235
+ #
236
+ # Accepts an optional transaction header ( :transaction => 'some_transaction_id' ).
237
+ #
238
+ # When the connection protocol level is 1.0 or 1.1 the message_or_ack_id parameter
239
+ # should match the message-id header of the MESSAGE being acknowledged e.g.:
240
+ #
241
+ # connection.ack(message.headers['message-id'])
242
+ #
243
+ # When the connection protocol level is 1.2 the message_or_ack_id parameter
244
+ # should match the ack header of the MESSAGE being acknowledged e.g.:
245
+ #
246
+ # connection.ack(message.headers['ack'])
247
+ #
248
+ # In summary, the behavior is protocol level dependent, see the specifications
249
+ # and comments in the code.
250
+ def ack(message_or_ack_id, headers = {})
232
251
  raise Stomp::Error::NoCurrentConnection if @closed_check && closed?
233
252
  raise Stomp::Error::ProtocolErrorEmptyHeaderKey if headers.has_key?("")
234
253
  raise Stomp::Error::ProtocolErrorEmptyHeaderValue if @protocol == Stomp::SPL_10 && headers.has_value?("")
235
- raise Stomp::Error::MessageIDRequiredError if message_id.nil? || message_id == ""
254
+ raise Stomp::Error::MessageIDRequiredError if message_or_ack_id.nil? || message_or_ack_id == ""
236
255
  headers = headers.symbolize_keys
237
256
 
238
257
  case @protocol
239
258
  when Stomp::SPL_12
240
- # The ACK frame MUST include an id header matching the ack header
259
+ # The ACK frame MUST include an "id" header matching the "ack" header
241
260
  # of the MESSAGE being acknowledged.
242
- headers[:id] = message_id
261
+ headers[:id] = message_or_ack_id
243
262
  when Stomp::SPL_11
244
- # ACK has two REQUIRED headers: message-id, which MUST contain a value
245
- # matching the message-id for the MESSAGE being acknowledged and
246
- # subscription, which MUST be set to match the value of the subscription's
263
+ # ACK has two REQUIRED headers: "message-id", which MUST contain a value
264
+ # matching the message-id header of the MESSAGE being acknowledged and
265
+ # "subscription", which MUST be set to match the value of SUBSCRIBE's
247
266
  # id header.
248
- headers[:'message-id'] = message_id
267
+ headers[:'message-id'] = message_or_ack_id
249
268
  raise Stomp::Error::SubscriptionRequiredError unless headers[:subscription]
250
269
  else # Stomp::SPL_10
251
- # ACK has one required header, message-id, which must contain a value
270
+ # ACK has one required header, "message-id", which must contain a value
252
271
  # matching the message-id for the MESSAGE being acknowledged.
253
- headers[:'message-id'] = message_id
272
+ headers[:'message-id'] = message_or_ack_id
254
273
  end
255
274
  _headerCheck(headers)
256
275
  slog(:on_ack, log_params, headers)
@@ -258,23 +277,31 @@ module Stomp
258
277
  end
259
278
 
260
279
  # STOMP 1.1+ NACK.
261
- def nack(message_id, headers = {})
280
+ #
281
+ # When the connection protocol level is 1.1 the message_or_ack_id parameter
282
+ # should match the message-id header of the MESSAGE being acknowledged.
283
+ #
284
+ # When the connection protocol level is 1.2 the message_or_ack_id parameter
285
+ # should match the ack header of the MESSAGE being acknowledged.
286
+ #
287
+ # Behavior is protocol level dependent, see the specifications and comments below.
288
+ def nack(message_or_ack_id, headers = {})
262
289
  raise Stomp::Error::NoCurrentConnection if @closed_check && closed?
263
290
  raise Stomp::Error::UnsupportedProtocolError if @protocol == Stomp::SPL_10
264
291
  raise Stomp::Error::ProtocolErrorEmptyHeaderKey if headers.has_key?("")
265
- raise Stomp::Error::MessageIDRequiredError if message_id.nil? || message_id == ""
292
+ raise Stomp::Error::MessageIDRequiredError if message_or_ack_id.nil? || message_or_ack_id == ""
266
293
  headers = headers.symbolize_keys
267
294
  case @protocol
268
295
  when Stomp::SPL_12
269
296
  # The NACK frame MUST include an id header matching the ack header
270
297
  # of the MESSAGE being acknowledged.
271
- headers[:id] = message_id
298
+ headers[:id] = message_or_ack_id
272
299
  else # Stomp::SPL_11 only
273
300
  # NACK has two REQUIRED headers: message-id, which MUST contain a value
274
301
  # matching the message-id for the MESSAGE being acknowledged and
275
302
  # subscription, which MUST be set to match the value of the subscription's
276
303
  # id header.
277
- headers[:'message-id'] = message_id
304
+ headers[:'message-id'] = message_or_ack_id
278
305
  raise Stomp::Error::SubscriptionRequiredError unless headers[:subscription]
279
306
  end
280
307
  _headerCheck(headers)
@@ -4,9 +4,10 @@ module Stomp
4
4
 
5
5
  # Define the gem version.
6
6
  module Version #:nodoc: all
7
- MAJOR = 1
8
- MINOR = 4
9
- PATCH = 1
7
+ MAJOR = 1
8
+ MINOR = 4
9
+ PATCH = "2"
10
+ # PATCH = "2.plvl.001"
10
11
  STRING = "#{MAJOR}.#{MINOR}.#{PATCH}"
11
12
  end
12
13
  end
@@ -402,4 +402,152 @@ describe Stomp::Client do
402
402
  end
403
403
  end
404
404
  end
405
+
406
+ describe '(used with custom headers)' do
407
+ before :each do
408
+ @client = Stomp::Client.new
409
+ end
410
+
411
+ def original_headers
412
+ {:custom_header => 'value'}
413
+ end
414
+
415
+ let(:connection_headers) { original_headers }
416
+ let(:headers) { original_headers }
417
+
418
+ shared_examples_for 'argument-safe method' do
419
+ describe 'given headers hash' do
420
+ subject { headers }
421
+ it 'is immutable' do
422
+ is_expected.to match(original_headers)
423
+ end
424
+ end
425
+ end
426
+
427
+ describe '#begin' do
428
+ before {
429
+ expect(@mock_connection).to receive(:begin).with('name', connection_headers)
430
+ @client.begin('name', headers)
431
+ }
432
+ it_behaves_like 'argument-safe method'
433
+ end
434
+
435
+ describe '#abort' do
436
+ before {
437
+ expect(@mock_connection).to receive(:abort).with('name', connection_headers)
438
+ @client.abort('name', headers)
439
+ }
440
+ it_behaves_like 'argument-safe method'
441
+ end
442
+
443
+ describe '#commit' do
444
+ before {
445
+ expect(@mock_connection).to receive(:commit).with('name', connection_headers)
446
+ @client.commit('name', headers)
447
+ }
448
+ it_behaves_like 'argument-safe method'
449
+ end
450
+
451
+ describe '#subscribe' do
452
+ let(:connection_headers) { original_headers.merge({:id => Digest::SHA1.hexdigest('destination')}) }
453
+ before {
454
+ expect(@mock_connection).to receive(:subscribe).with('destination', connection_headers)
455
+ @client.subscribe('destination', headers) {|dummy_subscriber| }
456
+ }
457
+ it_behaves_like 'argument-safe method'
458
+ end
459
+
460
+ describe '#unsubscribe' do
461
+ let(:connection_headers) { original_headers.merge({:id => Digest::SHA1.hexdigest('destination')}) }
462
+ before {
463
+ expect(@mock_connection).to receive(:unsubscribe).with('destination', connection_headers)
464
+ @client.unsubscribe('destination', headers) {|dummy_subscriber| }
465
+ }
466
+ it_behaves_like 'argument-safe method'
467
+ end
468
+
469
+ describe '#ack' do
470
+ describe 'with STOMP 1.0' do
471
+ let(:message) { double('message', :headers => {'message-id' => 'id'}) }
472
+ before {
473
+ allow(@client).to receive(:protocol).and_return(Stomp::SPL_10)
474
+ expect(@mock_connection).to receive(:ack).with('id', connection_headers)
475
+ @client.ack(message, headers)
476
+ }
477
+ it_behaves_like 'argument-safe method'
478
+ end
479
+ describe 'with STOMP 1.1' do
480
+ let(:message) { double('message', :headers => {'message-id' => 'id', 'subscription' => 'subscription_name'}) }
481
+ let(:connection_headers) { original_headers.merge({:subscription => 'subscription_name'}) }
482
+ before {
483
+ allow(@client).to receive(:protocol).and_return(Stomp::SPL_11)
484
+ expect(@mock_connection).to receive(:ack).with('id', connection_headers)
485
+ @client.ack(message, headers)
486
+ }
487
+ it_behaves_like 'argument-safe method'
488
+ end
489
+ describe 'with STOMP 1.2' do
490
+ let(:message) { double('message', :headers => {'ack' => 'id'}) }
491
+ before {
492
+ allow(@client).to receive(:protocol).and_return(Stomp::SPL_12)
493
+ expect(@mock_connection).to receive(:ack).with('id', connection_headers)
494
+ @client.ack(message, headers)
495
+ }
496
+ it_behaves_like 'argument-safe method'
497
+ end
498
+ end
499
+
500
+ describe '#nack' do
501
+ describe 'with STOMP 1.0' do
502
+ let(:message) { double('message', :headers => {'message-id' => 'id'}) }
503
+ before {
504
+ allow(@client).to receive(:protocol).and_return(Stomp::SPL_10)
505
+ expect(@mock_connection).to receive(:nack).with('id', connection_headers)
506
+ @client.nack(message, headers)
507
+ }
508
+ it_behaves_like 'argument-safe method'
509
+ end
510
+ describe 'with STOMP 1.1' do
511
+ let(:message) { double('message', :headers => {'message-id' => 'id', 'subscription' => 'subscription_name'}) }
512
+ let(:connection_headers) { original_headers.merge({:subscription => 'subscription_name'}) }
513
+ before {
514
+ allow(@client).to receive(:protocol).and_return(Stomp::SPL_11)
515
+ expect(@mock_connection).to receive(:nack).with('id', connection_headers)
516
+ @client.nack(message, headers)
517
+ }
518
+ it_behaves_like 'argument-safe method'
519
+ end
520
+ describe 'with STOMP 1.2' do
521
+ let(:message) { double('message', :headers => {'ack' => 'id'}) }
522
+ before {
523
+ allow(@client).to receive(:protocol).and_return(Stomp::SPL_12)
524
+ expect(@mock_connection).to receive(:nack).with('id', connection_headers)
525
+ @client.nack(message, headers)
526
+ }
527
+ it_behaves_like 'argument-safe method'
528
+ end
529
+ end
530
+
531
+ describe '#publish' do
532
+ describe 'without listener' do
533
+ let(:message) { double('message') }
534
+ before {
535
+ expect(@mock_connection).to receive(:publish).with('destination', message, connection_headers)
536
+ @client.publish('destination', message, headers)
537
+ }
538
+ it_behaves_like 'argument-safe method'
539
+ end
540
+ describe 'with listener' do
541
+ let(:message) { double('message') }
542
+ let(:connection_headers) { original_headers.merge({:receipt => 'receipt-uuid'}) }
543
+ before {
544
+ allow(@client).to receive(:uuid).and_return('receipt-uuid')
545
+ expect(@mock_connection).to receive(:publish).with('destination', message, connection_headers)
546
+ @client.publish('destination', message, headers) {|dummy_listener| }
547
+ }
548
+ it_behaves_like 'argument-safe method'
549
+ end
550
+ end
551
+
552
+ end
405
553
  end
@@ -2,17 +2,15 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: stomp 1.4.1 ruby lib
6
5
 
7
6
  Gem::Specification.new do |s|
8
- s.name = "stomp"
9
- s.version = "1.4.1"
7
+ s.name = %q{stomp}
8
+ s.version = "1.4.2"
10
9
 
11
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
- s.require_paths = ["lib"]
13
11
  s.authors = ["Brian McCallister", "Marius Mathiesen", "Thiago Morello", "Guy M. Allard"]
14
- s.date = "2016-06-23"
15
- s.description = "Ruby client for the Stomp messaging protocol. Note that this gem is no longer supported on rubyforge."
12
+ s.date = %q{2016-08-20}
13
+ s.description = %q{Ruby client for the Stomp messaging protocol. Note that this gem is no longer supported on rubyforge.}
16
14
  s.email = ["brianm@apache.org", "marius@stones.com", "morellon@gmail.com", "allard.guy.m@gmail.com"]
17
15
  s.executables = ["catstomp", "stompcat"]
18
16
  s.extra_rdoc_files = [
@@ -21,6 +19,7 @@ Gem::Specification.new do |s|
21
19
  ]
22
20
  s.files = [
23
21
  "CHANGELOG.md",
22
+ "Gemfile",
24
23
  "LICENSE",
25
24
  "README.md",
26
25
  "Rakefile",
@@ -56,6 +55,7 @@ Gem::Specification.new do |s|
56
55
  "examples/publisher.rb",
57
56
  "examples/put11conn_ex1.rb",
58
57
  "examples/putget11_rh1.rb",
58
+ "examples/ssl_common.rb",
59
59
  "examples/ssl_ctxoptions.rb",
60
60
  "examples/ssl_newparm.rb",
61
61
  "examples/ssl_uc1.rb",
@@ -95,6 +95,7 @@ Gem::Specification.new do |s|
95
95
  "spec/spec_helper.rb",
96
96
  "stomp.gemspec",
97
97
  "test/.gitignore",
98
+ "test/funcs.sh",
98
99
  "test/test_anonymous.rb",
99
100
  "test/test_client.rb",
100
101
  "test/test_codec.rb",
@@ -104,22 +105,37 @@ Gem::Specification.new do |s|
104
105
  "test/test_message.rb",
105
106
  "test/test_ssl.rb",
106
107
  "test/test_urlogin.rb",
107
- "test/tlogger.rb"
108
+ "test/tlogger.rb",
109
+ "test/unitst.sh"
108
110
  ]
109
- s.homepage = "https://github.com/stompgem/stomp"
111
+ s.homepage = %q{https://github.com/stompgem/stomp}
110
112
  s.licenses = ["Apache-2.0"]
111
- s.rubygems_version = "2.2.5"
112
- s.summary = "Ruby client for the Stomp messaging protocol"
113
+ s.require_paths = ["lib"]
114
+ s.rubygems_version = %q{1.3.7}
115
+ s.summary = %q{Ruby client for the Stomp messaging protocol}
113
116
 
114
117
  if s.respond_to? :specification_version then
115
- s.specification_version = 4
118
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
119
+ s.specification_version = 3
116
120
 
117
121
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
122
+ s.add_runtime_dependency(%q<stomp>, [">= 0"])
123
+ s.add_runtime_dependency(%q<rake>, ["~> 0.8.2"])
124
+ s.add_development_dependency(%q<rspec>, [">= 2.14.1"])
125
+ s.add_development_dependency(%q<rspec>, [">= 2.14.1"])
118
126
  s.add_development_dependency(%q<rspec>, [">= 2.14.1"])
119
127
  else
128
+ s.add_dependency(%q<stomp>, [">= 0"])
129
+ s.add_dependency(%q<rake>, ["~> 0.8.2"])
130
+ s.add_dependency(%q<rspec>, [">= 2.14.1"])
131
+ s.add_dependency(%q<rspec>, [">= 2.14.1"])
120
132
  s.add_dependency(%q<rspec>, [">= 2.14.1"])
121
133
  end
122
134
  else
135
+ s.add_dependency(%q<stomp>, [">= 0"])
136
+ s.add_dependency(%q<rake>, ["~> 0.8.2"])
137
+ s.add_dependency(%q<rspec>, [">= 2.14.1"])
138
+ s.add_dependency(%q<rspec>, [">= 2.14.1"])
123
139
  s.add_dependency(%q<rspec>, [">= 2.14.1"])
124
140
  end
125
141
  end
@@ -0,0 +1,2 @@
1
+ # ------------------------------------------------------------------------------
2
+
@@ -90,7 +90,7 @@ class TestURLLogins < Test::Unit::TestCase
90
90
  assert c.open?, url
91
91
  c.close
92
92
  end
93
- end
93
+ end if ENV['STOMP_TESTSSL']
94
94
 
95
95
  # test failover:// with bad parameters
96
96
  def test_0020_failover_badparms()
@@ -0,0 +1,18 @@
1
+ #!/bin/bash
2
+ #
3
+ eval $DeBug
4
+ # ------------------------------------------------------------------------------
5
+ cmd_base=$(dirname $0)
6
+ source $cmd_base/funcs.sh
7
+ # ------------------------------------------------------------------------------
8
+ pushd $cmd_base
9
+ slist=$(ls -1 *.rb | grep -v helper | grep -v 1method)
10
+ for rbf in $slist
11
+ do
12
+ echo "ruby -I ../lib ${rbf}"
13
+ ruby -I ../lib $rbf
14
+ done
15
+ # ------------------------------------------------------------------------------
16
+ popd
17
+ set +x
18
+ exit
metadata CHANGED
@@ -1,9 +1,15 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: stomp
3
- version: !ruby/object:Gem::Version
4
- version: 1.4.1
3
+ version: !ruby/object:Gem::Version
4
+ hash: 3
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 4
9
+ - 2
10
+ version: 1.4.2
5
11
  platform: ruby
6
- authors:
12
+ authors:
7
13
  - Brian McCallister
8
14
  - Marius Mathiesen
9
15
  - Thiago Morello
@@ -11,38 +17,105 @@ authors:
11
17
  autorequire:
12
18
  bindir: bin
13
19
  cert_chain: []
14
- date: 2016-06-23 00:00:00.000000000 Z
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
20
+
21
+ date: 2016-08-20 00:00:00 -04:00
22
+ default_executable:
23
+ dependencies:
24
+ - !ruby/object:Gem::Dependency
25
+ prerelease: false
26
+ name: stomp
27
+ version_requirements: &id001 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ hash: 3
33
+ segments:
34
+ - 0
35
+ version: "0"
36
+ requirement: *id001
37
+ type: :runtime
38
+ - !ruby/object:Gem::Dependency
39
+ prerelease: false
40
+ name: rake
41
+ version_requirements: &id002 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ hash: 59
47
+ segments:
48
+ - 0
49
+ - 8
50
+ - 2
51
+ version: 0.8.2
52
+ requirement: *id002
53
+ type: :runtime
54
+ - !ruby/object:Gem::Dependency
55
+ prerelease: false
56
+ name: rspec
57
+ version_requirements: &id003 !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ hash: 53
63
+ segments:
64
+ - 2
65
+ - 14
66
+ - 1
67
+ version: 2.14.1
68
+ requirement: *id003
69
+ type: :development
70
+ - !ruby/object:Gem::Dependency
71
+ prerelease: false
17
72
  name: rspec
18
- requirement: !ruby/object:Gem::Requirement
19
- requirements:
73
+ version_requirements: &id004 !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
20
76
  - - ">="
21
- - !ruby/object:Gem::Version
77
+ - !ruby/object:Gem::Version
78
+ hash: 53
79
+ segments:
80
+ - 2
81
+ - 14
82
+ - 1
22
83
  version: 2.14.1
84
+ requirement: *id004
23
85
  type: :development
86
+ - !ruby/object:Gem::Dependency
24
87
  prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
88
+ name: rspec
89
+ version_requirements: &id005 !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
27
92
  - - ">="
28
- - !ruby/object:Gem::Version
93
+ - !ruby/object:Gem::Version
94
+ hash: 53
95
+ segments:
96
+ - 2
97
+ - 14
98
+ - 1
29
99
  version: 2.14.1
30
- description: Ruby client for the Stomp messaging protocol. Note that this gem is
31
- no longer supported on rubyforge.
32
- email:
100
+ requirement: *id005
101
+ type: :development
102
+ description: Ruby client for the Stomp messaging protocol. Note that this gem is no longer supported on rubyforge.
103
+ email:
33
104
  - brianm@apache.org
34
105
  - marius@stones.com
35
106
  - morellon@gmail.com
36
107
  - allard.guy.m@gmail.com
37
- executables:
108
+ executables:
38
109
  - catstomp
39
110
  - stompcat
40
111
  extensions: []
41
- extra_rdoc_files:
112
+
113
+ extra_rdoc_files:
42
114
  - LICENSE
43
115
  - README.md
44
- files:
116
+ files:
45
117
  - CHANGELOG.md
118
+ - Gemfile
46
119
  - LICENSE
47
120
  - README.md
48
121
  - Rakefile
@@ -78,6 +151,7 @@ files:
78
151
  - examples/publisher.rb
79
152
  - examples/put11conn_ex1.rb
80
153
  - examples/putget11_rh1.rb
154
+ - examples/ssl_common.rb
81
155
  - examples/ssl_ctxoptions.rb
82
156
  - examples/ssl_newparm.rb
83
157
  - examples/ssl_uc1.rb
@@ -117,6 +191,7 @@ files:
117
191
  - spec/spec_helper.rb
118
192
  - stomp.gemspec
119
193
  - test/.gitignore
194
+ - test/funcs.sh
120
195
  - test/test_anonymous.rb
121
196
  - test/test_client.rb
122
197
  - test/test_codec.rb
@@ -127,28 +202,40 @@ files:
127
202
  - test/test_ssl.rb
128
203
  - test/test_urlogin.rb
129
204
  - test/tlogger.rb
205
+ - test/unitst.sh
206
+ has_rdoc: true
130
207
  homepage: https://github.com/stompgem/stomp
131
- licenses:
208
+ licenses:
132
209
  - Apache-2.0
133
- metadata: {}
134
210
  post_install_message:
135
211
  rdoc_options: []
136
- require_paths:
212
+
213
+ require_paths:
137
214
  - lib
138
- required_ruby_version: !ruby/object:Gem::Requirement
139
- requirements:
215
+ required_ruby_version: !ruby/object:Gem::Requirement
216
+ none: false
217
+ requirements:
140
218
  - - ">="
141
- - !ruby/object:Gem::Version
142
- version: '0'
143
- required_rubygems_version: !ruby/object:Gem::Requirement
144
- requirements:
219
+ - !ruby/object:Gem::Version
220
+ hash: 3
221
+ segments:
222
+ - 0
223
+ version: "0"
224
+ required_rubygems_version: !ruby/object:Gem::Requirement
225
+ none: false
226
+ requirements:
145
227
  - - ">="
146
- - !ruby/object:Gem::Version
147
- version: '0'
228
+ - !ruby/object:Gem::Version
229
+ hash: 3
230
+ segments:
231
+ - 0
232
+ version: "0"
148
233
  requirements: []
234
+
149
235
  rubyforge_project:
150
- rubygems_version: 2.2.5
236
+ rubygems_version: 1.3.7
151
237
  signing_key:
152
- specification_version: 4
238
+ specification_version: 3
153
239
  summary: Ruby client for the Stomp messaging protocol
154
240
  test_files: []
241
+
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: d2b75bd10087d8cb1789c73298bad9b9d9451128
4
- data.tar.gz: 627b99bc57543821f249e888580658d9b738784a
5
- SHA512:
6
- metadata.gz: 317386822ea243835a726e445e374146e72e467006af12d15c937d458fa219d8d77140cd08b7a112afa995cdb72c98b953476d06d5790f068346c72bbfef4ef6
7
- data.tar.gz: 38d759077e04d9b0f8a35cd9af485692770a98d87b14930f582d71bfdd02a44fdd14813b46b62b5a7cdf03264c4dcd62b08271cc58cf56061c839edda3b7c080