stomp 1.4.1 → 1.4.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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